Compatible with the Mali-T760 GPU onwards, Arm FrameBuffer Compression (AFBC) is a lossless image compression format. AFBC can be used for compressing framebuffer outputs from the GPU.
You must understand the following concepts:
- Texture compression techniques.
- Framebuffer attachments.
When enabled, AFBC is automatic and functionally transparent to the application. However, it is useful to be aware of some areas where AFBC cannot be used, and that can require the driver to insert run-time decompression from AFBC back to an uncompressed pixel format.
How to optimize the use of AFBC textures
Try using the following optimization steps:
- Use the texture() functions in shaders to access textures and images that were previously rendered by the GPU as framebuffer attachments.
- When packing data into color channels, to get the best compression rates, store the most volatile bits in the least significant bits of the channel.
Something to avoid when using AFBC textures
Do not use imageLoad() or imageStore() to read or write into a texture or image that was previously rendered by the GPU as a framebuffer attachment. Doing so triggers decompression.
The negative impact of not using AFBC textures correctly
Arm recommends that you keep in mind that the incorrect use of AFBC can trigger decompression.