# Overview

The graphics subsystem is powered by the Qualcomm^®^ Adreno^™^ GPU, which offers the following capabilities:

- Serves as a three-dimensional (3D) graphics accelerator with 64‑bit addressing.
- Incorporates the graphics memory (GMEM) as a dedicated memory for the graphics subsystem and facilitates Fast Z, color, and stencil rendering.
- Supports the Qualcomm^®^ Universal Bandwidth Compression, enhancing the overall performance.

The Adreno GPU supports the following graphics and compute APIs:

- **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

See [Hardware SoCs](https://docs.qualcomm.com/bundle/publicresource/topics/80-70017-115/soc.html) that are supported on Qualcomm^®^ Linux^®^.

## Architecture

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

<!-- Generated by Microsoft Visio, SVG Export Graphics-driver.svg Page-2 -->
<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.313 649.865" xml:space="preserve" color-interpolation-filters="sRGB" class="st21"><v:documentproperties v:langid="1033" v:viewmarkup="false">	<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.75 }
.svg-1 .st2 { fill: #3253dc; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st3 { fill: #ffffff; font-family: Arial; font-size: 1.16666em }
.svg-1 .st4 { fill: #acbacf; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st5 { fill: #000000; font-family: Arial; font-size: 1.00001em }
.svg-1 .st6 { fill: #ffffff; font-family: Arial; font-size: 1.00001em }
.svg-1 .st7 { font-size: 1em }
.svg-1 .st8 { stroke: #000000; stroke-dasharray: 14, 10; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-1 .st9 { fill: none; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st10 { fill: #000000; font-family: Arial; font-size: 1.00001em; font-weight: bold }
.svg-1 .st11 { marker-end: url("#mrkr5-55"); 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.31645569620253 }
.svg-1 .st13 { marker-end: url("#mrkr5-55"); marker-start: url("#mrkr5-87"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5 }
.svg-1 .st14 { fill: #000000; font-family: Arial; font-size: 0.833336em }
.svg-1 .st15 { marker-end: url("#mrkr5-128"); marker-start: url("#mrkr5-126"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st16 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.23584905660377 }
.svg-1 .st17 { fill: #f7f8fa; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5 }
.svg-1 .st18 { marker-start: url("#mrkr5-87"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5 }
.svg-1 .st19 { fill: #f7f8fa; marker-end: url("#mrkr5-145"); stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5 }
.svg-1 .st20 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.37313432835821 }
.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="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-55" class="st12" v:arrowtype="5" v:arrowsize="3" v:setback="5.53" refx="-5.53" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(-3.16,-3.16) "></use>	</marker>	<marker id="mrkr5-87" class="st12" v:arrowtype="5" v:arrowsize="3" v:setback="5.29" refx="5.29" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(3.16) "></use>	</marker>	<marker id="mrkr5-126" class="st16" v:arrowtype="5" v:arrowsize="3" v:setback="7.06" refx="7.06" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(4.24) "></use>	</marker>	<marker id="mrkr5-128" class="st16" v:arrowtype="5" v:arrowsize="3" v:setback="7.42" refx="-7.42" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(-4.24,-4.24) "></use>	</marker>	<marker id="mrkr5-145" class="st20" 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="4" v:index="2" v:groupcontext="foregroundPage">	<title></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(27.6875,-18.375)" v:mid="66" v:groupcontext="group">		<title></title>		<g id="shape54-2" v:mid="54" v:groupcontext="shape">			<title></title>			<rect x="0" y="36.75" width="836.625" height="613.115" class="st1"></rect>		</g>	</g>	<g id="shape1-4" v:mid="1" v:groupcontext="shape" transform="translate(348.063,-405.807)">		<title></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(4,4,4,4)"></v:textblock>		<v:textrect cx="153" cy="604.181" width="306" height="91.3686"></v:textrect>		<rect x="0" y="558.497" width="306" height="91.3686" class="st2"></rect>		<text x="93.87" y="608.49" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Adreno GPU driver</text>		</g>	<g id="shape3-7" v:mid="3" v:groupcontext="shape" transform="translate(297.843,-574.65)">		<title></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(4,4,4,4)"></v:textblock>		<v:textrect cx="70.27" cy="629.027" width="140.55" height="41.6777"></v:textrect>		<rect x="0" y="608.188" width="140.54" height="41.6777" class="st4"></rect>		<text x="31.25" y="632.63" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Wayland client</text>		</g>	<g id="shape4-10" v:mid="4" v:groupcontext="shape" transform="translate(453.575,-575.284)">		<title></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(4,4,4,4)"></v:textblock>		<v:textrect cx="145.244" cy="629.592" width="290.49" height="40.5468"></v:textrect>		<rect x="0" y="609.319" width="290.487" height="40.5468" class="st4"></rect>		<text x="88.56" y="633.19" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Weston (Compositor)</text>		</g>	<g id="shape5-13" v:mid="5" v:groupcontext="shape" transform="translate(420.263,-217.865)">		<title></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="630.474" width="137.06" height="38.7834"></v:textrect>		<rect x="0" y="611.082" width="137.053" height="38.7834" class="st2"></rect>		<text x="35.85" y="634.07" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>KGSL driver</text>		</g>	<g id="shape6-16" v:mid="6" v:groupcontext="shape" transform="translate(643.01,-221.097)">		<title></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(4,4,4,4)"></v:textblock>		<v:textrect cx="68.5264" cy="630.474" width="137.06" height="38.7834"></v:textrect>		<rect x="0" y="611.082" width="137.053" height="38.7834" class="st2"></rect>		<text x="13.17" y="634.07" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Display Kernel driver</text>		</g>	<g id="shape7-19" v:mid="7" v:groupcontext="shape" transform="translate(636.667,-353.778)">		<title></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(4,4,4,4)"></v:textblock>		<v:textrect cx="70.27" cy="629.027" width="140.55" height="41.6777"></v:textrect>		<rect x="0" y="608.188" width="140.54" height="41.6777" class="st4"></rect>		<text x="9.92" y="632.63" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Drm-backend (display)</text>		</g>	<g id="shape8-22" v:mid="8" v:groupcontext="shape" transform="translate(61.5642,-410.883)">		<title></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(4,4,4,4)"></v:textblock>		<v:textrect cx="66.858" cy="629.027" width="133.72" height="41.6777"></v:textrect>		<rect x="0" y="608.188" width="133.716" height="41.6777" class="st4"></rect>		<text x="25.84" y="625.43" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Graphics buffer <tspan x="31.84" dy="1.2em" class="st7">management</tspan></text>		</g>	<g id="shape9-26" v:mid="9" v:groupcontext="shape" transform="translate(60.5148,-462.739)">		<title></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(4,4,4,4)"></v:textblock>		<v:textrect cx="67.3827" cy="629.027" width="134.77" height="41.6777"></v:textrect>		<rect x="0" y="608.188" width="134.765" height="41.6777" class="st4"></rect>		<text x="21.03" y="632.72" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Wayland protocol</text>		</g>	<g id="shape10-29" v:mid="10" v:groupcontext="shape" v:layermember="0" transform="translate(51.0625,-273.078)">		<title></title>		<path d="M0 637.37 L796.5 637.37" class="st8"></path>	</g>	<g id="shape11-32" v:mid="11" v:groupcontext="shape" v:layermember="0" transform="translate(53.2582,-164.041)">		<title></title>		<path d="M0 637.37 L791.34 637.37" class="st8"></path>	</g>	<g id="shape12-35" v:mid="12" v:groupcontext="shape" transform="translate(420.263,-101.078)">		<title></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="630.474" width="137.06" height="38.7834"></v:textrect>		<rect x="0" y="611.082" width="137.053" height="38.7834" class="st2"></rect>		<text x="34.51" y="634.07" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Adreno GPU</text>		</g>	<g id="shape13-38" v:mid="13" v:groupcontext="shape" transform="translate(643.01,-101.078)">		<title></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="630.474" width="137.06" height="38.7834"></v:textrect>		<rect x="0" y="611.082" width="137.053" height="38.7834" class="st2"></rect>		<text x="34.84" y="634.07" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Adreno DPU</text>		</g>	<g id="shape14-41" v:mid="14" v:groupcontext="shape" transform="translate(789.938,-146.078)">		<title></title>		<desc>Hardware</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="34.2632" cy="638.444" width="68.53" height="22.8421"></v:textrect>		<rect x="0" y="627.023" width="68.5264" height="22.8421" class="st9"></rect>		<text x="4" y="642.04" class="st10" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>Hardware</text>		</g>	<g id="shape15-44" v:mid="15" v:groupcontext="shape" transform="translate(786.661,-260.657)">		<title></title>		<desc>Kernel</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="34.2632" cy="638.444" width="68.53" height="22.8421"></v:textrect>		<rect x="0" y="627.023" width="68.5264" height="22.8421" class="st9"></rect>		<text x="4" y="642.04" class="st10" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>Kernel</text>		</g>	<g id="shape16-47" v:mid="16" v:groupcontext="shape" transform="translate(785.438,-294.235)">		<title></title>		<desc>User space</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="40.25" cy="638.444" width="80.51" height="22.8421"></v:textrect>		<rect x="0" y="627.023" width="80.5" height="22.8421" class="st9"></rect>		<text x="4" y="642.04" class="st10" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>User space</text>		</g>	<g id="shape17-50" v:mid="17" v:groupcontext="shape" transform="translate(1357.92,78.6477) rotate(90.3585)">		<title></title>		<path d="M0 649.87 L171.54 649.87" class="st11"></path>	</g>	<g id="shape18-56" v:mid="18" v:groupcontext="shape" transform="translate(1361.4,296.088) rotate(90)">		<title></title>		<path d="M0 649.87 L85.6 649.87" class="st11"></path>	</g>	<g id="shape19-61" v:mid="19" v:groupcontext="shape" transform="translate(1361.4,428.769) rotate(90)">		<title></title>		<path d="M0 649.87 L72.94 649.87" class="st11"></path>	</g>	<g id="shape23-66" v:mid="23" v:groupcontext="shape" transform="translate(1138.65,432.001) rotate(90)">		<title></title>		<path d="M0 649.87 L69.71 649.87" class="st11"></path>	</g>	<g id="shape26-71" v:mid="26" v:groupcontext="shape" transform="translate(1017.98,75.2156) rotate(90)">		<title></title>		<path d="M0 649.87 L69.18 649.87" class="st11"></path>	</g>	<g id="shape27-76" v:mid="27" v:groupcontext="shape" transform="translate(389.261,-239.893)">		<title></title>		<path d="M0 483.95 L0 649.87 L22.71 649.87" class="st11"></path>	</g>	<g id="shape29-81" v:mid="29" v:groupcontext="shape" transform="translate(194.66,-480.837)">		<title></title>		<path d="M7.93 649.87 L8.29 649.87 L144.44 649.87" class="st13"></path>	</g>	<g id="shape30-89" v:mid="30" v:groupcontext="shape" transform="translate(1137.43,74.5811) rotate(90)">		<title></title>		<path d="M7.93 649.87 L8.29 649.87 L69.81 649.87" class="st13"></path>	</g>	<g id="shape31-96" v:mid="31" v:groupcontext="shape" transform="translate(324.389,-534.189)">		<title></title>		<desc>1. Application calls EGL/OpenGL ES</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="51.3948" cy="636.507" width="102.79" height="26.7175"></v:textrect>		<rect x="0" y="623.148" width="102.79" height="26.7175" class="st1"></rect>		<text x="4" y="633.51" class="st14" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>1. Application calls <tspan x="4" dy="1.2em" class="st7">EGL/OpenGL ES</tspan></text>		</g>	<g id="shape35-100" v:mid="35" v:groupcontext="shape" transform="translate(210.066,-486.73)">		<title></title>		<desc>2. When rendering, sets registry and callbacks</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="61.071" cy="636.507" width="122.15" height="26.7175"></v:textrect>		<rect x="0" y="623.148" width="122.142" height="26.7175" class="st1"></rect>		<text x="4" y="633.51" class="st14" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>2. When rendering, sets <tspan x="4" dy="1.2em" class="st7">registry and callbacks</tspan></text>		</g>	<g id="shape39-104" v:mid="39" v:groupcontext="shape" transform="translate(214.348,-436.328)">		<title></title>		<desc>3. Gets Wayland backbuffer for rendering</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="61.071" cy="632.734" width="122.15" height="34.2632"></v:textrect>		<rect x="0" y="615.602" width="122.142" height="34.2632" class="st1"></rect>		<text x="4" y="629.73" class="st14" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>3. Gets Wayland <tspan x="4" dy="1.2em" class="st7">backbuffer for rendering</tspan></text>		</g>	<g id="shape41-108" v:mid="41" v:groupcontext="shape" transform="translate(324.92,-317.078)">		<title></title>		<desc>4. Submits to KGSL using swapbuffer/glflush/glfinish to rende...</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="66.858" cy="629.027" width="133.72" height="41.6777"></v:textrect>		<rect x="0" y="608.188" width="133.716" height="41.6777" class="st1"></rect>		<text x="4" y="620.03" class="st14" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>4. Submits to KGSL using <tspan x="4" dy="1.2em" class="st7">swapbuffer/glflush/glfinish to </tspan><tspan x="4" dy="1.2em" class="st7">render with OpenGL ES</tspan></text>		</g>	<g id="shape42-113" v:mid="42" v:groupcontext="shape" transform="translate(194.875,-439.436)">		<title></title>		<path d="M7.93 649.87 L8.29 649.87 L144.44 649.87" class="st13"></path>	</g>	<g id="shape43-120" v:mid="43" v:groupcontext="shape" transform="translate(1255.99,74.5811) rotate(90)">		<title></title>		<path d="M7.06 649.87 L7.42 649.87 L70.69 649.87" class="st15"></path>	</g>	<g id="shape44-129" v:mid="44" v:groupcontext="shape" transform="translate(433.563,-515.078)">		<title></title>		<desc>5. EGL/Commit render surface to Wayland</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54.9639" cy="636.507" width="109.93" height="26.7175"></v:textrect>		<rect x="0" y="623.148" width="109.928" height="26.7175" class="st1"></rect>		<text x="4" y="633.51" class="st14" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>5. EGL/Commit render <tspan x="4" dy="1.2em" class="st7">surface to Wayland</tspan></text>		</g>	<g id="shape45-133" v:mid="45" v:groupcontext="shape" transform="translate(546.063,-536.894)">		<title></title>		<desc>6. Sends rendered surfaces for composition</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="61.071" cy="638.273" width="122.15" height="23.1839"></v:textrect>		<rect x="0" y="626.682" width="122.142" height="23.1839" class="st17"></rect>		<text x="4" y="635.27" class="st14" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>6. Sends rendered <tspan x="4" dy="1.2em" class="st7">surfaces for composition</tspan></text>		</g>	<g id="shape46-137" v:mid="46" v:groupcontext="shape" transform="translate(195.28,-416.594)">		<title></title>		<path d="M7.93 649.87 L8.29 649.87 L152.16 649.87" class="st18"></path>	</g>	<g id="shape47-142" v:mid="47" v:groupcontext="shape" transform="translate(202.688,-378.73)">		<title></title>		<desc>7. Gets GBM surface for composing the render frame</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="70.27" cy="632.734" width="140.55" height="34.2632"></v:textrect>		<rect x="0" y="615.602" width="140.54" height="34.2632" class="st19"></rect>		<text x="4" y="629.73" class="st14" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>7. Gets GBM surface for <tspan x="4" dy="1.2em" class="st7">composing the render frame</tspan></text>		</g>	<g id="shape49-148" v:mid="49" v:groupcontext="shape" transform="translate(1186.56,244.058) rotate(90)">		<title></title>		<path d="M0 649.87 L140.86 649.87" class="st11"></path>	</g>	<g id="shape50-153" v:mid="50" v:groupcontext="shape" transform="translate(472.614,-365.031)">		<title></title>		<desc>8. Submits render frame for composition to GPU</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="68.5264" cy="636.507" width="137.06" height="26.7175"></v:textrect>		<rect x="0" y="623.148" width="137.053" height="26.7175" class="st1"></rect>		<text x="4" y="633.51" class="st14" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>8. Submits render frame for <tspan x="4" dy="1.2em" class="st7">composition to GPU</tspan></text>		</g>	<g id="shape51-157" v:mid="51" v:groupcontext="shape" transform="translate(665.635,-455.924)">		<title></title>		<desc>9. Sends final composed buffer to display DRM</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="61.071" cy="636.507" width="122.15" height="26.7175"></v:textrect>		<rect x="0" y="623.148" width="122.142" height="26.7175" class="st1"></rect>		<text x="4" y="633.51" class="st14" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>9. Sends final composed <tspan x="4" dy="1.2em" class="st7">buffer to display DRM</tspan></text>		</g>	<g id="shape53-161" v:mid="53" v:groupcontext="shape" transform="translate(665.968,-318.644)">		<title></title>		<desc>10. Submits buffer to display kernel</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="55.3953" cy="638.273" 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.27" class="st14" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>10. Submits buffer to <tspan x="4" dy="1.2em" class="st7">display kernel</tspan></text>		</g>	<g id="shape64-165" v:mid="64" v:groupcontext="shape" transform="translate(677.743,-34.8554)">		<title></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.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.11520015844595):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.11520015844595):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.11520015844595):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.11520015844595):1"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="41.4721" cy="639.093" width="82.95" height="21.5439"></v:textrect>		<path d="M8.29 649.87 L74.65 649.87 A8.29428 8.29428 -180 0 0 82.94 641.57 L82.94 636.62 A8.29428 8.29428 -180 0 0 74.65					 628.32 L8.29 628.32 A8.29428 8.29428 -180 0 0 0 636.62 L0 641.57 A8.29428 8.29428 -180 0 0 8.29 649.87 Z" class="st2"></path>		<text x="12.46" y="642.69" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qualcomm</text>		</g>	<g id="shape65-168" v:mid="65" v:groupcontext="shape" transform="translate(767.743,-34.4804)">		<title></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.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.11520015844595):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.11520015844595):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.11520015844595):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.11520015844595):1"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="41.4721" cy="639.093" width="82.95" height="21.5439"></v:textrect>		<path d="M8.29 649.87 L74.65 649.87 A8.29428 8.29428 -180 0 0 82.94 641.57 L82.94 636.62 A8.29428 8.29428 -180 0 0 74.65					 628.32 L8.29 628.32 A8.29428 8.29428 -180 0 0 0 636.62 L0 641.57 A8.29428 8.29428 -180 0 0 8.29 649.87 Z" class="st4"></path>		<text x="7.12" y="642.69" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Open source</text>		</g></g>
</svg>

**Figure : Graphics subsystem architecture**

**Adreno GPU driver**

The Adreno GPU driver is a collection of user-mode precompiled libraries and firmware developed by Qualcomm. The Adreno GPU driver cannot be modified and must be used as-is.

Note

To use all the features supported by the Adreno GPU, ensure that the files listed in the Table: [GPU firmware files](https://docs.qualcomm.com/doc/80-70017-19/topic/graphics-overview.html#table-qkn-4bc-ybc) and Table: [GPU driver libraries](https://docs.qualcomm.com/doc/80-70017-19/topic/graphics-overview.html#table-j3s-gl3-kcc) are present on the device in the `/lib/firmware/` directory.

**Adreno GPU firmware**

The following table lists the firmware files of the Adreno GPU hardware.

Table : GPU firmware files

| **Description** | QCS5430/QCS6490 firmware | QCS8275 firmware | QCS9075 firmware |
| --- | --- | --- | --- |
| Microcode for command processor | a660\_sqe.fw | a650\_sqe.fw | a660\_sqe.fw |
| Microcode for secure content support | a660\_zap | a623\_zap | a663\_zap |
| Microcode for graphics management unit (GMU) | a660\_gmu.bin | a663\_gmu.bin | a660\_gmu.bin |

**Kernel Graphics Support Layer (KGSL)**

The KGSL serves as the kernel-mode driver for the Adreno GPU. The primary function of the KGSL driver is to submit commands generated by the Adreno user-mode driver to the Adreno GPU for processing. Additionally, the KGSL driver communicates with the GMU to ensure proper state management.

The following table lists the supported GPU libraries and KGSL driver.

> 
> 
> **Table : GPU libraries and KGSL driver**
> 
> 
> 
> 
> 
> | Adreno GPU libraries | KGSL driver |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
> | <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>Library</p></th><th class="head"><p>Description</p></th></tr></thead><tbody><tr class="row-even"><td><p>libCB.so</p></td><td><p>Driver for GPU computing</p></td></tr><tr class="row-odd"><td><p>libEGL_adreno.so</p></td><td><p>EGL 1.x driver</p></td></tr><tr class="row-even"><td><p>libeglSubDriverWayland.so</p></td><td><p>EGL driver for Wayland subsystem</p></td></tr><tr class="row-odd"><td><p>libadreno_utils.so</p></td><td><p>Utility library for Adreno GPU driver</p></td></tr><tr class="row-even"><td><p>libgsl.so</p></td><td><p>GSL library</p></td></tr><tr class="row-odd"><td><p>libq3dtools_adreno.so</p></td><td><p>Adreno profiler support layer</p></td></tr><tr class="row-even"><td><p>libGLESv1_CM_adreno.so</p></td><td><p>OpenGL ES 1.x driver</p></td></tr><tr class="row-odd"><td><p>libGLESv2_adreno.so</p></td><td><p>OpenGL ES 2.x/3.x driver</p></td></tr><tr class="row-even"><td><p>libq3dtools_esx.so</p></td><td><p>OpenGL ES profiler support layer</p></td></tr><tr class="row-odd"><td><p>libOpenCL.so</p></td><td><p>OpenCL library</p></td></tr><tr class="row-even"><td><p>libOpenCL_adreno.so</p></td><td><p>OpenCL library for Adreno GPU</p></td></tr><tr class="row-odd"><td><p>libllvm-qcom.so</p></td><td><p>OpenCL compiler library</p></td></tr><tr class="row-even"><td><p>libvulkan_adreno.so</p></td><td><p>Vulkan 1.x driver</p></td></tr><tr class="row-odd"><td><p>libllvm-glnext.so</p></td><td><p>OpenGL ES and Vulkan program binary loader</p></td></tr><tr class="row-even"><td><p>libllvm-qgl.so</p></td><td><p>OpenGL ES and Vulkan core compiler library</p></td></tr></tbody></table> | Library | Description | libCB.so | Driver for GPU computing | libEGL\_adreno.so | EGL 1.x driver | libeglSubDriverWayland.so | EGL driver for Wayland subsystem | libadreno\_utils.so | Utility library for Adreno GPU driver | libgsl.so | GSL library | libq3dtools\_adreno.so | Adreno profiler support layer | libGLESv1\_CM\_adreno.so | OpenGL ES 1.x driver | libGLESv2\_adreno.so | OpenGL ES 2.x/3.x driver | libq3dtools\_esx.so | OpenGL ES profiler support layer | libOpenCL.so | OpenCL library | libOpenCL\_adreno.so | OpenCL library for Adreno GPU | libllvm-qcom.so | OpenCL compiler library | libvulkan\_adreno.so | Vulkan 1.x driver | libllvm-glnext.so | OpenGL ES and Vulkan program binary loader | libllvm-qgl.so | OpenGL ES and Vulkan core compiler library | <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 kernel</strong></p></td><td colspan="2"><p>6.6</p></td></tr><tr class="row-even"><td><p><strong>Source code path</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 files</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 kernel** | 6.6 | 6.6 | **Source code path** | `<root_dir>/source/graphics-kernel/` | `<root_dir>/source/graphics-kernel/` | <br>**GPU DTSI files** | <br>**GPU DTSI files** | <br>**GPU DTSI files** | **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` |
> | Library | Description |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libCB.so | Driver for GPU computing |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libEGL\_adreno.so | EGL 1.x driver |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libeglSubDriverWayland.so | EGL driver for Wayland subsystem |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libadreno\_utils.so | Utility library for Adreno GPU driver |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libgsl.so | GSL library |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libq3dtools\_adreno.so | Adreno profiler support layer |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libGLESv1\_CM\_adreno.so | OpenGL ES 1.x driver |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libGLESv2\_adreno.so | OpenGL ES 2.x/3.x driver |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libq3dtools\_esx.so | OpenGL ES profiler support layer |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libOpenCL.so | OpenCL library |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libOpenCL\_adreno.so | OpenCL library for Adreno GPU |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libllvm-qcom.so | OpenCL compiler library |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libvulkan\_adreno.so | Vulkan 1.x driver |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libllvm-glnext.so | OpenGL ES and Vulkan program binary loader |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | libllvm-qgl.so | OpenGL ES and Vulkan core compiler library |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | **Linux kernel** | 6.6 | 6.6 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | **Source code path** | `<root_dir>/source/graphics-kernel/` | `<root_dir>/source/graphics-kernel/` |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | <br>**GPU DTSI files** | <br>**GPU DTSI files** | <br>**GPU DTSI files** |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
> | **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` |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |

## Features

The following table lists the specifications of the Adreno GPU.

| Chipset | QCS5430 | QCS6490 | QCS8275 | QCS9075 |
| --- | --- | --- | --- | --- |
| **GPU** | Adreno GPU 642L | Adreno GPU 643 | Adreno GPU 623 | Adreno GPU 663 |
| **GPU clock** | 315 MHz | 812 MHz | 877 MHz | 800 MHz |
| **On-Chip memory (GMEM)** | 512 kB | 512 kB | 512 kB | 1.5 MB |

To find the GPU information, run the following command using SSH on the device:

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

For general information about the Adreno GPU, see [Game Developer Guide](https://docs.qualcomm.com/bundle/publicresource/topics/80-78185-2/gpu.html).

Last Published: Dec 27, 2024

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

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