DirectGDI Adaptation Overview

The DirectGDI Adaptation component, together with the DirectGDI Interface component, forms the DirectGDI adaptation layer. The DirectGDI Interface component defines the interfaces that the adaptations must implement and the DirectGDI Adaptation component consists of the two DirectGDI implementations that are provided in the Graphics package.

Target audience: Device creators.

Note: DirectGDI is deprecated in Symbian^3.

The DirectGDI component provides a framework that enables graphics hardware acceleration and interleaved rendering. This framework provides an API for client applications and a Hardware Adaptation Interface (HAI), which defines interfaces that must be implemented by device and hardware manufacturers in order to provide the API functionality. The framework has a dependency on the Graphics Resource Component.

The Graphics package includes two DirectGDI adaptations:

  • A purely software adaptation that uses existing components to draw to the screen in a similar manner to BitGDI. This is suitable for use in phones that do not include graphics acceleration hardware.

  • A hardware adaptation that uses OpenVG and EGL APIs on the H4 platform. This is provided for reference purposes and there is no requirement that the implementation use OpenVG. Hardware manufacturers can in fact use any third-party rendering system that is suitable for use with the target hardware.

The following diagram shows the generic DirectGDI API and implementation, with one software and two hardware implementations. Although shown on the same diagram, in fact only one implementation can exist on the same phone. A configuration at ROM build time decides which implementation is used.

Figure 1. DirectGDI architecture

Notice that all three of the implementations implement the common MDirectGdiEngine interface. Also notice that the hardware implementation uses asynchronous calls to the graphic acceleration hardware driver. This means that the CPU can continue with other processing while the GPU is busy processing the rendering request. This improves the parallelism between the CPU and the GPU.

The software implementation does not use asynchronous calls, because the rendering is performed by the CPU.

Generic layer

The following figure shows the classes in the DirectGDI generic layer (which is shaded green). Classes that are provided by other components are shown in red. Classes that cross the generic layer boundary have some parts that cannot be modified (such as a fixed API), but have other parts that can be modified.

Figure 2. The DirectGDI generic layer classes