Symbian3/PDK/Source/GUID-0DC3E5AA-1706-5255-ACD6-E7AB732E1095.dita
changeset 1 25a17d01db0c
child 3 46218c8b8afa
equal deleted inserted replaced
0:89d6a7a84779 1:25a17d01db0c
       
     1 <?xml version="1.0" encoding="utf-8"?>
       
     2 <!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
       
     3 <!-- This component and the accompanying materials are made available under the terms of the License 
       
     4 "Eclipse Public License v1.0" which accompanies this distribution, 
       
     5 and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
       
     6 <!-- Initial Contributors:
       
     7     Nokia Corporation - initial contribution.
       
     8 Contributors: 
       
     9 -->
       
    10 <!DOCTYPE concept
       
    11   PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
       
    12 <concept xml:lang="en" id="GUID-0DC3E5AA-1706-5255-ACD6-E7AB732E1095"><title>Graphics Composition Collection Overview</title><shortdesc>This topic provides an introduction to the Graphics Composition collection. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref>. <b>Target audience</b>: Device creators. </p> <p>In the context of <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref>, composition is the process of combining content, possibly from several different sources, before it is displayed. For example, the following figure represents a scenario where content from the camera viewfinder, video, and OpenVG 2D and OpenGL ES 3D games are brought together with the UI content and then displayed on the screen. This process of bringing the content together is called <b>composition</b>. Some of the incoming content may be produced by hardware renderers and the composition itself may be hardware accelerated. </p> <fig id="GUID-05E408F2-C16E-5A9A-AFCB-9659E15014C9"><title>
       
    13           Composition of several different types of content 
       
    14         </title> <image href="GUID-30E37559-B24D-569B-89BF-D5261DC5C689_d0e250095_href.png" placement="inline"/></fig> <p>In ScreenPlay, sources that generate complex graphical output (such as the camera viewfinder, video, and OpenGLES and OpenVG games) can render directly to <b>composition surfaces</b>. These are essentially pixel buffers with associated metadata describing the width, height, stride and pixel format. In the Symbian implementation, surfaces are implemented using <xref href="GUID-51514A4B-0220-557B-9F7A-FB110CEFEF10.dita">shared chunks</xref>, which are memory regions that can be safely shared between user-side and kernel-side processes. </p> <p>The Window Server's render stage plug-ins render all of the UI content onto a special surface that is known as the <b>UI surface</b>. This is semi-transparent—unlike the background surfaces, which are opaque. The following diagram shows the composition engine bringing together the UI surface and the background surfaces onto the frame buffer, which the Display Driver then displays on the screen. </p> <fig id="GUID-22111593-A1B0-5714-AFAE-F386012F0EED"><title>
       
    15           The ScreenPlay rendering stack 
       
    16         </title> <image href="GUID-D9203CF1-E8A7-5886-BD19-BE616BEF9111_d0e250116_href.png" placement="inline"/></fig> <p>The composition engine maintains a stack of <b>scene elements</b> or layers (which describe the geometric positions, size and orientation), computes what is visible and performs the actual composition work. </p> <p>For a general introduction to some of the key composition concepts, see <xref href="GUID-859CAA08-59C9-5FD3-98DE-6BDD0D6ED50B.dita">Graphics Composition</xref> and <xref href="GUID-41802B91-26B3-5F3C-AE04-B6954F3804B7.dita">Scene Elements</xref>. </p> <section><title>Components</title> <p>The following diagram shows the composition interface and engine and related components and indicates which are generic parts of the Symbian platform and which can be adapted by device and hardware manufacturers. </p> <fig id="GUID-FC7504F9-F965-5484-AE80-E1E03D7190B0"><title>
       
    17              Key composition components 
       
    18           </title> <image href="GUID-1DD48C1F-B7E0-5379-BDF1-70C8744B57DD_d0e250144_href.png" placement="inline"/></fig> <p>Here we will look briefly at the role of the key components. </p> <ul><li id="GUID-635A150F-3298-578B-BE21-53255CB55235"><p>The composition engine maintains the stack of elements and computes what is visible. For example, it culls invisible areas and maintains a list of dirty rectangles. The composition engine also performs the actual composition work, blending the pixels if necessary. It supports limited transformation, such as scaling and rotation (in 90° increments). It can utilize GPU hardware composition and LCD hardware rotation if they are available. The Symbian Foundation provides a reference implementation based on the <xref href="GUID-3B9AC7E9-3133-505F-9C1E-EB4BB4969838.dita">OpenWF Composition (OpenWF-C) APIs</xref> defined by the Khronos Group. </p> </li> <li id="GUID-44E97944-7628-5E4D-BDDD-23FE6E1AC26D"><p>The <xref href="GUID-55EF3CEB-AF3E-5A32-96F3-F146D1A06C8F.dita">Surface Manager</xref> creates and manages surfaces. As mentioned above, in the Symbian implementation, surfaces are implemented as shared chunks because they must be accessible by user-side processes and the kernel and composition hardware. Because shared chunks can only be allocated on the kernel side, the Surface Manager is a logical device driver (LDD) and kernel extension. Surfaces can be multi-buffered and are identified by a 128 bit identifier (called the surface ID). </p> </li> <li id="GUID-0514F41D-841A-5C4B-95F9-F8862FC87B8A"><p>The <xref href="GUID-8E8FE99A-5F4D-5B0F-87AB-A58EB4BEB6E9.dita">Surface Update Server</xref> provides a communication mechanism between the composition engine and its clients. This is particularly useful for clients (such as video) that produce fast updates and use multi-buffered surfaces. The Surface Update Server sends back to the client notification of which surface and which buffer within a multi-buffered surface was used for the last composition operation. The client can then start updating the buffer without risk of tearing or artefacts. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-63CB6C7E-44EC-5D0B-A37D-FE78F7D76592.dita"><linktext>Graphics Composition Collection</linktext> </link> <link href="GUID-859CAA08-59C9-5FD3-98DE-6BDD0D6ED50B.dita"><linktext>Graphics Composition</linktext> </link> <link href="GUID-41802B91-26B3-5F3C-AE04-B6954F3804B7.dita"><linktext>Scene Elements</linktext> </link> <link href="GUID-ADA8CECB-0E70-5B9C-8F36-0714AAF0CD13.dita"><linktext>Surfaces</linktext> </link> </related-links></concept>