The following introduction covers, at a high level, the differences between the main modern GPU architectures used in both desktop GPUs
and mobile GPUs (IMRs and TBRs) and the graphics APIs used on both.
IMR-style architectures are dominant in desktops, laptops and consoles.
The key characteristic of an IMR is that primitives are processed immediately through the graphics pipeline.
This means that each primitive travels through the entire GPU pipeline without any knowledge of the primitives
that came before or after it.
TBR-style architectures are dominant in mobile and embedded devices.
The key characteristic of a TBR is that the scene is divided into fixed-sized, screen-space regions.
The pixel colours in the scene are calculated a tile at a time. Once a tile render is complete,
its attachments are written out to system memory.
The benefit of TBRs is that an on-chip, tile-sized cache can be used to store intermediate attachment data
during the rendering process. Caching this information on-chip avoids costly system memory bandwidth transfers.
However, the downside of TBRs is that the entire scene's geometry needs to be transformed and binned into
tiled regions before per-tile rasterization can begin. This increases the complexity of the GPUs
and increases memory requirements, as an intermediate buffer to store the transformed primitives
and binning information that the per-tile operations can read later in the GPU execution process.
For more information on the differences between Intermediate-Mode and Tile-Based Renderers, please read our article
on GPU Framebuffer Memory: Understanding Tiling
OpenGL ES is a cross-platform, royalty-free 3D graphics and compute API designed for embedded systems.
OpenGL ES 2.0 introduced programmable shader stages and is supported by all Galaxy devices.
The latest Galaxy devices support OpenGL ES 3.2, which is backwards-compatible with OpenGL ES 2.0.
If you are already using OpenGL ES and would like to know how to optimize your renderer for Galaxy devices,
please see our OpenGL ES Usage Recommendations.
Vulkan is a cross-platform, royalty-free explicit 3D graphics and compute API.
Unlike OpenGL and OpenGL ES, Vulkan API users are responsible for managing and synchronizing
all operations performed by their renderer. This gives Vulkan developers fine-grained control over
how their rendering tasks are prepared on CPU cores and submitted to the graphics driver,
enabling work to be submitted to the GPU very efficiently.
If you are already using Vulkan and would like to know how to optimize your renderer for Galaxy devices, please see our
Vulkan Usage Recommendation