4 ms·
Any explanation why Qualcomm uses "tile based rendering" while Nvidia and AMD don't?
by cubefox 3y ago
Any explanation why Qualcomm uses "tile based rendering" while Nvidia and AMD don't?
- charcircuit 3y agoBoth Nvidia and AMD do use tile based rendering
- kllrnohj 3y agoNot quite, not in the same way mobile GPUs do. Also I don't think AMD ever did the transition. They announced it (draw stream binning), but don't seem to have ever shipped it?
- bpye 3y agoAnd for what it’s worth Apple and Imagination do also - Imagination being where tiled rendering really started.
- kllrnohj 3y agoIt's significantly more bandwidth efficient to do tile based rendering however it has more performance cliffs and requires more game developer care to avoid hitting issues. For mobile SoCs (powervr, adreno, mali, and whatever apple calls their powervr-derivative) you can't just throw GDDR and get gobs of bandwidth, and also bandwidth is power expensive, so the savings more than offsets the performance cliffs and developer complications
- MikusR 3y agoNvidia has been using it for 10 years. https://www.realworldtech.com/tile-based-rasterization-nvidia-gpus/ https://www.realworldtech.com/tile-based-rasterization-nvidi...
- kbolino 3y agoIf you can afford to render the entire screen, why would you tile? Tiling complicates certain kinds of shaders, tiles have to be stitched together to make the final image, and tiling redraws (different parts of) the same triangles multiple times. On a dedicated GPU with lots of memory bandwidth, there's probably no benefit (and maybe even some penalty) to use tiling with lower resolutions (e.g. 1080p). However, 4K rendering might benefit from it and 8K rendering probably requires it.
- kllrnohj 3y agoThe output resolution doesn't matter. The reason you tile is to improve locality and thus have more cache hits. For mobile GPUs, the cache is literally a specific tile buffer, but for nvidia (who also do this) the cache is just L2. But by tiling the geometry, they spend more time in L2 and fewer times hitting DRAM. This is a performance and power win. The actual resolution is irrelevant as the tiles are very small, even on nvidia GPUs. 16x16 and 32x32 are common tile sizes, see https://www.techpowerup.com/231129/on-nvidias-tile-based-rendering https://www.techpowerup.com/231129/on-nvidias-tile-based-ren... and https://www.youtube.com/watch?v=Nc6R1hwXhL8 https://www.youtube.com/watch?v=Nc6R1hwXhL8 where this was reverse engineered before nvidia actually talked about it. You might be confusing tiled rendering with various upscaling technologies or variable rate shading?
- kbolino 3y agoIt seems like nVidia's solution is actually different than the conventional tiling of PowerVR, though they are broadly similar and as you say address the main VRAM bandwidth issue by using smaller but faster cache. I've watched parts of that video a couple of times, but I don't fully understand it. The best I can make of it is that PowerVR tiles everything at all levels of rendering, whereas nVidia's Maxwell (and other, more modern, desktop GPUs?) tiles only up to the point of rasterization. If I understand this correctly, it means that pixel shaders on mobile operate on a limited view (their tile, plus some margin?) while pixel shaders on desktop still operate across the entire screen. I don't know if this matters that much in practice, and the distinction seems to be motivated by patents (which may have expired by now?) rather than technical necessity or benefits. Either way, given the massive importance of cache locality, what I originally said about tiled rendering offering no benefit at 1080p is indeed wrong. I think my understanding of GPUs is more than a decade out of date at this point. These problems used to be solved with more power and wider memory buses. That seems to have stopped scaling well over 10 years ago.
- MindSpunk 3y agoBecause binning is expensive and increases the cost of processing geometry. It works on Mobile GPUs because bandwidth to main memory is very power hungry so eating the cost of binning is worth it when your power envelope is 5W and you just can't provide enough bandwidth to do immediate mode rasterization. Desktop GPU's power and memory bandwidth budgets utterly dwarf what the mobile GPU has so paying the compute cost of binning doesn't make much sense because they can just throw more memory bandwidth and larger caches at it. Geometry binning and the kind of tiling mobile GPUs use has a lot of performance cliffs so it's generally avoided when you can. The second you go off the happy path of a tiler the performance drops like a rock, like in the compute example in the linked article. Desktop class GPUs can get most of the benefits of tiling by just letting their cache hierarchy do the 'tiling' for them to avoid hits to main memory. Some desktop cards do some tiling work, probably to improve cache utilization, but they don't suffer from the same performance cliffs that mobile GPUs do.