2.7. Avoid calls that stall the graphics pipeline

There are a number of OpenGL ES function calls that can cause the graphics pipeline to stall. These can have a significant impact on performance so avoid using them.

Mali GPUs uses deferred rendering. The GPU receives all draw calls, then draws the frame.

Some OpenGL ES function calls read from the framebuffer. To do this the Mali GPU must first render the entire image before you can read back from it. This operation is likely to be slow.

The following OpenGL ES calls are best avoided because they can stall the graphics pipeline:

glReadPixels()

This call stalls the graphics pipeline and this can lead to a significant performance reduction. Avoid calls to glReadPixels() if at all possible.

glCopyTexImage()

glCopyTexImage()

ARM recommends that if you are using OpenGL ES 2.0, you use frame buffer objects instead of this call. This enables you to draw directly to a texture rather than using a copy.

glTexSubImage()

This call stalls the pipeline if you attempt to modify a pixmap image that has not completed rendering.

Note

This call only stalls if you are rendering to a pixmap.

Copyright © 2011 ARM. All rights reserved.ARM DUI 0555A
Non-ConfidentialID033111