You copied the Doc URL to your clipboard.

Multisampling for OpenGL ES

For most multisampling, all of the data for the additional samples are kept in the tile memory, which is inside the GPU. This data is resolved to a single pixel color as part of the tile writeback. This is efficient because the bandwidth for the additional samples never enters the external main memory.


You must understand the following concepts:

Optimal multisampling performance

To get optimal render-to-texture multisampling performance, use the EXT_multisampled_render_to_texture extension. This extension can render multisampled data directly into a single-sampled image in memory, without needing a second pass.

How to optimize the use of MSAA

Try using the following optimization steps:

  • Use 4x MSAA because it is not expensive and provides good image quality improvements.
  • Use the EXT_multisampled_render_to_texture extension render-to-texture multisampling.

MSAA steps to avoid

Arm recommends that you:

  • Do not use glBlitFramebuffer() to implement a multisample resolve.
  • Do not use more than 4x MSAA without checking performance.

Negative impacts of implementing MSAA incorrectly

Failing to resolve multisampling inline results in higher memory bandwidth and reduced performance. For example, manually writing and resolving a 4xMSAA 1080p surface at 60 FPS requires 3.9GB/s of memory bandwidth. This is compared to 500MB/s when using the extension.

Debugging MSAA issues more effectively

Review any use of glBlitFramebuffer().