Mali GPUs and Tile Rendering
Mali GPUs process framebuffers as a series of small sub-regions called tiles. During fragment shading, the framebuffer working set for each tile is kept inside the GPU in a memory which is tightly coupled to each shader core. Keeping the memory inside the GPU minimizes the number of external DRAM accesses the GPU needs.
This image shows the data flow for a tile-based renderer:
To get the most benefit from tile-based renderer, you must minimize the amount of memory traffic in and out of the tile memory. Too many reads or writes that access external memory can reduce the benefits of this approach. Specifically, this means avoiding:
- Reading in older framebuffer values at the start of a render pass if they are going to be overdrawn.
- Writing out values at the end of each render pass which are transient and are only needed for the duration of that render pass.