OpenWF Composition Interface Overview

The OpenWF Composition Interface Component provides the Symbian platform with a consistent interface to the open-source, cross-platform OpenWF Composition (OpenWF-C) APIs defined by the Khronos Group. The OpenWF-C Interface component includes the Khronos-released header files and some Symbian-specific files. It does not provide any implementations of the APIs.

Target audience: Device creators.

Introduction to OpenWF-C on Symbian

OpenWF-C provides a hardware abstraction layer that allows power-efficient hardware-accelerated composition on a wide variety of hardware platforms including blitter (memory-memory) and overlay (memory-less) hardware. OpenWF-C is particularly aimed at systems with limited memory bandwidth, such as mobile devices. OpenWF-C enables the UI and the window system stack to be independent of the hardware used to achieve the composition.

OpenWF-C uses a number of opaque handle types (WFCHandle) to represent the following key concepts:

  • Device. An abstract device that is capable of performing composition operations. Typically this corresponds to a unit of graphics hardware. All composition operations and resources are associated with a device. The WFCDevice subtype represents an opaque handle to a device.

  • Context. A visual description of a scene that is applied to a specific target. The context represents the state required for the composition of the scene. A context can be on-screen or off-screen but only one on-screen context per screen can render. The WFCContext subtype represents an opaque handle to a composition context.

  • Element. Represents the positioning and other attributes of content within the composition context. An element is sometimes referred to as a layer. The WFCElement subtype represents an opaque handle to an element.

  • Source. Supplies the image data that an element can reference as the primary source of its color data. A source is created from a stream. The WFCSource subtype represents an opaque handle to a source.

  • Stream. A container for multiple image buffers that share the same properties. Streams encapsulate the queuing state of the internal buffers. Streams are used for both input and output pixel data and can be connected to multiple contexts simultaneously. Ultimately renderers use streams to pass image data to the composition engine. The stream format is defined as platform-specific. Streams are therefore sometimes referred to as native streams. The WFCNativeStreamType subtype represents the opaque handle to a stream.

Note: The OpenWF-C APIs are system-level APIs and are not intended for use by application developers.

Architectural relationships

The following diagram shows the key OpenWF-C architectural component relationships within the Symbian platform.

Figure 1. OpenWF-C and related Symbian platform components
  • Window Server. The Symbian window management and rendering component.

  • Render Stages. An abstraction layer below the Window Server.

  • OpenWF-C Engine. The implementation of the OpenWF-C interface.

  • OpenWF-C Support. Abstracts communication between the OpenWF-C engine and the Surface Manager, Surface Update Server and the render stage framework and provides a reference implementation of native stream in terms of Symbian composition surfaces.

  • Surface Manager. Allocates and manages the lifetime and use of composition surfaces in system memory. Composition surfaces are identified by a 128-bit identifier (TSurfaceId).

  • Surface Update Server. Provides a communication mechanism between the composition engine and its clients.

  • Display Driver. Low-level abstraction of display hardware.

  • EGL (not shown on diagram). The OpenWF-C engine and support components use EGL sync objects for synchronization. In addition OpenWF-C clients obtain any extension functions that the engine implements by using the EGL function, eglGetProcAddress().

Description

OpenWF-C is a standard defined by the Khronos Group (www.khronos.org) which defines a C API. The following table provides a link to the relevant specification.

Header files

The OpenWF-C Interface component includes the Khronos-released header files shown in the following table. Use of these standard header files helps to ensure binary compatibility for applications across different Symbian platforms. It also provides source compatibility between different operating systems.

Filename Description
wfc.h Type definitions and function prototypes.
wfcext.h Defines additional values, functions and data types that may be available on a platform.
wfcplatform.h Platform-specific elements of the specification.
openwfcuids.hrh Symbian-defined constants for representing UIDs in MMP files and elsewhere.

Library file

The OpenWF-C Interface component generates a LIB file called libWFC.lib.

DEF files

The following definition (DEF) files are delivered by the OpenWF-C Interface component in order to ensure binary compatibility.

Platform DEF file
ARM /epoc32/include/platform/def/eabi/libWFCu.def
WINSCW /epoc32/include/platform/def/win32/libWFCu.def
Related concepts
OpenWF Composition