Rendering

Rendering refers to the generation of an image.

Screen applications can render in many different ways:

Software

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.

Hybrid

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 (www.khronos.org).

Cloning

Applications duplicate content by sharing buffers.

Render Targets
A render target is a specially created surface into which your rendering can be directed.

Software Rendering
Software rendering is when applications render by accessing buffers and writing to them using the CPU (i.e., using a software rasterizer instead of a GPU).