Caution: This version of this document is no longer maintained. For the latest documentation, see

Overview of the Composition Manager

The Composition Manager provides a uniform environment that lets media-rich applications share display hardware. It can scale from low-end platforms, where only display controller layers are available to do composition, to high-end platforms where OpenGL ES or OpenVG can be used to combine windows. The Composition Manager communicates with open standards APIs to make developing portable media applications much easier. The Composition Manager also enables system integrators or human-machine interface (HMI) programs to control the layout of windows on a display without modifying application source code.

The Composition Manager provides a lightweight composited windowing system. Unlike traditional windowing systems that arbitrate access to a single buffer associated with a display, a composited windowing system combines individual off-screen buffers holding window contents into one image that is associated with a display. Directing all rendering to off-screen buffers allows a more flexible use of window contents, without involving the applications that are rendering them. Windows can be moved around, zoomed in, zoomed out, rotated, or have transparency effects applied to them without requiring the application to redraw or even be aware that such effects are taking place.

Communicating with applications

The Composition Manager uses a window manager, io-winmgr, to centralize window creation and destruction activities, thus removing costly overhead from any applications that run on the system. The io-winmgr manager communicates with external applications using industry-standard APIs.

Resource Manager and industry-standard APIs

OpenKODE is provided to create, realize, and destroy windows by sending messages to the composition manager. The EGL API is used to handle the presentation of window updates through eglSwapBuffers, which sends messages to the resource manager.

The OpenKODE and EGL APIs ensure that applications are portable.

Handling composition

The main responsibility of the Composition Manager is to combine all visible window buffers into one final image that is displayed. This can be achieved using several classes of hardware, including display controllers, 2D cores, vector graphics cores, 3D programmable and non-programmable cores, or CPUs.

The Composition Manager can be configured to use available compositing hardware in a way that best meets the needs of a particular system. On some systems, that could mean maximizing the use of layers available on a display controller. On the other hand, if content updates are less frequent, it may be best, on some hardware, to use a 2D core to do the composition. This lowers the overall memory bandwidth usage.

The Composition Manager redraws a scene whenever a visible window posts a content update. To prevent unnecessary composition, windows with similar update characteristics are composited at the same time. HMIs can also dynamically control update rates in response to system loads. Hardware or software cursors can also be added to a display.

Resource Manager, industry-standard APIs, OpenWF

Enabling the HMI

The Composition Manager allows the HMI to interact with applications, without manipulating the application itself, and without incurring any overhead from message passing.

The HMI can use OpenKODE extensions to receive events whenever a window is created, realized, or destroyed, or whenever properties for a given window are changed. The API enables the HMI to change the properties of any application's window. This give the HMI complete control over the layout of the display, without directly interacting with the application.

Resource Manager, industry-standard APIs, HMI

In addition to modifying window properties, the HMI can call io-winmgr to access application buffers. This allows the HMI to perform more sophisticated compositing or post-processing requirements. This includes 3D effects, lighting effects, or special conversions.