All GPUs used in iOS devices use tile-based deferred rendering (TBDR). When you call OpenGL ES functions to submit rendering commands to the hardware, the commands are buffered until a large list of commands is accumulated. The hardware renders these commands as a single operation by dividing the framebuffer into tiles and then drawing the commands once for each tile, with each tile rendering only the primitives that are visible within it. The key advantage to a deferred renderer is that it accesses memory very efficiently. Partitioning rendering into tiles allows the GPU to more effectively cache the pixel values from the framebuffer, making depth testing and blending more efficient.
Deferred rendering also allows the GPU to perform hidden surface removal before fragments are processed. Pixels that are not visible are discarded without sampling textures or performing fragment processing, significantly reducing the calculations that the GPU must perform to render the tile. To gain the most benefit from this feature, draw as much of the frame with opaque content as possible and minimize use of blending, alpha testing, and the discard instruction in GLSL shaders. Because the hardware performs hidden surface removal, it is not necessary for your app to sort primitives from front to back.
Some operations under a deferred renderer are more expensive than they would be under a traditional stream renderer. For example, the memory bandwidth and computational savings described above perform best when processing large scenes. But when the hardware receives OpenGL ES commands that require it to render smaller scenes, the renderer loses much of its efficiency. For example, if your app renders batches of triangles using a texture and then modifies the texture, the OpenGL ES implementation must either flush out those commands immediately or duplicate the texture—neither option uses the hardware efficiently. Similarly, any attempt to read pixel data from the framebuffer requires that preceding commands be processed if they would alter that framebuffer.
Apple A7 GPU Hardware
The Apple A7 GPU is a new generation of graphics hardware with support for OpenGL ES 3.0. OpenGL ES 3.0 incorporates many features previously available in OpenGL ES 2.0 in iOS. But it also incorporates many new features, such as multiple render targets and transform feedback, that have not been available on mobile processors before. This means that advanced rendering techniques that have previously been available only on desktop machines, such as deferred rendering, can now be used in iOS apps.
To take advantage of the power of the A7 GPU, your app must support OpenGL ES 3.0. Using OpenGL ES 3.0 gives you access to the new features and also to a larger pool of rendering resources. For example, on the A7 GPU, an app that uses OpenGL ES 3.0 can access twice as many textures in a shader than an app that uses OpenGL ES 2.0.