# 图形概述

Qualcomm^®^ Adreno^™^ GPU 为图形子系统提供动力，并提供以下功能：

- 用作具有 64 位寻址的三维 (3D) 图形加速器。
- 将图形内存 (GMEM) 合并为图形子系统的专用内存，帮助 Fast Z、颜色和模板渲染。
- 支持 Qualcomm^®^ 通用带宽压缩，增强整体性能。

Adreno GPU 支持以下图形和计算 API：

- **OpenGL ES**: [3.0](https://registry.khronos.org/OpenGL/specs/es/3.0/es_spec_3.0.pdf), [3.1](https://registry.khronos.org/OpenGL/specs/es/3.1/es_spec_3.1.pdf), [3.2](https://registry.khronos.org/OpenGL/specs/es/3.2/es_spec_3.2.pdf)
- **OpenCL**：[1.2 FP](https://registry.khronos.org/OpenCL/specs/opencl-1.2.pdf)、[2.0 FP](https://registry.khronos.org/SPIR-V/specs/1.0/OpenCL.std.20.pdf)、[3.0 FP](https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html)
- **EGL**: [1.5](https://registry.khronos.org/EGL/specs/eglspec.1.5.pdf)
- **Vulkan**: [1.1](https://registry.khronos.org/vulkan/#vulkan1.1)

Note

请参阅 Qualcomm^®^ Linux^®^ 上支持的[硬件 SoC](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-115/soc.html)。

## 图形子系统架构

图形架构由 Qualcomm 和开源组件组成，如下图所示。

<!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->

<!-- Generated by Microsoft Visio, SVG Export Graphics-driver.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="11.6436in" height="8.53633in" viewbox="0 0 838.34 614.615" xml:space="preserve" color-interpolation-filters="sRGB" class="st21" aria-label="../../_images/Graphics-driver.svg"><v:documentproperties v:langid="1033" v:viewmarkup="false"></v:documentproperties>
<style>.svg-1 .st1 { fill: #fafafa; stroke: #d2d7e1; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5 }
.svg-1 .st2 { fill: #2a2aea; stroke: #ffffff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st3 { fill: #ffffff; font-family: Roboto; font-size: 1.16666em }
.svg-1 .st4 { font-family: Microsoft YaHei UI; font-size: 1em }
.svg-1 .st5 { fill: #007884; stroke: #ffffff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st6 { fill: #ffffff; font-family: Roboto; font-size: 1.00001em }
.svg-1 .st7 { fill: #ffffff; font-family: Microsoft YaHei UI; font-size: 1.00001em }
.svg-1 .st8 { stroke: #000000; stroke-dasharray: 7, 5; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st9 { fill: none; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st10 { fill: #000000; font-family: Microsoft YaHei UI; font-size: 1.00001em; font-weight: bold }
.svg-1 .st11 { marker-end: url("#mrkr4-58"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5 }
.svg-1 .st12 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.37313432835821 }
.svg-1 .st13 { marker-end: url("#mrkr4-58"); marker-start: url("#mrkr4-80"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5 }
.svg-1 .st14 { fill: #f7f8fa; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st15 { fill: #000000; font-family: Roboto; font-size: 0.833336em }
.svg-1 .st16 { font-size: 1em }
.svg-1 .st17 { fill: #f7f8fa; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5 }
.svg-1 .st18 { marker-start: url("#mrkr4-80"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5 }
.svg-1 .st19 { fill: #f7f8fa; marker-end: url("#mrkr5-158"); stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5 }
.svg-1 .st20 { fill: #000000; font-family: Microsoft YaHei UI; font-size: 0.833336em }
.svg-1 .st21 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend4">		<path d="M 2 1 L 0 0 L 2 -1 L 2 1 " style="stroke:none"></path>	</g>	<marker id="mrkr4-58" class="st12" v:arrowtype="4" v:arrowsize="2" v:setback="5.36" refx="-5.36" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" transform="scale(-2.68,-2.68) "></use>	</marker>	<marker id="mrkr4-80" class="st12" v:arrowtype="4" v:arrowsize="2" v:setback="5.12" refx="5.12" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" transform="scale(2.68) "></use>	</marker>	<g id="lend5">		<path d="M 2 1 L 0 0 L 1.98117 -0.993387 C 1.67173 -0.364515 1.67301 0.372641 1.98465 1.00043 " style="stroke:none"></path>	</g>	<marker id="mrkr5-158" class="st12" v:arrowtype="5" v:arrowsize="2" v:setback="4.69" refx="-4.69" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(-2.68,-2.68) "></use>	</marker></defs><g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<title>Page-1</title>	<v:pageproperties v:drawingscale="0.0138889" v:pagescale="0.0138889" v:drawingunits="29" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="group66-1" transform="translate(0.965281,-0.75)" v:mid="66" v:groupcontext="group">		<title>Sheet.66</title>		<g id="shape54-2" v:mid="54" v:groupcontext="shape">			<title>Sheet.54</title>			<rect x="0" y="1.50005" width="836.625" height="613.115" rx="0.4" ry="0.4" class="st1"></rect>		</g>	</g>	<g id="shape1-4" v:mid="1" v:groupcontext="shape" transform="translate(321.34,-388.182)">		<title>Rectangle</title>		<desc>Adreno GPU 驱动程序</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="145.244" cy="568.931" width="290.49" height="91.3686"></v:textrect>		<rect x="0" y="523.247" width="290.487" height="91.3686" rx="2.16" ry="2.16" class="st2"></rect>		<text x="77.61" y="573.18" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Adreno GPU <tspan class="st4" v:langid="2052">驱动程序</tspan></text>		</g>	<g id="shape3-8" v:mid="3" v:groupcontext="shape" transform="translate(271.121,-557.025)">		<title>Rectangle.3</title>		<desc>Wayland 客户端</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="70.27" cy="593.777" width="140.55" height="41.6777"></v:textrect>		<rect x="0" y="572.938" width="140.54" height="41.6777" rx="2.16" ry="2.16" class="st5"></rect>		<text x="27.94" y="597.42" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Wayland <tspan class="st4" v:langid="2052">客户端</tspan></text>		</g>	<g id="shape5-12" v:mid="5" v:groupcontext="shape" transform="translate(393.541,-200.24)">		<title>Rectangle.5</title>		<desc>KGSL driver</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="68.5264" cy="595.224" width="137.06" height="38.7834"></v:textrect>		<rect x="0" y="575.832" width="137.053" height="38.7834" rx="2.16" ry="2.16" class="st2"></rect>		<text x="37.42" y="598.82" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>KGSL driver</text>		</g>	<g id="shape6-15" v:mid="6" v:groupcontext="shape" transform="translate(613.278,-200.24)">		<title>Rectangle.6</title>		<desc>显示内核驱动程序</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="68.5264" cy="595.224" width="137.06" height="38.7834"></v:textrect>		<rect x="0" y="575.832" width="137.053" height="38.7834" rx="2.16" ry="2.16" class="st2"></rect>		<text x="20.53" y="598.82" class="st7" v:langid="2052"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>显示内核驱动程序</text>		</g>	<g id="shape7-18" v:mid="7" v:groupcontext="shape" transform="translate(629.278,-413.028)">		<title>Rectangle.7</title>		<desc>Drm 后端 显示</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="52.5" cy="593.777" width="105.01" height="41.6777"></v:textrect>		<rect x="0" y="572.938" width="105" height="41.6777" rx="2.16" ry="2.16" class="st5"></rect>		<text x="27.79" y="590.13" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Drm <tspan class="st4" v:langid="2052">后端<v:lf></v:lf></tspan><tspan x="28.5" dy="1.215em" class="st4" v:langid="2052">（</tspan><tspan class="st4" v:langid="2052">显示</tspan><tspan class="st4" v:langid="2052">）</tspan></text>		</g>	<g id="shape8-25" v:mid="8" v:groupcontext="shape" transform="translate(34.842,-393.258)">		<title>Rectangle.10</title>		<desc>图形缓存管理</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="66.858" cy="593.777" width="133.72" height="41.6777"></v:textrect>		<rect x="0" y="572.938" width="133.716" height="41.6777" rx="2.16" ry="2.16" class="st5"></rect>		<text x="30.86" y="597.38" class="st7" v:langid="2052"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>图形缓存管理</text>		</g>	<g id="shape9-28" v:mid="9" v:groupcontext="shape" transform="translate(33.7926,-445.114)">		<title>Rectangle.11</title>		<desc>Wayland 协议</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="67.3827" cy="593.777" width="134.77" height="41.6777"></v:textrect>		<rect x="0" y="572.938" width="134.765" height="41.6777" rx="2.16" ry="2.16" class="st5"></rect>		<text x="31.06" y="597.42" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Wayland <tspan class="st4" v:langid="2052">协议</tspan></text>		</g>	<g id="shape10-32" v:mid="10" v:groupcontext="shape" v:layermember="0" transform="translate(0.5,-255.453)">		<title>Dynamic connector</title>		<path d="M0 602.12 L836.67 602.12" class="st8"></path>	</g>	<g id="shape11-35" v:mid="11" v:groupcontext="shape" v:layermember="0" transform="translate(2.72222,-146.416)">		<title>Dynamic connector.13</title>		<path d="M0 602.12 L833.89 602.12" class="st8"></path>	</g>	<g id="shape12-38" v:mid="12" v:groupcontext="shape" transform="translate(393.541,-83.4526)">		<title>Rectangle.14</title>		<desc>Adreno GPU</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="68.5264" cy="595.224" width="137.06" height="38.7834"></v:textrect>		<rect x="0" y="575.832" width="137.053" height="38.7834" rx="2.16" ry="2.16" class="st2"></rect>		<text x="36.04" y="598.82" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Adreno GPU</text>		</g>	<g id="shape13-41" v:mid="13" v:groupcontext="shape" transform="translate(613.278,-83.4526)">		<title>Rectangle.15</title>		<desc>Adreno DPU</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="68.5264" cy="595.224" width="137.06" height="38.7834"></v:textrect>		<rect x="0" y="575.832" width="137.053" height="38.7834" rx="2.16" ry="2.16" class="st2"></rect>		<text x="36.19" y="598.82" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Adreno DPU</text>		</g>	<g id="shape14-44" v:mid="14" v:groupcontext="shape" transform="translate(768.15,-128.453)">		<title>Sheet.14</title>		<desc>硬件</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="34.2632" cy="603.194" width="68.53" height="22.8421"></v:textrect>		<rect x="0" y="591.773" width="68.5264" height="22.8421" class="st9"></rect>		<text x="4" y="606.79" class="st10" v:langid="2052"><v:paragraph></v:paragraph><v:tablist></v:tablist>硬件</text>		</g>	<g id="shape15-47" v:mid="15" v:groupcontext="shape" transform="translate(768.15,-243.032)">		<title>Sheet.15</title>		<desc>内核</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="34.2632" cy="603.194" width="68.53" height="22.8421"></v:textrect>		<rect x="0" y="591.773" width="68.5264" height="22.8421" class="st9"></rect>		<text x="4" y="606.79" class="st10" v:langid="2052"><v:paragraph></v:paragraph><v:tablist></v:tablist>内核</text>		</g>	<g id="shape16-50" v:mid="16" v:groupcontext="shape" transform="translate(768.15,-270.375)">		<title>Sheet.16</title>		<desc>用户空间</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="34.2632" cy="603.194" width="68.53" height="22.8421"></v:textrect>		<rect x="0" y="591.773" width="68.5264" height="22.8421" class="st9"></rect>		<text x="4" y="606.79" class="st10" v:langid="2052"><v:paragraph></v:paragraph><v:tablist></v:tablist>用户空间</text>		</g>	<g id="shape18-53" v:mid="18" v:groupcontext="shape" transform="translate(1296.39,201.494) rotate(89.9913)">		<title>Sheet.18</title>		<path d="M0 614.62 L165.96 614.62" class="st11"></path>	</g>	<g id="shape19-59" v:mid="19" v:groupcontext="shape" transform="translate(1296.42,414.376) rotate(90)">		<title>Sheet.19</title>		<path d="M0 614.62 L69.96 614.62" class="st11"></path>	</g>	<g id="shape23-64" v:mid="23" v:groupcontext="shape" transform="translate(1076.68,414.376) rotate(90)">		<title>Sheet.23</title>		<path d="M0 614.62 L69.96 614.62" class="st11"></path>	</g>	<g id="shape26-69" v:mid="26" v:groupcontext="shape" transform="translate(956.007,57.5906) rotate(90)">		<title>Sheet.26</title>		<path d="M0 614.62 L69.43 614.62" class="st11"></path>	</g>	<g id="shape29-74" v:mid="29" v:groupcontext="shape" transform="translate(167.938,-463.212)">		<title>Sheet.29</title>		<path d="M7.68 614.62 L8.04 614.62 L144.7 614.62" class="st13"></path>	</g>	<g id="shape30-82" v:mid="30" v:groupcontext="shape" transform="translate(1075.46,56.9561) rotate(90)">		<title>Sheet.30</title>		<path d="M7.68 614.62 L8.04 614.62 L70.07 614.62" class="st13"></path>	</g>	<g id="shape31-89" v:mid="31" v:groupcontext="shape" transform="translate(343.135,-505.42)">		<title>Sheet.31</title>		<desc>1. 节应用程序调用 EGL/OpenGL ES</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="34.2632" cy="594.342" width="68.53" height="40.5468"></v:textrect>		<rect x="0" y="574.069" width="68.5264" height="40.5468" class="st14"></rect>		<text x="2" y="587.18" class="st15" v:langid="1033"><v:paragraph v:indentfirst="-2"></v:paragraph><v:tablist></v:tablist>1. <tspan class="st4" v:langid="2052">节应用程序</tspan><tspan x="4" dy="1.215em" class="st4" v:langid="2052">调用</tspan><tspan class="st4"> </tspan>EGL/<tspan x="4" dy="1.204em" class="st16">OpenGL ES</tspan></text>		</g>	<g id="shape35-96" v:mid="35" v:groupcontext="shape" transform="translate(179.667,-467.657)">		<title>Sheet.35</title>		<desc>2. 渲染时设置注册表和回调</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="61.071" cy="601.257" width="122.15" height="26.7175"></v:textrect>		<rect x="0" y="587.898" width="122.142" height="26.7175" class="st14"></rect>		<text x="4" y="598.22" class="st15" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>2. <tspan class="st4" v:langid="2052">渲染时</tspan><tspan class="st4" v:langid="2052">，</tspan><tspan class="st4" v:langid="2052">设置注册表和</tspan><tspan x="4" dy="1.215em" class="st4" v:langid="2052">回调</tspan></text>		</g>	<g id="shape39-103" v:mid="39" v:groupcontext="shape" transform="translate(179.667,-421.243)">		<title>Sheet.39</title>		<desc>3. 获取 Wayland 后台缓存进行渲染</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="61.071" cy="597.484" width="122.15" height="34.2632"></v:textrect>		<rect x="0" y="580.352" width="122.142" height="34.2632" class="st14"></rect>		<text x="4" y="594.52" class="st15" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>3. <tspan class="st4" v:langid="2052">获取</tspan><tspan class="st4" v:langid="2052"> </tspan>Wayland <tspan class="st4" v:langid="2052">后台缓</tspan><tspan x="4" dy="1.204em" class="st4" v:langid="2052">存进行渲染</tspan></text>		</g>	<g id="shape41-110" v:mid="41" v:groupcontext="shape" transform="translate(365.278,-298.056)">		<title>Sheet.41</title>		<desc>4. 节使用 swapbuffer/glflush/glfinish 提交到 KGSL 以使用 OpenGL ES 进行渲染</desc>		<v:textblock v:margins="rect(4,4,8,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="50.653" cy="584.456" width="101.31" height="60.319"></v:textrect>		<rect x="0" y="554.297" width="101.306" height="60.319" class="st14"></rect>		<text x="4" y="567.41" class="st15" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>4.<tspan class="st4"> </tspan><tspan class="st4" v:langid="2052">节使用</tspan><tspan class="st4" v:langid="2052"> </tspan><tspan x="4" dy="1.204em" class="st16">swapbuffer/glflush/</tspan><tspan x="4" dy="1.211em" class="st16">glfinish</tspan><tspan class="st4"> </tspan><tspan class="st4" v:langid="2052">提交到</tspan><tspan class="st4" v:langid="2052"> </tspan>KGSL <tspan x="4" dy="1.215em" class="st4" v:langid="2052">以使用</tspan><tspan class="st4" v:langid="2052"> </tspan>OpenGL ES<tspan class="st4"> </tspan><tspan x="4" dy="1.215em" class="st4" v:langid="2052">进行渲染</tspan></text>		</g>	<g id="shape42-125" v:mid="42" v:groupcontext="shape" transform="translate(168.153,-421.811)">		<title>Sheet.42</title>		<path d="M7.68 614.62 L8.04 614.62 L144.7 614.62" class="st13"></path>	</g>	<g id="shape43-132" v:mid="43" v:groupcontext="shape" transform="translate(1194.02,56.9561) rotate(90)">		<title>Sheet.43</title>		<path d="M7.68 614.62 L8.04 614.62 L70.07 614.62" class="st13"></path>	</g>	<g id="shape44-139" v:mid="44" v:groupcontext="shape" transform="translate(461.796,-505.42)">		<title>Sheet.44</title>		<desc>5. EGL/将渲染表面提交到 to Wayland</desc>		<v:textblock v:margins="rect(4,4,8,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="39.482" cy="594.342" width="78.97" height="40.5468"></v:textrect>		<rect x="0" y="574.069" width="78.9639" height="40.5468" class="st14"></rect>		<text x="4" y="587.18" class="st15" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>5. EGL/<tspan class="st4" v:langid="2052">将渲染</tspan><tspan x="4" dy="1.215em" class="st4" v:langid="2052">表面提交到</tspan> to <tspan x="4" dy="1.204em" class="st16">Wayland</tspan></text>		</g>	<g id="shape45-145" v:mid="45" v:groupcontext="shape" transform="translate(580.751,-504.289)">		<title>Sheet.45</title>		<desc>6. 发送渲染表面进行合成</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="34.2632" cy="593.777" width="68.53" height="41.6777"></v:textrect>		<rect x="0" y="572.938" width="68.5264" height="41.6777" class="st17"></rect>		<text x="4" y="586.05" class="st15" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>6. <tspan class="st4" v:langid="2052">发送渲染</tspan><tspan x="4" dy="1.215em" class="st4" v:langid="2052">表面进行合成</tspan></text>		</g>	<g id="shape46-150" v:mid="46" v:groupcontext="shape" transform="translate(168.558,-398.969)">		<title>Sheet.46</title>		<path d="M7.68 614.62 L8.04 614.62 L152.16 614.62" class="st18"></path>	</g>	<g id="shape47-155" v:mid="47" v:groupcontext="shape" transform="translate(179.667,-361.105)">		<title>Sheet.47</title>		<desc>7. 获取 GBM 表面以合成渲染帧</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="61.071" cy="599.231" width="122.15" height="30.7696"></v:textrect>		<rect x="0" y="583.846" width="122.142" height="30.7696" class="st19"></rect>		<text x="4" y="596.27" class="st15" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>7. <tspan class="st4" v:langid="2052">获取</tspan><tspan class="st4" v:langid="2052"> </tspan>GBM <tspan class="st4" v:langid="2052">表面以合成</tspan><tspan x="4" dy="1.204em" class="st4" v:langid="2052">渲染帧</tspan></text>		</g>	<g id="shape49-164" v:mid="49" v:groupcontext="shape" transform="translate(1124.59,226.433) rotate(90)">		<title>Sheet.49</title>		<path d="M0 614.62 L141.12 614.62" class="st11"></path>	</g>	<g id="shape50-169" v:mid="50" v:groupcontext="shape" transform="translate(512.854,-298.056)">		<title>Sheet.50</title>		<desc>8. 提交渲染框架以合成到 GPU</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="34.2632" cy="584.456" width="68.53" height="60.319"></v:textrect>		<rect x="0" y="554.297" width="68.5264" height="60.319" class="st14"></rect>		<text x="4" y="567.41" class="st15" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>8. <tspan class="st4" v:langid="2052">提交渲染</tspan><tspan x="4" dy="1.204em" class="st4" v:langid="2052">框架以合成到</tspan><tspan class="st4" v:langid="2052"> </tspan><tspan x="4" dy="1.211em" class="st16">GPU</tspan></text>		</g>	<g id="shape51-176" v:mid="51" v:groupcontext="shape" transform="translate(683.015,-504.729)">		<title>Sheet.51</title>		<desc>9. 发送最终合成缓存以显示 DRM</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="34.2632" cy="593.777" width="68.53" height="41.6777"></v:textrect>		<rect x="0" y="572.938" width="68.5264" height="41.6777" class="st14"></rect>		<text x="4" y="586.05" class="st15" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>9. <tspan class="st4" v:langid="2052">发送最终</tspan><tspan x="4" dy="1.204em" class="st4" v:langid="2052">合成缓存以显</tspan><tspan x="4" dy="1.211em" class="st4" v:langid="2052">示</tspan><tspan class="st16" v:langid="2052"> </tspan> DRM</text>		</g>	<g id="shape53-183" v:mid="53" v:groupcontext="shape" transform="translate(683.015,-298.056)">		<title>Sheet.53</title>		<desc>10. 提交缓存以显示内核</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="34.2632" cy="584.456" width="68.53" height="60.319"></v:textrect>		<rect x="0" y="554.297" width="68.5264" height="60.319" class="st14"></rect>		<text x="4" y="567.41" class="st15" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>10. <tspan class="st4" v:langid="2052">提交缓存</tspan><tspan x="4" dy="1.204em" class="st4" v:langid="2052">以显示内核</tspan></text>		</g>	<g id="shape69-188" v:mid="69" v:groupcontext="shape" transform="translate(768.15,-586.954)">		<title>Sheet.69</title>		<desc>用户空间</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="34.2632" cy="603.194" width="68.53" height="22.8421"></v:textrect>		<rect x="0" y="591.773" width="68.5264" height="22.8421" class="st9"></rect>		<text x="4" y="607.39" class="st10" v:langid="16393"><v:paragraph></v:paragraph><v:tablist></v:tablist>用户空间</text>		</g>	<g id="shape17-191" v:mid="17" v:groupcontext="shape" transform="translate(1296.39,55.3174) rotate(90)">		<title>Sheet.17</title>		<path d="M0 614.62 L96.55 614.62" class="st11"></path>	</g>	<g id="shape27-196" v:mid="27" v:groupcontext="shape" transform="translate(362.539,-222.268)">		<title>Sheet.27</title>		<path d="M0 448.7 L0 614.62 L22.96 614.62" class="st11"></path>	</g>	<g id="shape4-201" v:mid="4" v:groupcontext="shape" transform="translate(426.853,-557.659)">		<title>Rectangle.4</title>		<desc>Weston合成器</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="145.244" cy="594.342" width="290.49" height="40.5468"></v:textrect>		<rect x="0" y="574.069" width="290.487" height="40.5468" rx="2.16" ry="2.16" class="st5"></rect>		<text x="94.96" y="597.99" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Weston<tspan class="st4" v:langid="2052">（</tspan><tspan class="st4" v:langid="2052">合成器</tspan><tspan class="st4" v:langid="2052">）</tspan></text>		</g>	<g id="shape71-207" v:mid="71" v:groupcontext="shape" transform="translate(699.015,-13.7797)">		<title>Sheet.71</title>		<desc>Qualcomm</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="34.2632" cy="605.318" width="68.53" height="18.5953"></v:textrect>		<rect x="0" y="596.02" width="68.5264" height="18.5953" class="st14"></rect>		<text x="4" y="609.02" class="st15" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>Qualcomm</text>		</g>	<g id="shape72-210" v:mid="72" v:groupcontext="shape" transform="translate(784.559,-13.7797)">		<title>Sheet.72</title>		<desc>开源</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="24.3438" cy="605.318" width="48.69" height="18.5953"></v:textrect>		<rect x="0" y="596.02" width="48.6875" height="18.5953" class="st14"></rect>		<text x="4" y="609.02" class="st20" v:langid="16393"><v:paragraph></v:paragraph><v:tablist></v:tablist>开源</text>		</g>	<g id="shape75-213" v:mid="75" v:groupcontext="shape" transform="translate(681.309,-13.8274)">		<title>Sheet.75</title>		<rect v:rectcontext="foreign" x="0" y="596.115" width="18.5" height="18.5" class="st9"></rect>		<switch>			<foreignobject x="0" y="596.115" width="18.5" height="18.5" requiredextensions="http://schemas.microsoft.com/visio/2003/SVGExtensions/">				<v:foreigndata v:orgsize="548" v:data="data:metafile;base64,eNptkLtKA1EQhv/VCF4SiTcQbFIYDMFSbLwQC+2sbOxEMaVY							aBOwXCRFvLyBoLCFRZ7AIkXAN9DORrAQBWtBx2/jhBzEgY9/Zs/MziWSdAxnGenRzK7RN3TxXLJPs/tL6eLLrLC+uSFFmu2T							psjvhxxsyy3z+7ESSR+4a9rXofZUVUFbqumILlUdoNIYZGEQxt2nTMOQV8+yf+Ihj1vOiMcVZ8JrGFFzMO3/Ta1cfu1oMei3							AwueP+95XR3Q/1YMeiz5DjM+R5ODxNwuvckJNLjJA/EN+o6m8zzlYuvyDC+5OjTgLqDFW5uctjUDbiHhLSEnoaZHnbeYnNhW							fKZl11W/w9Vp1GG39m0ppeAOpWCnUZj0XfPu/wBIc3OX"></v:foreigndata>			</foreignobject>			<svg viewbox="1165 -40.992 21.024 20.992" enable-background="new" color-interpolation-filters="sRGB" height="18.5" preserveaspectratio="none" width="18.5" x="0" y="596.115">				<defs>					<clippath id="1-mfid13">						<rect id="1-mfid14" x="1165" y="-40.992" width="21.024" height="20.992"></rect>					</clippath>				</defs>				<g clip-path="url(#1-mfid13)">					<defs>						<g id="1-mfid15">							<path transform="matrix(0.33333, 0, 0, 0.33333, 0, 0)" d="M3502,-124 C3550,-124 3550,-124 3550,-124 C3555,-124 3558,-120 3558,-116 C3558,-68 3558,-68 3558,-68 C3558,-64 3555,-60 3550,-60 C3502,-60 3502,-60 3502,-60 C3498,-60 3494,-64 3494,-68 C3494,-116 3494,-116 3494,-116 C3494,-120 3498,-124 3502,-124 Z"></path>						</g>					</defs>					<g transform="matrix(0.33333, 0, 0, 0.33333, 0, 0)">						<g stroke-width="2.557" stroke="none" fill="#2a2aea">							<use xlink:href="#1-mfid15" transform="matrix(3, -0, -0, 3, -0, 0)" stroke="none"></use>						</g>					</g>				</g>			</svg>		</switch>		<rect v:rectcontext="foreign" x="0" y="596.115" width="18.5" height="18.5" class="st9"></rect>	</g>	<g id="shape76-216" v:mid="76" v:groupcontext="shape" transform="translate(766.699,-13.8274)">		<title>Sheet.76</title>		<rect v:rectcontext="foreign" x="0" y="596.115" width="18.5" height="18.5" class="st9"></rect>		<switch>			<foreignobject x="0" y="596.115" width="18.5" height="18.5" requiredextensions="http://schemas.microsoft.com/visio/2003/SVGExtensions/">				<v:foreigndata v:orgsize="548" v:data="data:metafile;base64,eNptkM9KQlEQxr9bCf2xrlZG0MZFopDLdlrYhVwIrdq0iySX							0UIXGkERh3AR9AZF79HChc9QL1HgOrDpu7dPPEQDP74zZ2bOmZkAQIdspIB3M9uhflBHT4B9md2+AI9js/zhUR0IsD0D5Jg/							S5bJCWRzv5e1ABjxeIBzXKKJFvI4Rg9t/tLCBRXIkjSZJ6s6swyLJIOppf/4C/IHYkl+Tayphi2iSDb1bmJdl0jB+++U7Cq/							rLSJpvC/Fbw/KpphS300QsBxd/FOrkmOj7zRL1M/qXE/V6GzCTfkLuyTB/LqMWBsyJyhNTzqJGIsYk7Emil9xhxznO2pp6p0							X3t4vg8SznrfFlPy9lDyZloh65o1o/MPYrlofw=="></v:foreigndata>			</foreignobject>			<svg viewbox="1302 -40.992 20.992 20.992" enable-background="new" color-interpolation-filters="sRGB" height="18.5" preserveaspectratio="none" width="18.5" x="0" y="596.115">				<defs>					<clippath id="1-mfid16">						<rect id="1-mfid17" x="1302" y="-40.992" width="20.992" height="20.992"></rect>					</clippath>				</defs>				<g clip-path="url(#1-mfid16)">					<defs>						<g id="1-mfid18">							<path transform="matrix(0.33333, 0, 0, 0.33333, 0, 0)" d="M3914,-124 C3962,-124 3962,-124 3962,-124 C3967,-124 3970,-120 3970,-116 C3970,-68 3970,-68 3970,-68 C3970,-64 3967,-60 3962,-60 C3914,-60 3914,-60 3914,-60 C3910,-60 3906,-64 3906,-68 C3906,-116 3906,-116 3906,-116 C3906,-120 3910,-124 3914,-124 Z"></path>						</g>					</defs>					<g transform="matrix(0.33333, 0, 0, 0.33333, 0, 0)">						<g stroke-width="2.5531" stroke="none" fill="#007884">							<use xlink:href="#1-mfid18" transform="matrix(3, -0, -0, 3, -0, 0)" stroke="none"></use>						</g>					</g>				</g>			</svg>		</switch>		<rect v:rectcontext="foreign" x="0" y="596.115" width="18.5" height="18.5" class="st9"></rect>	</g></g>
</svg>

**图：图形子系统架构**

**Adreno GPU 驱动程序**

Qualcomm Adreno GPU 驱动程序是用户模式预编译库和固件的集合。Adreno GPU 驱动程序无法修改，必须按原样使用。

Note

要使用 Adreno GPU 支持的所有功能，请确保表：[GPU 固件文件](https://docs.qualcomm.com/doc/80-70020-19SC/topic/graphics-overview.html#table-qkn-4bc-ybc)和表：[GPU 驱动程序库](https://docs.qualcomm.com/doc/80-70020-19SC/topic/graphics-overview.html#table-j3s-gl3-kcc)中列出的文件已分别存在于设备上的 `/lib/firmware/` 和 `/usr/lib/` 目录中。

**Adreno GPU 固件**

下表列出了 Adreno GPU 硬件的固件文件：

> 
> 
> 表：GPU 固件文件
> 
> 
> | **说明** | QCS5430/QCS6490 firmware | Qualcomm Dragonwing ^™^ IQ-8275 固件 | Qualcomm Dragonwing ^™^ IQ-9075 固件 |
> | --- | --- | --- | --- |
> | 命令处理器的微代码 | a660\_sqe.fw | a650\_sqe.fw | a660\_sqe.fw |
> | 实现安全内容支持的微代码 | a660\_zap | a623\_zap | a663\_zap |
> | 用于图形管理单元 (GMU) 的微代码 | a660\_gmu.bin | a663\_gmu.bin | a663\_gmu.bin |

**内核图形支持层 (KGSL)**

KGSL 是 Adreno GPU 的内核模式驱动程序。KGSL 驱动程序的主要功能是将 Adreno 用户模式驱动程序生成的命令提交给 Adreno GPU 进行处理。此外，KGSL 驱动程序与 GMU 通信以确保正确的状态管理。

下表列出了支持的 GPU 库和 KGSL 驱动程序。

> 
> 
> **表：GPU 库和 KGSL 驱动程序**
> 
> 
> 
> 
> 
> | Adreno GPU 库 | KGSL 驱动程序 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
> | <table class="docutils align-default"><colgroup><col style="width: 35.7%"><col style="width: 64.3%"></colgroup><thead><tr class="row-odd"><th class="head"><p>库</p></th><th class="head"><p>说明</p></th></tr></thead><tbody><tr class="row-even"><td><p>libCB.so.1</p></td><td><p>GPU 计算驱动程序</p></td></tr><tr class="row-odd"><td><p>libEGL_adreno.so.1</p></td><td><p>EGL 1.x 驱动程序</p></td></tr><tr class="row-even"><td><p>libeglSubDriverWayland.so.1</p></td><td><p>适用于 Wayland 子系统的 EGL 驱动程序</p></td></tr><tr class="row-odd"><td><p>libadreno_utils.so.1</p></td><td><p>Adreno GPU 驱动程序的工具库</p></td></tr><tr class="row-even"><td><p>libgsl.so.1</p></td><td><p>GSL 库</p></td></tr><tr class="row-odd"><td><p>libq3dtools_adreno.so.1</p></td><td><p>Adreno Profiler 支持层</p></td></tr><tr class="row-even"><td><p>libGLESv1_CM_adreno.so.1</p></td><td><p>OpenGL ES 1.x 驱动程序</p></td></tr><tr class="row-odd"><td><p>libGLESv2_adreno.so.2</p></td><td><p>OpenGL ES 2.x/3.x 驱动程序</p></td></tr><tr class="row-even"><td><p>libq3dtools_esx.so.1</p></td><td><p>OpenGL ES Profiler 支持层</p></td></tr><tr class="row-odd"><td><p>libOpenCL.so.1</p></td><td><p>OpenCL 库</p></td></tr><tr class="row-even"><td><p>libOpenCL_adreno.so.1</p></td><td><p>Adreno GPU 的 OpenCL 库</p></td></tr><tr class="row-odd"><td><p>libllvm-qcom.so.1</p></td><td><p>OpenCL 编译器库</p></td></tr><tr class="row-even"><td><p>libvulkan_adreno.so.1</p></td><td><p>Vulkan 1.x 驱动程序</p></td></tr><tr class="row-odd"><td><p>libllvm-glnext.so.1</p></td><td><p>OpenGL ES 和 Vulkan 程序二进制文件加载程序</p></td></tr><tr class="row-even"><td><p>libllvm-qgl.so.1</p></td><td><p>OpenGL ES 和 Vulkan 核心编译器库</p></td></tr></tbody></table> | 库 | 说明 | libCB.so.1 | GPU 计算驱动程序 | libEGL\_adreno.so.1 | EGL 1.x 驱动程序 | libeglSubDriverWayland.so.1 | 适用于 Wayland 子系统的 EGL 驱动程序 | libadreno\_utils.so.1 | Adreno GPU 驱动程序的工具库 | libgsl.so.1 | GSL 库 | libq3dtools\_adreno.so.1 | Adreno Profiler 支持层 | libGLESv1\_CM\_adreno.so.1 | OpenGL ES 1.x 驱动程序 | libGLESv2\_adreno.so.2 | OpenGL ES 2.x/3.x 驱动程序 | libq3dtools\_esx.so.1 | OpenGL ES Profiler 支持层 | libOpenCL.so.1 | OpenCL 库 | libOpenCL\_adreno.so.1 | Adreno GPU 的 OpenCL 库 | libllvm-qcom.so.1 | OpenCL 编译器库 | libvulkan\_adreno.so.1 | Vulkan 1.x 驱动程序 | libllvm-glnext.so.1 | OpenGL ES 和 Vulkan 程序二进制文件加载程序 | libllvm-qgl.so.1 | OpenGL ES 和 Vulkan 核心编译器库 | <table class="docutils align-default"><colgroup><col style="width: 19.6%"><col style="width: 78.4%"><col style="width: 2.0%"></colgroup><tbody><tr class="row-odd"><td><p><strong>Linux 内核</strong></p></td><td colspan="2"><p>6.6</p></td></tr><tr class="row-even"><td><p><strong>源代码路径</strong></p></td><td colspan="2"><p><code class="file docutils literal notranslate"><span class="pre">&lt;root_dir&gt;/source/graphics-kernel/</span></code></p></td></tr><tr class="row-odd"><td colspan="3"><p> <strong>GPU DTSI 文件</strong></p></td></tr><tr class="row-even"><td><p><strong>QCS5430</strong></p></td><td colspan="2"><ul class="simple"><li><p><code class="file docutils literal notranslate"><span class="pre">&lt;root_dir&gt;/source/graphics-devicetree/gpu/qcs5430-graphics.dtsi</span></code></p></li><li><p><code class="file docutils literal notranslate"><span class="pre">&lt;root_dir&gt;/source/graphics-devicetree/gpu/qcs5430-graphics-pwrlevels.dtsi</span></code></p></li></ul></td></tr><tr class="row-odd"><td><p><strong>QCS6490</strong></p></td><td colspan="2"><ul class="simple"><li><p><code class="file docutils literal notranslate"><span class="pre">&lt;root_dir&gt;/source/graphics-devicetree/gpu/qcm6490-graphics.dtsi</span></code></p></li><li><p><code class="file docutils literal notranslate"><span class="pre">&lt;root_dir&gt;/source/graphics-devicetree/gpu/qcm6490-graphics-pwrlevels.dtsi</span></code></p></li></ul></td></tr><tr class="row-even"><td><p><strong>Dragonwing IQ-8275</strong></p></td><td colspan="2"><p><code class="file docutils literal notranslate"><span class="pre">&lt;root_dir&gt;/source/graphics-devicetree/gpu/qcs8300-graphics.dtsi</span></code></p></td></tr><tr class="row-odd"><td><p><strong>Dragonwing IQ-9075</strong></p></td><td colspan="2"><p><code class="file docutils literal notranslate"><span class="pre">&lt;root_dir&gt;/source/graphics-devicetree/gpu/qcs9075-graphics.dtsi</span></code></p></td></tr></tbody></table> | **Linux 内核** | 6.6 | 6.6 | **源代码路径** | `<root_dir>/source/graphics-kernel/` | `<root_dir>/source/graphics-kernel/` | **GPU DTSI 文件** | **GPU DTSI 文件** | **GPU DTSI 文件** | **QCS5430** | <ul class="simple"><br><li><p><code class="file docutils literal notranslate"><span class="pre">&lt;root_dir&gt;/source/graphics-devicetree/gpu/qcs5430-graphics.dtsi</span></code></p></li><br><li><p><code class="file docutils literal notranslate"><span class="pre">&lt;root_dir&gt;/source/graphics-devicetree/gpu/qcs5430-graphics-pwrlevels.dtsi</span></code></p></li><br></ul> | <ul class="simple"><br><li><p><code class="file docutils literal notranslate"><span class="pre">&lt;root_dir&gt;/source/graphics-devicetree/gpu/qcs5430-graphics.dtsi</span></code></p></li><br><li><p><code class="file docutils literal notranslate"><span class="pre">&lt;root_dir&gt;/source/graphics-devicetree/gpu/qcs5430-graphics-pwrlevels.dtsi</span></code></p></li><br></ul> | **QCS6490** | <ul class="simple"><br><li><p><code class="file docutils literal notranslate"><span class="pre">&lt;root_dir&gt;/source/graphics-devicetree/gpu/qcm6490-graphics.dtsi</span></code></p></li><br><li><p><code class="file docutils literal notranslate"><span class="pre">&lt;root_dir&gt;/source/graphics-devicetree/gpu/qcm6490-graphics-pwrlevels.dtsi</span></code></p></li><br></ul> | <ul class="simple"><br><li><p><code class="file docutils literal notranslate"><span class="pre">&lt;root_dir&gt;/source/graphics-devicetree/gpu/qcm6490-graphics.dtsi</span></code></p></li><br><li><p><code class="file docutils literal notranslate"><span class="pre">&lt;root_dir&gt;/source/graphics-devicetree/gpu/qcm6490-graphics-pwrlevels.dtsi</span></code></p></li><br></ul> | **Dragonwing IQ-8275** | `<root_dir>/source/graphics-devicetree/gpu/qcs8300-graphics.dtsi` | `<root_dir>/source/graphics-devicetree/gpu/qcs8300-graphics.dtsi` | **Dragonwing IQ-9075** | `<root_dir>/source/graphics-devicetree/gpu/qcs9075-graphics.dtsi` | `<root_dir>/source/graphics-devicetree/gpu/qcs9075-graphics.dtsi` |
> | 库 | 说明 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libCB.so.1 | GPU 计算驱动程序 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libEGL\_adreno.so.1 | EGL 1.x 驱动程序 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libeglSubDriverWayland.so.1 | 适用于 Wayland 子系统的 EGL 驱动程序 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libadreno\_utils.so.1 | Adreno GPU 驱动程序的工具库 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libgsl.so.1 | GSL 库 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libq3dtools\_adreno.so.1 | Adreno Profiler 支持层 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libGLESv1\_CM\_adreno.so.1 | OpenGL ES 1.x 驱动程序 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libGLESv2\_adreno.so.2 | OpenGL ES 2.x/3.x 驱动程序 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libq3dtools\_esx.so.1 | OpenGL ES Profiler 支持层 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libOpenCL.so.1 | OpenCL 库 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libOpenCL\_adreno.so.1 | Adreno GPU 的 OpenCL 库 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libllvm-qcom.so.1 | OpenCL 编译器库 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libvulkan\_adreno.so.1 | Vulkan 1.x 驱动程序 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libllvm-glnext.so.1 | OpenGL ES 和 Vulkan 程序二进制文件加载程序 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libllvm-qgl.so.1 | OpenGL ES 和 Vulkan 核心编译器库 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | **Linux 内核** | 6.6 | 6.6 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | **源代码路径** | `<root_dir>/source/graphics-kernel/` | `<root_dir>/source/graphics-kernel/` |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | **GPU DTSI 文件** | **GPU DTSI 文件** | **GPU DTSI 文件** |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | **QCS5430** | <ul class="simple"><br><li><p><code class="file docutils literal notranslate"><span class="pre">&lt;root_dir&gt;/source/graphics-devicetree/gpu/qcs5430-graphics.dtsi</span></code></p></li><br><li><p><code class="file docutils literal notranslate"><span class="pre">&lt;root_dir&gt;/source/graphics-devicetree/gpu/qcs5430-graphics-pwrlevels.dtsi</span></code></p></li><br></ul> | <ul class="simple"><br><li><p><code class="file docutils literal notranslate"><span class="pre">&lt;root_dir&gt;/source/graphics-devicetree/gpu/qcs5430-graphics.dtsi</span></code></p></li><br><li><p><code class="file docutils literal notranslate"><span class="pre">&lt;root_dir&gt;/source/graphics-devicetree/gpu/qcs5430-graphics-pwrlevels.dtsi</span></code></p></li><br></ul> |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | **QCS6490** | <ul class="simple"><br><li><p><code class="file docutils literal notranslate"><span class="pre">&lt;root_dir&gt;/source/graphics-devicetree/gpu/qcm6490-graphics.dtsi</span></code></p></li><br><li><p><code class="file docutils literal notranslate"><span class="pre">&lt;root_dir&gt;/source/graphics-devicetree/gpu/qcm6490-graphics-pwrlevels.dtsi</span></code></p></li><br></ul> | <ul class="simple"><br><li><p><code class="file docutils literal notranslate"><span class="pre">&lt;root_dir&gt;/source/graphics-devicetree/gpu/qcm6490-graphics.dtsi</span></code></p></li><br><li><p><code class="file docutils literal notranslate"><span class="pre">&lt;root_dir&gt;/source/graphics-devicetree/gpu/qcm6490-graphics-pwrlevels.dtsi</span></code></p></li><br></ul> |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | **Dragonwing IQ-8275** | `<root_dir>/source/graphics-devicetree/gpu/qcs8300-graphics.dtsi` | `<root_dir>/source/graphics-devicetree/gpu/qcs8300-graphics.dtsi` |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | **Dragonwing IQ-9075** | `<root_dir>/source/graphics-devicetree/gpu/qcs9075-graphics.dtsi` | `<root_dir>/source/graphics-devicetree/gpu/qcs9075-graphics.dtsi` |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |

## Adreno GPU 规格

下表列出了 Adreno GPU 的规格：

| 芯片组 | QCS5430 | QCS6490 | Dragonwing IQ-8275 | Dragonwing IQ-9075 |
| --- | --- | --- | --- | --- |
| **GPU** | Adreno GPU 642L | Adreno GPU 643 | Adreno GPU 623 | Adreno GPU 663 |
| **GPU 时钟** | 315 MHz | 812 MHz | 877 MHz | 800 MHz |
| **片上内存 (GMEM)** | 512 kB | 512 kB | 512 kB | 1.5 MB |

要查找 GPU 信息，请在设备上使用 SSH 运行以下命令：

cat /sys/class/kgsl/kgsl-3d0/gpu_model
    Copy to clipboard

关于 Adreno GPU 的一般信息，请参阅 [Game Developer Guide](https://docs.qualcomm.com/bundle/publicresource/topics/80-78185-2/gpu.html)。

## 后续步骤

- [编译并运行基于 OpenGL ES 的应用程序](https://docs.qualcomm.com/doc/80-70020-19SC/topic/graphics-getting-started.html#compile-opengles-sample-application-glmark2)
- [编译并运行基于 OpenCL 的应用程序](https://docs.qualcomm.com/doc/80-70020-19SC/topic/graphics-getting-started.html#opencl-sample-applications)
- [编译并运行基于 Vulkan 的应用程序](https://docs.qualcomm.com/doc/80-70020-19SC/topic/graphics-getting-started.html#vulkan-sample-applications)
- [编译并运行基于 X11 的应用程序](https://docs.qualcomm.com/doc/80-70020-19SC/topic/graphics-getting-started.html#x11-sample-applications)

Last Published: Jul 24, 2025

[Previous Topic
图形文档](https://docs.qualcomm.com/bundle/publicresource/80-70020-19SC/topics/graphics-home-page.md) [Next Topic
运行示例应用程序](https://docs.qualcomm.com/bundle/publicresource/80-70020-19SC/topics/graphics-getting-started.md)

Source: [https://docs.qualcomm.com/doc/80-70020-19SC/topic/graphics-overview.html](https://docs.qualcomm.com/doc/80-70020-19SC/topic/graphics-overview.html)