This topic describes some of the issues surrounding the use of graphics hardware to improve graphics performance. It also provides a summary of the components that device creators need to adapt to take advantage of graphics hardware.
Graphics acceleration hardware
A graphics accelerator or Graphics Processing Unit (GPU) is a dedicated hardware processor that works in parallel with the main processor (CPU). By relieving the CPU of highly intensive graphics processing, a GPU makes it is possible to achieve sophisticated screen displays (such as video, animated graphics and 3D games) without compromising other aspects of performance.
Animations
Animation involves transferring and manipulating large amounts of data (stored as bitmaps or instructions) from one area of memory and putting them into another (the screen buffer). Frame rates may be between 10 and 30 frames per second (depending on requirements and sources).
Composition
Manufacturers of smartphones face the complexity of displaying on the screen a mixture of different types of content, such as streaming video, the camera viewfinder and regular UI elements with animated icons. These different types of content come from different places—such as multimedia sources (streaming video), camera hardware, the Window Server and EGL (3D and vector graphics). The different types of content are displayed in different areas of the screen and are updated by different processes. The graphics system must be capable not only of creating sophisticated graphical output from each source simultaneously but also of composing (compositing) them at up to 30 frames per second. For an introduction to how ScreenPlay handles this challenge, see Graphics Composition.
Optimization
GPUs work best when they do so uninterrupted. They usually have a 'long processing pipe' (a lot of data cached in memory) and flushing it or allowing it to empty reduces effectiveness. This can be avoided by avoiding the following:
Context switching. The working data (such as color information, vertex positions, transformations and textures) is known as the context. If more than one application wants to use the processor at the same time, the processor must swap between them. This involves the processor saving the context from one application, flushing its buffers, and loading the context from the next. Context switching is time consuming and disruptive.
Copying and reformatting data. Changing the format and copying pixel data involves time and memory. If the GPU and CPU cannot share memory and data formats, much time, processing power and memory is required to copy and convert data.
ScreenPlay avoids context switching and reformatting and copying data wherever possible.
Hardware variety
The combination of hardware acceleration, animation and composition would be a substantial challenge in a fixed, dedicated hardware architecture. The Symbian platform, however, is designed to operate on a variety of hardware architectures, only some of which are capable of graphics acceleration and processing. The Symbian graphics subsystem can be customized to take advantage of a variety graphics processing hardware. Customization is via 'back end' components which do not affect the public API.
Here we provide information about which graphics components device creators can adapt or replace. Components that can be adapted or replaced to suit the hardware are generally called adaptations. Adaptable and replaceable components that do not depend on the hardware are called customizations and are indicated by an asterisk (*) in the following table.
The details vary depending on whether the ScreenPlay or non-ScreenPlay variant is in use.
ScreenPlay | Non-ScreenPlay |
---|---|
OpenGLES Implementation | OpenGLES Implementation |
OpenVG Implementation | OpenVG Implementation |
EGL Implementation | EGL Implementation |
Screen Driver | Screen Driver |
Extended Bitmap Rasterizer Plug-in | Extended Bitmap Rasterizer Plug-in |
DirectGDI Adaptation | |
Graphics Resource Adaptation | |
GCE Adaptation | |
OpenWF Composition Engine | |
Surface Manager | |
Surface Update | |
Render Stages* |