|
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 id="GUID-EF62BF88-3687-505D-8BD7-EEDF36246E56" xml:lang="en"><title>Graphics |
|
13 Hardware Acceleration</title><shortdesc>This topic describes some of the issues surrounding the use of |
|
14 graphics hardware to improve graphics performance. It also provides a summary |
|
15 of the components that device creators need to adapt to take advantage of |
|
16 graphics hardware. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody> |
|
17 <section><title>Background</title> <p><b>Graphics acceleration hardware </b> </p> <p>A |
|
18 graphics accelerator or Graphics Processing Unit (GPU) is a dedicated hardware |
|
19 processor that works in parallel with the main processor (CPU). By relieving |
|
20 the CPU of highly intensive graphics processing, a GPU makes it is possible |
|
21 to achieve sophisticated screen displays (such as video, animated graphics |
|
22 and 3D games) without compromising other aspects of performance. </p> <p><b>Animations </b> </p> <p>Animation |
|
23 involves transferring and manipulating large amounts of data (stored as bitmaps |
|
24 or instructions) from one area of memory and putting them into another (the |
|
25 screen buffer). Frame rates may be between 10 and 30 frames per second (depending |
|
26 on requirements and sources). </p> <p><b>Composition </b> </p> <p>Manufacturers |
|
27 of smartphones face the complexity of displaying on the screen a mixture of |
|
28 different types of content, such as streaming video, the camera viewfinder |
|
29 and regular UI elements with animated icons. These different types of content |
|
30 come from different places—such as multimedia sources (streaming video), camera |
|
31 hardware, the Window Server and EGL (3D and vector graphics). The different |
|
32 types of content are displayed in different areas of the screen and are updated |
|
33 by different processes. The graphics system must be capable not only of creating |
|
34 sophisticated graphical output from each source simultaneously but also of |
|
35 composing (compositing) them at up to 30 frames per second. For an introduction |
|
36 to how ScreenPlay handles this challenge, see <xref href="GUID-859CAA08-59C9-5FD3-98DE-6BDD0D6ED50B.dita">Graphics |
|
37 Composition</xref>. </p> <p><b>Optimization </b> </p> <p>GPUs work best when |
|
38 they do so uninterrupted. They usually have a 'long processing pipe' (a lot |
|
39 of data cached in memory) and flushing it or allowing it to empty reduces |
|
40 effectiveness. This can be avoided by avoiding the following: </p> <ul> |
|
41 <li id="GUID-827CF5E4-86EE-5766-BAF4-395205461FF0"><p> <b>Context switching</b>. |
|
42 The working data (such as color information, vertex positions, transformations |
|
43 and textures) is known as the <i>context</i>. If more than one application |
|
44 wants to use the processor at the same time, the processor must swap between |
|
45 them. This involves the processor saving the context from one application, |
|
46 flushing its buffers, and loading the context from the next. Context switching |
|
47 is time consuming and disruptive. </p> </li> |
|
48 <li id="GUID-5C98575F-A0EA-5B9F-ACCC-C7A0D2B93058"><p> <b>Copying and reformatting |
|
49 data</b>. Changing the format and copying pixel data involves time and memory. |
|
50 If the GPU and CPU cannot share memory and data formats, much time, processing |
|
51 power and memory is required to copy and convert data. </p> </li> |
|
52 </ul> <p>ScreenPlay avoids context switching and reformatting and copying |
|
53 data wherever possible. </p> <p><b>Hardware variety </b> </p> <p>The combination |
|
54 of hardware acceleration, animation and composition would be a substantial |
|
55 challenge in a fixed, dedicated hardware architecture. The Symbian platform, |
|
56 however, is designed to operate on a variety of hardware architectures, only |
|
57 some of which are capable of graphics acceleration and processing. The Symbian |
|
58 graphics subsystem can be customized to take advantage of a variety graphics |
|
59 processing hardware. Customization is via 'back end' components which do not |
|
60 affect the public API. </p> </section> |
|
61 <section><title>The hardware adaptation components</title> <p>Here we provide |
|
62 information about which graphics components device creators can adapt or replace. |
|
63 Components that can be adapted or replaced to suit the hardware are generally |
|
64 called <i>adaptations</i>. Adaptable and replaceable components that do not |
|
65 depend on the hardware are called <i>customizations</i> and are indicated |
|
66 by an asterisk (*) in the following table. </p> <p>The details vary depending |
|
67 on whether the <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> or <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref> variant |
|
68 is in use. </p> <table id="GUID-C401C8AE-7EE2-5B8F-9B17-B8C2E5E6B5B6"> |
|
69 <tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/> |
|
70 <thead> |
|
71 <row> |
|
72 <entry>ScreenPlay</entry> |
|
73 <entry>Non-ScreenPlay</entry> |
|
74 </row> |
|
75 </thead> |
|
76 <tbody> |
|
77 <row> |
|
78 <entry><xref href="GUID-04D917A1-E1A0-5149-9660-80A1146D0984.dita">OpenGLES Implementation</xref> </entry> |
|
79 <entry><xref href="GUID-04D917A1-E1A0-5149-9660-80A1146D0984.dita">OpenGLES Implementation</xref> </entry> |
|
80 </row> |
|
81 <row> |
|
82 <entry><xref href="GUID-1A8ED0EB-B3B7-553F-95E3-2120D877966B.dita">OpenVG Implementation</xref></entry> |
|
83 <entry><xref href="GUID-1A8ED0EB-B3B7-553F-95E3-2120D877966B.dita">OpenVG Implementation</xref> </entry> |
|
84 </row> |
|
85 <row> |
|
86 <entry><xref href="GUID-DC8BFEF5-DA50-52DA-8CE2-5729A4A005F6.dita">EGL Implementation</xref> </entry> |
|
87 <entry><xref href="GUID-DC8BFEF5-DA50-52DA-8CE2-5729A4A005F6.dita">EGL Implementation</xref> </entry> |
|
88 </row> |
|
89 <row> |
|
90 <entry><xref href="GUID-9E7D563E-9FFB-5FA9-8944-9CBAC281FDD2.dita">Screen Driver</xref> </entry> |
|
91 <entry><xref href="GUID-9E7D563E-9FFB-5FA9-8944-9CBAC281FDD2.dita">Screen Driver</xref> </entry> |
|
92 </row> |
|
93 <row> |
|
94 <entry><xref href="GUID-D76C7759-739D-5C98-B718-7297687FE630.dita">Extended Bitmap |
|
95 Rasterizer Plug-in</xref> </entry> |
|
96 <entry><xref href="GUID-D76C7759-739D-5C98-B718-7297687FE630.dita">Extended Bitmap |
|
97 Rasterizer Plug-in</xref> </entry> |
|
98 </row> |
|
99 <row> |
|
100 <entry><xref href="GUID-BB4F5388-32EA-5A2E-845D-E5339D2040E9.dita">DirectGDI Adaptation</xref> </entry> |
|
101 <entry/> |
|
102 </row> |
|
103 <row> |
|
104 <entry><xref href="GUID-5E46C0EE-BD7D-5C85-8083-575BB2888AA7.dita">Graphics Resource |
|
105 Adaptation</xref> </entry> |
|
106 <entry/> |
|
107 </row> |
|
108 |
|
109 <row> |
|
110 <entry><xref href="GUID-8BEE0411-C6E9-5840-BE22-EC271A4D97DD.dita">OpenWF Composition |
|
111 Engine</xref></entry> |
|
112 <entry/> |
|
113 </row> |
|
114 <row> |
|
115 <entry><xref href="GUID-C7B420DE-CEDA-5D3F-8095-71136E862CDF.dita">Surface Manager</xref> </entry> |
|
116 <entry/> |
|
117 </row> |
|
118 <row> |
|
119 <entry><xref href="GUID-8E8FE99A-5F4D-5B0F-87AB-A58EB4BEB6E9.dita">Surface Update</xref> </entry> |
|
120 <entry/> |
|
121 </row> |
|
122 <row> |
|
123 <entry><xref href="GUID-3A2785D4-6185-50C3-8D7E-5D94CD2B7C98.dita">Render Stages</xref>* </entry> |
|
124 <entry/> |
|
125 </row> |
|
126 </tbody> |
|
127 </tgroup> |
|
128 </table> </section> |
|
129 </conbody><related-links> |
|
130 <link href="GUID-99BC101A-9466-59EE-B5C9-7622BAF6E6FF.dita"><linktext>Graphics |
|
131 Concepts</linktext></link> |
|
132 <link href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita"><linktext>The ScreenPlay |
|
133 Architecture</linktext></link> |
|
134 <link href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita"><linktext>The Non-ScreenPlay |
|
135 Architecture</linktext></link> |
|
136 </related-links></concept> |