# 概述

图形子系统由Qualcomm^®^ Adreno^™^ GPU提供支持，其提供以下功能：

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

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-70017-115/soc.html)。

## 架构

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

<!-- 由 Microsoft Visio, SVG Export 生成 Graphics-driver.svg Graphics-driver -->
<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="12.2821in" height="9.02591in" viewbox="0 0 884.311 649.866" xml:space="preserve" color-interpolation-filters="sRGB" class="st25"><v:documentproperties v:langid="2052">	<v:userdefs>		<v:ud v:nameu="msvNoAutoConnect" v:val="VT0(1):26"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-1 .st1 { fill: #f7f8fa; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.749998 }
.svg-1 .st2 { fill: #3253dc; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.999998 }
.svg-1 .st3 { fill: #ffffff; font-family: Arial; font-size: 1.16666em }
.svg-1 .st4 { font-family: SimHei; font-size: 1em }
.svg-1 .st5 { fill: #acbacf; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.999998 }
.svg-1 .st6 { fill: #000000; font-family: Arial; font-size: 1.00001em }
.svg-1 .st7 { fill: #ffffff; font-family: Arial; font-size: 1.00001em }
.svg-1 .st8 { fill: #ffffff; font-family: SimHei; font-size: 1.00001em }
.svg-1 .st9 { fill: #000000; font-family: SimHei; font-size: 1.00001em }
.svg-1 .st10 { fill: none }
.svg-1 .st11 { stroke: #000000; stroke-dasharray: 14, 9.99998; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-1 .st12 { fill: none; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.749998 }
.svg-1 .st13 { fill: #000000; font-family: SimHei; font-size: 1.00001em; font-weight: bold }
.svg-1 .st14 { marker-end: url("#mrkr5-64"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5 }
.svg-1 .st15 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.31645525590489 }
.svg-1 .st16 { marker-end: url("#mrkr5-64"); marker-start: url("#mrkr5-96"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5 }
.svg-1 .st17 { fill: #000000; font-family: Arial; font-size: 0.833336em }
.svg-1 .st18 { font-size: 1em }
.svg-1 .st19 { marker-end: url("#mrkr5-147"); marker-start: url("#mrkr5-145"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.999998 }
.svg-1 .st20 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.23584868976097 }
.svg-1 .st21 { fill: #f7f8fa; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5 }
.svg-1 .st22 { marker-start: url("#mrkr5-96"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5 }
.svg-1 .st23 { marker-end: url("#mrkr5-168"); stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5 }
.svg-1 .st24 { fill: #ffffff; fill-opacity: 1; stroke: #ffffff; stroke-opacity: 1; stroke-width: 0.37313385224907 }
.svg-1 .st25 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<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-64" class="st15" v:arrowtype="5" v:arrowsize="3" v:setback="0" refx="-0" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(-3.1600043966423,-3.1600043966423) "></use>	</marker>	<marker id="mrkr5-96" class="st15" v:arrowtype="5" v:arrowsize="3" v:setback="0" refx="0" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(3.1600043966423) "></use>	</marker>	<marker id="mrkr5-145" class="st20" v:arrowtype="5" v:arrowsize="3" v:setback="0" refx="0" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(4.2400065949634) "></use>	</marker>	<marker id="mrkr5-147" class="st20" v:arrowtype="5" v:arrowsize="3" v:setback="0" refx="-0" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(-4.2400065949634,-4.2400065949634) "></use>	</marker>	<marker id="mrkr5-168" class="st24" v:arrowtype="5" v:arrowsize="2" v:setback="4.69001" refx="-4.6900059843186" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(-2.6800034196107,-2.6800034196107) "></use>	</marker></defs><g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<title>Graphics-driver</title>	<v:pageproperties v:drawingscale="0.0138889" v:pagescale="0.0138889" v:drawingunits="29" v:shadowoffsetx="8.99998" v:shadowoffsety="-8.99998"></v:pageproperties>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="group1-1" transform="translate(27.6874,-18.3759)" v:mid="1" v:groupcontext="group">		<title>group66-1</title>		<g id="shape2-2" v:mid="2" v:groupcontext="shape">			<title>shape54-2</title>			<rect x="0" y="36.7518" width="836.623" height="613.114" class="st1"></rect>		</g>	</g>	<g id="shape3-4" v:mid="3" v:groupcontext="shape" transform="translate(348.062,-405.806)">		<title>shape1-4</title>		<desc>Adreno GPU driver</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)"></v:textblock>		<v:textrect cx="153" cy="604.18" width="306" height="91.3684"></v:textrect>		<rect x="0" y="558.497" width="305.999" height="91.3684" class="st2"></rect>		<text x="83.76" y="608.73" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Adreno DPU <tspan class="st4">驱动程序</tspan></text>		</g>	<g id="shape4-8" v:mid="4" v:groupcontext="shape" transform="translate(297.842,-574.649)">		<title>shape3-7</title>		<desc>Wayland client</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)"></v:textblock>		<v:textrect cx="70.2699" cy="629.026" width="140.55" height="41.6776"></v:textrect>		<rect x="0" y="608.188" width="140.54" height="41.6776" class="st5"></rect>		<text x="27.26" y="632.93" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Wayland <tspan class="st4">客户端</tspan></text>		</g>	<g id="shape5-12" v:mid="5" v:groupcontext="shape" transform="translate(453.574,-575.283)">		<title>shape4-10</title>		<desc>Weston (Compositor)</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)"></v:textblock>		<v:textrect cx="145.244" cy="629.591" width="290.49" height="40.5467"></v:textrect>		<rect x="0" y="609.319" width="290.486" height="40.5467" class="st5"></rect>		<text x="94.9" y="633.49" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Weston<tspan class="st4">（</tspan><tspan class="st4">合成器</tspan><tspan class="st4">）</tspan></text>		</g>	<g id="shape6-18" v:mid="6" v:groupcontext="shape" transform="translate(420.262,-217.865)">		<title>shape5-13</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(3.99999,3.99999,3.99999,3.99999)"></v:textblock>		<v:textrect cx="68.5263" cy="630.473" width="137.06" height="38.7833"></v:textrect>		<rect x="0" y="611.082" width="137.053" height="38.7833" class="st2"></rect>		<text x="26.85" y="634.37" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>KGSL <tspan class="st4">驱动程序</tspan></text>		</g>	<g id="shape7-22" v:mid="7" v:groupcontext="shape" transform="translate(643.009,-221.097)">		<title>shape6-16</title>		<desc>Display Kernel driver</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)"></v:textblock>		<v:textrect cx="68.5263" cy="630.473" width="137.06" height="38.7833"></v:textrect>		<rect x="0" y="611.082" width="137.053" height="38.7833" class="st2"></rect>		<text x="20.53" y="634.37" class="st8" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>显示内核驱动程序</text>		</g>	<g id="shape8-25" v:mid="8" v:groupcontext="shape" transform="translate(636.666,-353.778)">		<title>shape7-19</title>		<desc>Drm-backend (display)</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)"></v:textblock>		<v:textrect cx="70.2699" cy="629.026" width="140.55" height="41.6776"></v:textrect>		<rect x="0" y="608.188" width="140.54" height="41.6776" class="st5"></rect>		<text x="7.92" y="632.93" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>DRM-backend<tspan class="st4">（</tspan><tspan class="st4">显示</tspan><tspan class="st4">）</tspan></text>		</g>	<g id="shape9-31" v:mid="9" v:groupcontext="shape" transform="translate(61.5641,-410.882)">		<title>shape8-22</title>		<desc>Graphics buffer management</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)"></v:textblock>		<v:textrect cx="66.8579" cy="629.026" width="133.72" height="41.6776"></v:textrect>		<rect x="0" y="608.188" width="133.716" height="41.6776" class="st5"></rect>		<text x="24.86" y="632.93" class="st9" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>图形缓冲区管理</text>		</g>	<g id="shape10-34" v:mid="10" v:groupcontext="shape" transform="translate(60.5147,-462.738)">		<title>shape9-26</title>		<desc>Wayland protocol</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)"></v:textblock>		<v:textrect cx="67.3826" cy="629.026" width="134.77" height="41.6776"></v:textrect>		<rect x="0" y="608.188" width="134.765" height="41.6776" class="st5"></rect>		<text x="30.37" y="632.93" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Wayland <tspan class="st4">协议</tspan></text>		</g>	<g id="shape11-38" v:mid="11" v:groupcontext="shape" v:layermember="0" transform="translate(51.0624,-285.573)">		<title>shape10-29</title>		<path d="M0 649.87 L796.5 649.87 L0 649.87 Z" class="st10"></path>		<path d="M0 649.87 L796.5 649.87" class="st11"></path>	</g>	<g id="shape12-41" v:mid="12" v:groupcontext="shape" v:layermember="0" transform="translate(53.2581,-176.537)">		<title>shape11-32</title>		<path d="M0 649.87 L791.34 649.87 L0 649.87 Z" class="st10"></path>		<path d="M0 649.87 L791.34 649.87" class="st11"></path>	</g>	<g id="shape13-44" v:mid="13" v:groupcontext="shape" transform="translate(420.262,-101.078)">		<title>shape12-35</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(3.99999,3.99999,3.99999,3.99999)"></v:textblock>		<v:textrect cx="68.5263" cy="630.473" width="137.06" height="38.7833"></v:textrect>		<rect x="0" y="611.082" width="137.053" height="38.7833" class="st2"></rect>		<text x="34.51" y="634.07" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Adreno GPU</text>		</g>	<g id="shape14-47" v:mid="14" v:groupcontext="shape" transform="translate(643.009,-101.078)">		<title>shape13-38</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(3.99999,3.99999,3.99999,3.99999)"></v:textblock>		<v:textrect cx="68.5263" cy="630.473" width="137.06" height="38.7833"></v:textrect>		<rect x="0" y="611.082" width="137.053" height="38.7833" class="st2"></rect>		<text x="34.84" y="634.07" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Adreno DPU</text>		</g>	<g id="shape15-50" v:mid="15" v:groupcontext="shape" transform="translate(789.936,-146.079)">		<title>shape14-41</title>		<desc>Hardware</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)"></v:textblock>		<v:textrect cx="34.2631" cy="638.444" width="68.53" height="22.8421"></v:textrect>		<rect x="0" y="627.023" width="68.5263" height="22.8421" class="st12"></rect>		<text x="4" y="642.34" class="st13" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>硬件</text>		</g>	<g id="shape16-53" v:mid="16" v:groupcontext="shape" transform="translate(786.659,-260.657)">		<title>shape15-44</title>		<desc>Kernel</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)"></v:textblock>		<v:textrect cx="34.2631" cy="638.444" width="68.53" height="22.8421"></v:textrect>		<rect x="0" y="627.023" width="68.5263" height="22.8421" class="st12"></rect>		<text x="4" y="642.34" class="st13" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>内核</text>		</g>	<g id="shape17-56" v:mid="17" v:groupcontext="shape" transform="translate(785.436,-294.235)">		<title>shape16-47</title>		<desc>User space</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)"></v:textblock>		<v:textrect cx="40.2499" cy="638.444" width="80.51" height="22.8421"></v:textrect>		<rect x="0" y="627.023" width="80.4998" height="22.8421" class="st12"></rect>		<text x="4" y="642.34" class="st13" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>用户空间</text>		</g>	<g id="shape18-59" v:mid="18" v:groupcontext="shape" transform="translate(1357.91,78.6484) rotate(90.3585)">		<title>shape17-50</title>		<path d="M0 649.87 L171.54 649.87 L179.83 649.87" class="st14"></path>	</g>	<g id="shape19-65" v:mid="19" v:groupcontext="shape" transform="translate(1361.39,296.088) rotate(90)">		<title>shape18-56</title>		<path d="M0 649.87 L85.6 649.87 L93.89 649.87" class="st14"></path>	</g>	<g id="shape20-70" v:mid="20" v:groupcontext="shape" transform="translate(1361.39,428.769) rotate(90)">		<title>shape19-61</title>		<path d="M0 649.87 L72.94 649.87 L81.23 649.87" class="st14"></path>	</g>	<g id="shape21-75" v:mid="21" v:groupcontext="shape" transform="translate(1138.64,432.001) rotate(90)">		<title>shape23-66</title>		<path d="M0 649.87 L69.71 649.87 L78 649.87" class="st14"></path>	</g>	<g id="shape22-80" v:mid="22" v:groupcontext="shape" transform="translate(1017.97,75.2164) rotate(90)">		<title>shape26-71</title>		<path d="M0 649.87 L69.18 649.87 L77.47 649.87" class="st14"></path>	</g>	<g id="shape23-85" v:mid="23" v:groupcontext="shape" transform="translate(389.26,-239.888)">		<title>shape27-76</title>		<path d="M0 483.95 L0 649.87 L22.71 649.87 L31 649.87" class="st14"></path>	</g>	<g id="shape24-90" v:mid="24" v:groupcontext="shape" transform="translate(194.655,-480.832)">		<title>shape29-81</title>		<path d="M0 649.87 L7.93 649.87 L8.29 649.87 L144.44 649.87 L152.74 649.87" class="st16"></path>	</g>	<g id="shape25-98" v:mid="25" v:groupcontext="shape" transform="translate(1137.42,74.5769) rotate(90)">		<title>shape30-89</title>		<path d="M0 649.87 L7.93 649.87 L8.29 649.87 L69.81 649.87 L78.11 649.87" class="st16"></path>	</g>	<g id="shape26-105" v:mid="26" v:groupcontext="shape" transform="translate(324.388,-534.188)">		<title>shape31-96</title>		<desc>1. Application calls EGL/OpenGL ES</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)"></v:textblock>		<v:textrect cx="51.3947" cy="636.506" width="102.79" height="26.7174"></v:textrect>		<rect x="0" y="623.148" width="102.79" height="26.7174" class="st1"></rect>		<text x="4" y="633.76" class="st17" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>1.<tspan class="st18" v:langid="2052"> </tspan><tspan class="st4">应用程序调用</tspan> <tspan x="4" dy="1.225em" class="st18">EGL</tspan>/OpenGL ES</text>		</g>	<g id="shape27-111" v:mid="27" v:groupcontext="shape" transform="translate(210.066,-486.729)">		<title>shape35-100</title>		<desc>2. When rendering, sets registry and callbacks</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)"></v:textblock>		<v:textrect cx="61.0709" cy="636.506" width="122.15" height="26.7174"></v:textrect>		<rect x="0" y="623.148" width="122.142" height="26.7174" class="st1"></rect>		<text x="4" y="633.26" class="st17" v:langid="2052"><v:paragraph></v:paragraph><v:tablist></v:tablist>2. <tspan class="st4">渲染时</tspan><tspan class="st4">，</tspan><tspan class="st4">设置注册表和</tspan><tspan x="4" dy="1.3em" class="st4">回调</tspan></text>		</g>	<g id="shape28-118" v:mid="28" v:groupcontext="shape" transform="translate(214.348,-436.328)">		<title>shape39-104</title>		<desc>3. Gets Wayland backbuffer for rendering</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)"></v:textblock>		<v:textrect cx="61.0709" cy="632.733" width="122.15" height="34.2631"></v:textrect>		<rect x="0" y="615.602" width="122.142" height="34.2631" class="st1"></rect>		<text x="4" y="629.48" class="st17" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>3.<tspan class="st18" v:langid="2052"> </tspan><tspan class="st4">获取</tspan> Wayland <tspan x="4" dy="1.3em" class="st4">后缓冲区以进行渲染</tspan></text>		</g>	<g id="shape29-124" v:mid="29" v:groupcontext="shape" transform="translate(324.919,-317.078)">		<title>shape41-108</title>		<desc>4. Submits to KGSL using swapbuffer/glflush/glfinish to rende...</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)"></v:textblock>		<v:textrect cx="82.5403" cy="629.026" width="165.09" height="41.6776"></v:textrect>		<rect x="0" y="608.188" width="165.081" height="41.6776" class="st1"></rect>		<text x="4" y="619.27" class="st17" v:langid="2052"><v:paragraph></v:paragraph><v:tablist></v:tablist>4. <tspan class="st4">使用</tspan> swapbuffer/glflush/glfinish <tspan x="4" dy="1.3em" class="st4">提交到</tspan> KGSL<tspan class="st4">，</tspan><tspan class="st4">以通过</tspan> OpenGL ES <tspan x="4" dy="1.3em" class="st4">进行渲染</tspan></text>		</g>	<g id="shape30-132" v:mid="30" v:groupcontext="shape" transform="translate(194.87,-439.431)">		<title>shape42-113</title>		<path d="M0 649.87 L7.93 649.87 L8.29 649.87 L144.44 649.87 L152.74 649.87" class="st16"></path>	</g>	<g id="shape31-139" v:mid="31" v:groupcontext="shape" transform="translate(1255.98,74.5819) rotate(90)">		<title>shape43-120</title>		<path d="M0 649.87 L7.06 649.87 L7.42 649.87 L70.69 649.87 L78.11 649.87" class="st19"></path>	</g>	<g id="shape32-148" v:mid="32" v:groupcontext="shape" transform="translate(433.562,-515.077)">		<title>shape44-129</title>		<desc>5. EGL/Commit render surface to Wayland</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)"></v:textblock>		<v:textrect cx="43.2189" cy="636.506" width="86.44" height="26.7174"></v:textrect>		<rect x="0" y="623.148" width="86.4379" height="26.7174" class="st1"></rect>		<text x="4" y="627" class="st17" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>5. EGL/Commit <tspan x="4" dy="1.275em" class="st4">将</tspan> surface <tspan class="st4">渲染到</tspan> <tspan x="4" dy="1.225em" class="st18">Wayland</tspan></text>		</g>	<g id="shape33-154" v:mid="33" v:groupcontext="shape" transform="translate(546.062,-536.893)">		<title>shape45-133</title>		<desc>6. Sends rendered surfaces for composition</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)"></v:textblock>		<v:textrect cx="61.0709" cy="638.272" width="122.15" height="23.1839"></v:textrect>		<rect x="0" y="626.682" width="122.142" height="23.1839" class="st21"></rect>		<text x="4" y="635.02" class="st17" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>6. <tspan class="st4">发送渲染后的</tspan> surface <tspan x="4" dy="1.3em" class="st4">进行合成</tspan></text>		</g>	<g id="shape34-159" v:mid="34" v:groupcontext="shape" transform="translate(195.275,-416.589)">		<title>shape46-137</title>		<path d="M0 649.87 L7.93 649.87 L8.29 649.87 L152.16 649.87" class="st22"></path>	</g>	<g id="shape35-164" v:mid="35" v:groupcontext="shape" transform="translate(202.688,-378.73)">		<title>shape47-142</title>		<desc>7. Gets GBM surface for composing the render frame</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)"></v:textblock>		<v:textrect cx="70.2699" cy="632.733" width="140.55" height="34.2631"></v:textrect>		<path d="M0 649.87 L140.54 649.87 L140.54 615.6 L0 615.6 L0 649.87" class="st23"></path>		<text x="4" y="629.48" class="st17" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>7. <tspan class="st4">获取</tspan> GBM surface <tspan x="4" dy="1.3em" class="st4">以合成渲染帧</tspan></text>		</g>	<g id="shape36-172" v:mid="36" v:groupcontext="shape" transform="translate(1186.55,244.058) rotate(90)">		<title>shape49-148</title>		<path d="M0 649.87 L140.86 649.87 L149.15 649.87" class="st14"></path>	</g>	<g id="shape37-177" v:mid="37" v:groupcontext="shape" transform="translate(472.613,-365.031)">		<title>shape50-153</title>		<desc>8. Submits render frame for composition to GPU</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)"></v:textblock>		<v:textrect cx="68.5263" cy="636.506" width="137.06" height="26.7174"></v:textrect>		<rect x="0" y="623.148" width="137.053" height="26.7174" class="st1"></rect>		<text x="4" y="639.76" class="st17" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>8. <tspan class="st4">提交渲染的帧到</tspan> GPU <tspan class="st4">合成</tspan></text>		</g>	<g id="shape38-182" v:mid="38" v:groupcontext="shape" transform="translate(665.634,-455.923)">		<title>shape51-157</title>		<desc>9. Sends final composed buffer to display DRM</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)"></v:textblock>		<v:textrect cx="61.0709" cy="636.506" width="122.15" height="26.7174"></v:textrect>		<rect x="0" y="623.148" width="122.142" height="26.7174" class="st1"></rect>		<text x="4" y="633.26" class="st17" v:langid="2052"><v:paragraph></v:paragraph><v:tablist></v:tablist>9. <tspan class="st4">发送最终合成的缓冲区</tspan><tspan x="4" dy="1.3em" class="st4">到显示</tspan> DRM</text>		</g>	<g id="shape39-187" v:mid="39" v:groupcontext="shape" transform="translate(665.967,-318.643)">		<title>shape53-161</title>		<desc>10. Submits buffer to display kernel</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)"></v:textblock>		<v:textrect cx="55.3952" cy="638.272" width="110.8" height="23.1839"></v:textrect>		<rect x="0" y="626.682" width="110.791" height="23.1839" class="st1"></rect>		<text x="4" y="635.02" class="st17" v:langid="2052"><v:paragraph></v:paragraph><v:tablist></v:tablist>10. <tspan class="st4">提交缓冲区到显示</tspan><tspan x="4" dy="1.3em" class="st4">内核</tspan></text>		</g>	<g id="shape40-192" v:mid="40" v:groupcontext="shape" transform="translate(677.742,-34.8513)">		<title>shape64-165</title>		<desc>Qualcomm</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)"></v:textblock>		<v:textrect cx="41.472" cy="639.088" width="82.95" height="21.5439"></v:textrect>		<path d="M8.29 649.87 L74.65 649.87 A8.29426 8.29426 -180 0 0 82.94 641.57 L82.94 636.62 A8.29426 8.29426 -180 0 0 74.65					 628.32 L8.29 628.32 A8.29426 8.29426 -180 0 0 -0 636.62 L0 641.57 A8.29426 8.29426 -180 0 0 8.29 649.87					 Z" class="st2"></path>		<text x="12.46" y="642.69" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qualcomm</text>		</g>	<g id="shape41-195" v:mid="41" v:groupcontext="shape" transform="translate(767.741,-34.4763)">		<title>shape65-168</title>		<desc>Open source</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)"></v:textblock>		<v:textrect cx="41.472" cy="639.088" width="82.95" height="21.5439"></v:textrect>		<path d="M8.29 649.87 L74.65 649.87 A8.29426 8.29426 -180 0 0 82.94 641.57 L82.94 636.62 A8.29426 8.29426 -180 0 0 74.65					 628.32 L8.29 628.32 A8.29426 8.29426 -180 0 0 -0 636.62 L0 641.57 A8.29426 8.29426 -180 0 0 8.29 649.87					 Z" class="st5"></path>		<text x="17.47" y="642.99" class="st9" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>开源代码</text>		</g></g>
</svg>

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

**Adreno GPU 驱动程序**

Adreno GPU 驱动程序是包含一组由 Qualcomm 开发的用户模式预编译库和固件。Adreno GPU驱动程序无法修改，必须按原样使用。

Note

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

**Adreno GPU 固件**

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

表：GPU固件文件

| **说明** | QCS5430/QCS6490 firmware | QCS8275 固件 | QCS9075 固件 |
| --- | --- | --- | --- |
| 命令处理器的微代码 | a660\_sqe.fw | a650\_sqe.fw | a660\_sqe.fw |
| 实现安全内容支持的微代码 | a660\_zap | a623\_zap | a663\_zap |
| 用于图形管理单元 (GMU) 的微代码 | a660\_gmu.bin | a663\_gmu.bin | a660\_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</p></td><td><p>GPU 计算驱动程序</p></td></tr><tr class="row-odd"><td><p>libEGL_adreno.so</p></td><td><p>EGL 1.x 驱动程序</p></td></tr><tr class="row-even"><td><p>libeglSubDriverWayland.so</p></td><td><p>适用于 Wayland 子系统的 EGL 驱动程序</p></td></tr><tr class="row-odd"><td><p>libadreno_utils.so</p></td><td><p>Adreno GPU 驱动程序的工具库</p></td></tr><tr class="row-even"><td><p>libgsl.so</p></td><td><p>GSL 库</p></td></tr><tr class="row-odd"><td><p>libq3dtools_adreno.so</p></td><td><p>Adreno Profiler 支持层</p></td></tr><tr class="row-even"><td><p>libGLESv1_CM_adreno.so</p></td><td><p>OpenGL ES 1.x 驱动程序</p></td></tr><tr class="row-odd"><td><p>libGLESv2_adreno.so</p></td><td><p>OpenGL ES 2.x/3.x 驱动程序</p></td></tr><tr class="row-even"><td><p>libq3dtools_esx.so</p></td><td><p>OpenGL ES Profiler 支持层</p></td></tr><tr class="row-odd"><td><p>libOpenCL.so</p></td><td><p>OpenCL 库</p></td></tr><tr class="row-even"><td><p>libOpenCL_adreno.so</p></td><td><p>Adreno GPU 的 OpenCL 库</p></td></tr><tr class="row-odd"><td><p>libllvm-qcom.so</p></td><td><p>OpenCL 编译器库</p></td></tr><tr class="row-even"><td><p>libvulkan_adreno.so</p></td><td><p>Vulkan 1.x 驱动程序</p></td></tr><tr class="row-odd"><td><p>libllvm-glnext.so</p></td><td><p>OpenGL ES 和 Vulkan 程序二进制文件加载程序</p></td></tr><tr class="row-even"><td><p>libllvm-qgl.so</p></td><td><p>OpenGL ES 和 Vulkan 核心编译器库</p></td></tr></tbody></table> | 库 | 说明 | libCB.so | GPU 计算驱动程序 | libEGL\_adreno.so | EGL 1.x 驱动程序 | libeglSubDriverWayland.so | 适用于 Wayland 子系统的 EGL 驱动程序 | libadreno\_utils.so | Adreno GPU 驱动程序的工具库 | libgsl.so | GSL 库 | libq3dtools\_adreno.so | Adreno Profiler 支持层 | libGLESv1\_CM\_adreno.so | OpenGL ES 1.x 驱动程序 | libGLESv2\_adreno.so | OpenGL ES 2.x/3.x 驱动程序 | libq3dtools\_esx.so | OpenGL ES Profiler 支持层 | libOpenCL.so | OpenCL 库 | libOpenCL\_adreno.so | Adreno GPU 的 OpenCL 库 | libllvm-qcom.so | OpenCL 编译器库 | libvulkan\_adreno.so | Vulkan 1.x 驱动程序 | libllvm-glnext.so | OpenGL ES 和 Vulkan 程序二进制文件加载程序 | libllvm-qgl.so | 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>QCS8275</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>QCS9075</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> | **QCS8275** | `<root_dir>/source/graphics-devicetree/gpu/qcs8300-graphics.dtsi` | `<root_dir>/source/graphics-devicetree/gpu/qcs8300-graphics.dtsi` | **QCS9075** | `<root_dir>/source/graphics-devicetree/gpu/qcs9075-graphics.dtsi` | `<root_dir>/source/graphics-devicetree/gpu/qcs9075-graphics.dtsi` |
> | 库 | 说明 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libCB.so | GPU 计算驱动程序 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libEGL\_adreno.so | EGL 1.x 驱动程序 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libeglSubDriverWayland.so | 适用于 Wayland 子系统的 EGL 驱动程序 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libadreno\_utils.so | Adreno GPU 驱动程序的工具库 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libgsl.so | GSL 库 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libq3dtools\_adreno.so | Adreno Profiler 支持层 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libGLESv1\_CM\_adreno.so | OpenGL ES 1.x 驱动程序 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libGLESv2\_adreno.so | OpenGL ES 2.x/3.x 驱动程序 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libq3dtools\_esx.so | OpenGL ES Profiler 支持层 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libOpenCL.so | OpenCL 库 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libOpenCL\_adreno.so | Adreno GPU 的 OpenCL 库 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libllvm-qcom.so | OpenCL 编译器库 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libvulkan\_adreno.so | Vulkan 1.x 驱动程序 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libllvm-glnext.so | OpenGL ES 和 Vulkan 程序二进制文件加载程序 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libllvm-qgl.so | 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> |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | **QCS8275** | `<root_dir>/source/graphics-devicetree/gpu/qcs8300-graphics.dtsi` | `<root_dir>/source/graphics-devicetree/gpu/qcs8300-graphics.dtsi` |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | **QCS9075** | `<root_dir>/source/graphics-devicetree/gpu/qcs9075-graphics.dtsi` | `<root_dir>/source/graphics-devicetree/gpu/qcs9075-graphics.dtsi` |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |

## 功能

下表列出了 Adreno GPU 的规格：

| 芯片组 | QCS5430 | QCS6490 | QCS8275 | QCS9075 |
| --- | --- | --- | --- | --- |
| **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)。

Last Published: Jan 23, 2025

[Next Topic
入门指南](https://docs.qualcomm.com/bundle/publicresource/80-70017-19SC/topics/graphics-getting-started.md)

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