Updated: October 26, 2022

Rendering refers to the generation of an image.

Screen applications can render in many different ways:
Applications access buffers and write to them using the CPU.
Hardware acceleration
Applications use the target's GPU to perform rendering operations; you use EGL to target buffers with Khronos API calls (e.g., OpenGL ES or OpenVG) or use blitting with the native Screen API function calls.

Applications use a mix of rendering options. This mix can be the use of both software and hardware acceleration, or it can be the use of different types of hardware rendering. In either case, your application must ensure that there's synchronization between your rendering types. That is, each rendering API is aware of when it can and can't read and/or write to the render target.

For example, in the case where you mix software rendering and OpenGL ES, you must use the EGL_KHR_lock_surface extension to indicate to the hardware when you're using software. Refer to Khronos's specifications on EGL_KHR_lock_surface for more details about this extension (

Applications duplicate content by sharing buffers.