ScreenPlay provides improved support for graphics hardware acceleration and some other new features. However, it is possible to use the Symbian platform without enabling ScreenPlay. This is called the non-ScreenPlay variant (sometimes referred to as the non-NGA variant). This topic provides an introduction to the graphics architecture when ScreenPlay is not enabled.
The following diagram shows the non-ScreenPlay architecture. It includes the components in the Graphics package and some closely related components in other packages.
The software model is as follows:
The Hardware Adaptation Layer (HAL) consists of the frame buffer and basic attributes. All processes have equal access to the frame buffer and can both read and write to it.
The Screen Driver provides simple pixel, scan-line and bitmap operations. The Screen Driver has the same interface for both bitmaps and the frame buffer. Hardware manufacturers can adapt the Screen Driver to suit the available hardware.
The BitGDI component provides support for higher-level geometric primitives and text. The BitGDI component is implemented in terms of Screen Driver operations. All BitGDI rendering operations are synchronous.
The Window Server multiplexes access to the screen and provides a BitGDI-like interface.
The Window Server provides Direct Screen Access (DSA) support for applications that require high frame rates (such as video and games) to bypass the Window Server and write to the frame buffer directly. However, some interaction with the Window Server is needed to prevent the application from drawing over other application's data.
In addition, the non-ScreenPlay architecture provides support for EGL, OpenGL and OpenVG.
The following diagram shows the rendering stack in the non-ScreenPlay variant.
Although DSA provides a solution for applications that require high frame rates, the non-ScreenPlay architecture has limitations when used on graphics accelerated hardware and non-uniform memory models. The architecture may require the copying of buffers between CPU and GPU memory as shown in the following diagram. ScreenPlay provides a solution that requires less copying of buffers in this type of use case.