# 概述

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

图形子系统由 Qualcomm^®^ Adreno™ GPU 提供支持。Adreno GPU 是一款三维 (3D) 图形加速器，具有 64 位寻址功能，内置图形内存 (GMEM)。GMEM 用作图形子系统的专用内存，帮助加快深度 Z、颜色和模板渲染。

此外，Adreno GPU 支持 Qualcomm^®^ 通用带宽压缩 (UBWC)，从而提升整体性能。

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)
- **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 平台可用来开发适用于 QCS6490 和 QCS5430 的应用程序。

## 架构

下图显示了图形子系统的架构。
<?xml version="1.0" encoding="UTF-8"?>
<svg id="a" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 836.62 613.12">
  <defs>
    <style>.svg-1 .cj { letter-spacing: -.48em }
.svg-1 .ck,.svg-1 .cl,.svg-1 .cm,.svg-1 .cn,.svg-1 .co,.svg-1 .cp,.svg-1 .cq,.svg-1 .cr { stroke-width: 0px }
.svg-1 .ck,.svg-1 .co { fill: #3253dc }
.svg-1 .cs,.svg-1 .ct,.svg-1 .cu,.svg-1 .cv,.svg-1 .cw,.svg-1 .cn,.svg-1 .cx,.svg-1 .cy,.svg-1 .cz { fill: #000 }
.svg-1 .cs,.svg-1 .ct,.svg-1 .da,.svg-1 .db,.svg-1 .cy { font-family: ArialMT, Arial }
.svg-1 .cs,.svg-1 .ct,.svg-1 .cw,.svg-1 .cx,.svg-1 .cz { font-size: 10px }
.svg-1 .dc,.svg-1 .ct,.svg-1 .cu,.svg-1 .cv,.svg-1 .da,.svg-1 .cw,.svg-1 .db,.svg-1 .dd,.svg-1 .de,.svg-1 .cx,.svg-1 .cy,.svg-1 .cz { isolation: isolate }
.svg-1 .df { stroke-miterlimit: 10 }
.svg-1 .df,.svg-1 .cl,.svg-1 .dg,.svg-1 .dh { fill: none }
.svg-1 .df,.svg-1 .dg,.svg-1 .dh { stroke: #000 }
.svg-1 .di,.svg-1 .cu,.svg-1 .dd,.svg-1 .de,.svg-1 .cz { font-family: DengXian-Regular, DengXian }
.svg-1 .cu,.svg-1 .cv,.svg-1 .da,.svg-1 .dd,.svg-1 .cy { font-size: 12px }
.svg-1 .dg { stroke-width: 1.5px }
.svg-1 .dg,.svg-1 .dh { stroke-linecap: round; stroke-linejoin: round }
.svg-1 .cm,.svg-1 .cn,.svg-1 .co { fill-rule: evenodd }
.svg-1 .cm,.svg-1 .cr { fill: #acbacf }
.svg-1 .da,.svg-1 .db,.svg-1 .dd,.svg-1 .cp,.svg-1 .de { fill: #fff }
.svg-1 .dj,.svg-1 .cx { font-family: KozGoPr6N-Regular-90ms-RKSJ-H, "Kozuka Gothic Pr6N" }
.svg-1 .db,.svg-1 .de { font-size: 14px }
.svg-1 .cq { fill: #f7f8fa }
.svg-1 .dk { letter-spacing: -.02em }</style>
  </defs>
  <g id="b" data-name="shape3-1">
    <rect class="cq" width="836.62" height="613.12"></rect>
  </g>
  <g id="c" data-name="shape8-9">
    <rect class="cr" x="256.78" y="14.79" width="140.54" height="41.68"></rect>
  </g>
  <g id="d" data-name="shape9-11">
    <rect class="cl" x="288.03" y="28.43" width="132" height="14.4"></rect>
    <g class="dc">
      <text class="cy" transform="translate(288.03 39.53)"><tspan x="0" y="0">Wayland</tspan></text>
      <text class="cy" transform="translate(334.27 39.53)"><tspan x="0" y="0"> </tspan></text>
      <text class="cu" transform="translate(337.61 39.53)"><tspan x="0" y="0">客户端</tspan></text>
    </g>
  </g>
  <g id="e" data-name="shape11-16">
    <rect class="cr" x="412.51" y="15.29" width="290.49" height="40.55"></rect>
  </g>
  <g id="f" data-name="shape12-18">
    <rect class="cl" x="501.07" y="28.36" width="132" height="14.4"></rect>
    <g class="dc">
      <text class="cy" transform="translate(501.07 39.46)"><tspan x="0" y="0">Weston</tspan></text>
      <text class="cu" transform="translate(541.54 39.46)"><tspan x="0" y="0">（</tspan></text>
      <text class="cu" transform="translate(550.54 39.46)"><tspan x="0" y="0" xml:space="preserve"> 合成器</tspan></text>
      <text class="cv" transform="translate(577.54 39.46)"><tspan class="dj" x="0" y="0" xml:space="preserve">   </tspan><tspan class="di" x="8.39" y="0" xml:space="preserve">  ）</tspan></text>
    </g>
  </g>
  <g id="g" data-name="shape14-24">
    <rect class="ck" x="379.2" y="374.47" width="137.05" height="38.78"></rect>
  </g>
  <g id="h" data-name="shape15-26">
    <rect class="cl" x="386.62" y="386.65" width="126" height="14.4"></rect>
    <g class="dc">
      <text class="da" transform="translate(407.95 397.76)"><tspan x="0" y="0">KGSL </tspan></text>
      <text class="dd" transform="translate(442.85 397.76)"><tspan x="0" y="0">驱动程序</tspan></text>
    </g>
  </g>
  <g id="i" data-name="shape17-30">
    <rect class="ck" x="601.95" y="371.23" width="137.05" height="38.78"></rect>
  </g>
  <g id="j" data-name="shape18-32">
    <rect class="cl" x="611.62" y="383.42" width="118.01" height="14.4"></rect>
    <text class="dd" transform="translate(622.62 394.53)"><tspan x="0" y="0">显示内核驱动程序</tspan></text>
  </g>
  <g id="k" data-name="shape20-35">
    <rect class="cr" x="595.6" y="235.66" width="140.54" height="41.68"></rect>
  </g>
  <g id="l" data-name="shape21-37">
    <rect class="cl" x="605.53" y="249.3" width="180" height="14.4"></rect>
    <g class="dc">
      <text class="cy" transform="translate(605.53 260.41)"><tspan x="0" y="0">DRM-backend</tspan></text>
      <text class="cu" transform="translate(682.22 260.41)"><tspan x="0" y="0">（</tspan></text>
      <text class="cu" transform="translate(691.22 260.41)"><tspan x="0" y="0" xml:space="preserve"> 显示</tspan></text>
      <text class="cu" transform="translate(709.22 260.41)"><tspan x="0" y="0" xml:space="preserve">   ）</tspan></text>
    </g>
  </g>
  <g id="m" data-name="shape23-43">
    <rect class="cr" x="20.5" y="178.55" width="133.72" height="41.68"></rect>
  </g>
  <g id="n" data-name="shape24-45">
    <rect class="cl" x="22.12" y="191.84" width="130.5" height="14.4"></rect>
    <text class="cu" transform="translate(45.38 202.94)"><tspan x="0" y="0">图形缓冲区管理</tspan></text>
  </g>
  <g id="o" data-name="shape26-48">
    <rect class="cr" x="19.45" y="126.7" width="134.76" height="41.68"></rect>
  </g>
  <g id="p" data-name="shape27-50">
    <rect class="cl" x="22.12" y="140.43" width="130.5" height="14.4"></rect>
    <g class="dc">
      <text class="cy" transform="translate(50.36 151.54)"><tspan x="0" y="0">Wayland </tspan></text>
      <text class="cu" transform="translate(99.94 151.54)"><tspan x="0" y="0">协议</tspan></text>
    </g>
  </g>
  <g id="q" data-name="shape29-54">
    <path class="df" d="M10,345.55h796.5H10Z"></path>
    <path class="dh" d="M10,345.55h796.5"></path>
  </g>
  <g id="r" data-name="shape31-57">
    <path class="df" d="M12.2,454.58h791.34H12.2Z"></path>
    <path class="dh" d="M12.2,454.58h791.34"></path>
  </g>
  <g id="s" data-name="shape33-60">
    <rect class="ck" x="379.2" y="491.25" width="137.05" height="38.78"></rect>
  </g>
  <g id="t" data-name="shape34-62">
    <rect class="cl" x="413.71" y="503.44" width="120" height="14.4"></rect>
    <text class="da" transform="translate(413.71 514.25)"><tspan x="0" y="0">Adreno GPU</tspan></text>
  </g>
  <g id="u" data-name="shape36-65">
    <rect class="ck" x="601.95" y="491.25" width="137.05" height="38.78"></rect>
  </g>
  <g id="v" data-name="shape37-67">
    <rect class="cl" x="636.79" y="503.44" width="120" height="14.4"></rect>
    <text class="da" transform="translate(636.79 514.25)"><tspan x="0" y="0">Adreno DPU</tspan></text>
  </g>
  <g id="w" data-name="shape39-70">
    <rect class="cl" x="737.62" y="462.19" width="90" height="22.84"></rect>
  </g>
  <g id="x" data-name="shape40-72">
    <rect class="cl" x="742.88" y="466.41" width="31.52" height="14.4"></rect>
    <text class="cu" transform="translate(742.88 477.52)"><tspan x="0" y="0">硬件</tspan></text>
  </g>
  <g id="y" data-name="shape42-75">
    <rect class="cl" x="737.62" y="347.62" width="81" height="22.84"></rect>
  </g>
  <g id="z" data-name="shape43-77">
    <rect class="cl" x="742.35" y="351.83" width="28.37" height="14.4"></rect>
    <text class="cu" transform="translate(742.35 362.94)"><tspan x="0" y="0">内核</tspan></text>
  </g>
  <g id="aa" data-name="shape45-80">
    <rect class="cl" x="737.62" y="314.04" width="87.25" height="22.84"></rect>
  </g>
  <g id="ab" data-name="shape46-82">
    <rect class="cl" x="741.96" y="318.25" width="52.03" height="14.4"></rect>
    <text class="cu" transform="translate(741.96 329.36)"><tspan x="0" y="0">用户空间</tspan></text>
  </g>
  <g id="ac" data-name="shape49-85">
    <path class="df" d="M667,55.83l-1.07,171.54,1.07-171.54Z"></path>
    <path class="dh" d="M667,55.83l-1.07,171.54"></path>
  </g>
  <g id="ad" data-name="shape51-88">
    <path class="cn" d="M670.67,226.21l-4.8,9.45-4.65-9.42c2.98,1.49,6.47,1.5,9.46.04v-.07Z"></path>
    <path class="cl" d="M670.67,226.21l-4.8,9.45-4.65-9.42c2.98,1.49,6.47,1.5,9.46.04"></path>
  </g>
  <g id="ae" data-name="shape54-91">
    <path class="df" d="M670.46,277.34v85.6-85.6Z"></path>
    <path class="dh" d="M670.46,277.34v85.6"></path>
  </g>
  <g id="af" data-name="shape56-94">
    <path class="cn" d="M675.2,361.75l-4.74,9.48-4.71-9.39c2.99,1.47,6.48,1.46,9.46-.02v-.07Z"></path>
    <path class="cl" d="M675.2,361.75l-4.74,9.48-4.71-9.39c2.99,1.47,6.48,1.46,9.46-.02"></path>
  </g>
  <g id="ag" data-name="shape59-97">
    <path class="df" d="M670.46,410.02v72.94-72.94Z"></path>
    <path class="dh" d="M670.46,410.02v72.94"></path>
  </g>
  <g id="ah" data-name="shape61-100">
    <path class="cn" d="M675.2,481.77l-4.74,9.48-4.71-9.39c2.99,1.47,6.48,1.46,9.46-.02v-.07Z"></path>
    <path class="cl" d="M675.2,481.77l-4.74,9.48-4.71-9.39c2.99,1.47,6.48,1.46,9.46-.02"></path>
  </g>
  <g id="ai" data-name="shape64-103">
    <path class="df" d="M447.72,413.25v69.71-69.71Z"></path>
    <path class="dh" d="M447.72,413.25v69.71"></path>
  </g>
  <g id="aj" data-name="shape66-106">
    <path class="cn" d="M452.46,481.78l-4.74,9.48-4.71-9.39c2.99,1.47,6.48,1.46,9.46-.02v-.07Z"></path>
    <path class="cl" d="M452.46,481.78l-4.74,9.48-4.71-9.39c2.99,1.47,6.48,1.46,9.46-.02"></path>
  </g>
  <g id="ak" data-name="shape69-109">
    <path class="df" d="M327.04,56.47v69.18V56.47Z"></path>
    <path class="dh" d="M327.04,56.47v69.18"></path>
  </g>
  <g id="al" data-name="shape71-112">
    <path class="cn" d="M331.78,124.46l-4.74,9.48-4.71-9.39c2.99,1.47,6.48,1.46,9.46-.02v-.07Z"></path>
    <path class="cl" d="M331.78,124.46l-4.74,9.48-4.71-9.39c2.99,1.47,6.48,1.46,9.46-.02"></path>
  </g>
  <g id="am" data-name="shape74-115">
    <path class="cl" d="M348.2,225.31v165.92h22.71l-22.71-165.92Z"></path>
    <path class="dg" d="M348.2,225.31v165.92h22.71"></path>
  </g>
  <g id="an" data-name="shape76-118">
    <path class="cn" d="M369.72,386.49l9.48,4.74-9.39,4.71c1.47-2.99,1.46-6.48-.02-9.46h-.07Z"></path>
    <path class="cl" d="M369.72,386.49l9.48,4.74-9.39,4.71c1.47-2.99,1.46-6.48-.02-9.46"></path>
  </g>
  <g id="ao" data-name="shape79-121">
    <g id="ap" data-name="lend5">
      <path class="cn" d="M165.45,155.75l-10.92-5.46,10.82-5.42c-1.69,3.43-1.68,7.46.02,10.89"></path>
    </g>
  </g>
  <g id="aq" data-name="shape81-127">
    <path class="cn" d="M296.85,145.55l9.48,4.74-9.39,4.71c1.47-2.99,1.46-6.48-.02-9.46h-.07Z"></path>
    <path class="cl" d="M296.85,145.55l9.48,4.74-9.39,4.71c1.47-2.99,1.46-6.48-.02-9.46"></path>
  </g>
  <g id="ar" data-name="shape84-130">
    <g id="as" data-name="lend5">
      <path class="cn" d="M441.03,67.66l5.46-10.92,5.42,10.82c-3.43-1.69-7.46-1.68-10.89.02"></path>
    </g>
  </g>
  <g id="at" data-name="shape86-135">
    <path class="cn" d="M451.23,124.46l-4.74,9.48-4.71-9.39c2.99,1.47,6.48,1.46,9.46-.02v-.07Z"></path>
    <path class="cl" d="M451.23,124.46l-4.74,9.48-4.71-9.39c2.99,1.47,6.48,1.46,9.46-.02"></path>
  </g>
  <g id="au" data-name="shape88-138">
    <rect class="cp" x="283.33" y="70.21" width="102.79" height="26.72"></rect>
  </g>
  <g id="av" data-name="shape89-140">
    <rect class="cl" x="287.33" y="73.49" width="90.3" height="22.5"></rect>
    <g class="dc">
      <text class="ct" transform="translate(298.31 81.99)"><tspan x="0" y="0">1.</tspan></text>
      <text class="cw" transform="translate(306.65 81.99)"><tspan class="dj" x="0" y="0"> </tspan><tspan class="di" x="2.33" y="0">应用程序调用</tspan></text>
      <text class="cs" transform="translate(351.65 81.99)"><tspan x="0" y="0"> </tspan></text>
      <text class="ct" transform="translate(294.12 94.24)"><tspan x="0" y="0">EGL/OpenGL ES</tspan></text>
    </g>
  </g>
  <g id="aw" data-name="shape91-145">
    <rect class="cp" x="165.45" y="116.38" width="131.18" height="26.72"></rect>
  </g>
  <g id="ax" data-name="shape92-147">
    <rect class="cl" x="161.62" y="118.49" width="132.75" height="22.5"></rect>
    <g class="dc">
      <text class="ct" transform="translate(188.82 126.48)"><tspan x="0" y="0">2.</tspan></text>
      <text class="cz" transform="translate(197.16 126.48)"><tspan x="0" y="0" xml:space="preserve"> 设置注册表并在</tspan></text>
      <text class="cz" transform="translate(197.99 139.48)"><tspan x="0" y="0">渲染期间回调</tspan></text>
    </g>
  </g>
  <g id="ay" data-name="shape94-152">
    <rect class="cp" x="166.07" y="160.52" width="129.36" height="34.26"></rect>
  </g>
  <g id="az" data-name="shape95-154">
    <rect class="cl" x="176.16" y="168.74" width="117.09" height="12"></rect>
    <g class="dc">
      <text class="ct" transform="translate(178.3 171.48)"><tspan x="0" y="0">3.</tspan></text>
      <text class="cz" transform="translate(186.64 171.48)"><tspan x="0" y="0" xml:space="preserve"> 获取</tspan></text>
      <text class="cs" transform="translate(201.64 171.48)"><tspan x="0" y="0" xml:space="preserve">   Wayland </tspan></text>
      <text class="cw" transform="translate(245.73 171.48)"><tspan class="dj" x="0" y="0" xml:space="preserve">  </tspan><tspan class="di" x="4.66" y="0">后缓冲区</tspan></text>
      <text class="cz" transform="translate(209.7 184.48)"><tspan x="0" y="0">以进行渲染</tspan></text>
    </g>
  </g>
  <g id="ba" data-name="shape97-160">
    <rect class="cp" x="274.86" y="272.36" width="147.77" height="45.89"></rect>
  </g>
  <g id="bb" data-name="shape98-162">
    <rect class="cl" x="276.61" y="278.24" width="148.27" height="32.29"></rect>
    <g class="dc">
      <text class="ct" transform="translate(277.93 284.63)"><tspan x="0" y="0">4.</tspan></text>
      <text class="cw" transform="translate(286.27 284.63)"><tspan class="dj" x="0" y="0"> </tspan><tspan class="di" x="2.33" y="0">使用</tspan></text>
      <text class="cs" transform="translate(301.27 284.63)"><tspan x="0" y="0" xml:space="preserve">   swapbuffer/glflush/glfinish </tspan></text>
      <text class="cz" transform="translate(280.72 297.63)"><tspan x="0" y="0">提交到</tspan></text>
      <text class="cs" transform="translate(303.22 297.63)"><tspan x="0" y="0" xml:space="preserve">   KGSL</tspan></text>
      <text class="cx" transform="translate(332.68 297.63)"><tspan x="0" y="0" xml:space="preserve">  </tspan><tspan class="dk" x="4.66" y="0"> </tspan><tspan class="cj" x="6.79" y="0">，</tspan></text>
      <text class="cw" transform="translate(340.18 297.63)"><tspan class="dj" x="0" y="0" xml:space="preserve">  </tspan><tspan class="di" x="4.66" y="0">以通过</tspan></text>
      <text class="cs" transform="translate(362.68 297.63)"><tspan x="0" y="0" xml:space="preserve">     OpenGL </tspan></text>
      <text class="ct" transform="translate(322.68 310.63)"><tspan x="0" y="0">ES </tspan></text>
      <text class="cz" transform="translate(338.8 310.63)"><tspan x="0" y="0">进行渲染</tspan></text>
    </g>
  </g>
  <g id="bc" data-name="shape101-171">
    <g id="bd" data-name="lend5">
      <path class="cn" d="M165.66,197.15l-10.92-5.46,10.82-5.42c-1.69,3.43-1.68,7.46.02,10.89"></path>
    </g>
  </g>
  <g id="be" data-name="shape103-176">
    <path class="cn" d="M297.07,186.95l9.48,4.74-9.39,4.71c1.47-2.99,1.46-6.48-.02-9.46h-.07Z"></path>
    <path class="cl" d="M297.07,186.95l9.48,4.74-9.39,4.71c1.47-2.99,1.46-6.48-.02-9.46"></path>
  </g>
  <g id="bf" data-name="shape106-179">
    <g id="bg" data-name="lend5">
      <path class="cn" d="M560.09,66.66l4.96-9.92,4.93,9.83c-3.12-1.53-6.78-1.53-9.89.02"></path>
    </g>
  </g>
  <g id="bh" data-name="shape108-185">
    <path class="cn" d="M569.29,125.46l-4.24,8.48-4.21-8.4c2.67,1.31,5.79,1.31,8.46-.01v-.07Z"></path>
    <path class="cl" d="M569.29,125.46l-4.24,8.48-4.21-8.4c2.67,1.31,5.79,1.31,8.46-.01"></path>
  </g>
  <g id="bi" data-name="shape116-203">
    <g id="bj" data-name="lend5">
      <path class="cn" d="M166.07,219.99l-10.92-5.46,10.82-5.42c-1.69,3.43-1.68,7.46.02,10.89"></path>
    </g>
  </g>
  <g id="bk" data-name="shape122-218">
    <path class="df" d="M495.63,225.31v140.86-140.86Z"></path>
    <path class="dh" d="M495.63,225.31v140.86"></path>
  </g>
  <g id="bl" data-name="shape124-221">
    <path class="cn" d="M500.36,364.98l-4.74,9.48-4.71-9.39c2.99,1.47,6.48,1.46,9.46-.02v-.07Z"></path>
    <path class="cl" d="M500.36,364.98l-4.74,9.48-4.71-9.39c2.99,1.47,6.48,1.46,9.46-.02"></path>
  </g>
  <g id="bm" data-name="shape126-224">
    <rect class="cp" x="431.55" y="239.37" width="137.05" height="26.72"></rect>
  </g>
  <g id="bn" data-name="shape127-226">
    <rect class="cl" x="431.34" y="246.74" width="131.07" height="12"></rect>
    <g class="dc">
      <text class="ct" transform="translate(434.09 255.99)"><tspan x="0" y="0">8.</tspan></text>
      <text class="cz" transform="translate(442.43 255.99)"><tspan x="0" y="0" xml:space="preserve"> 提交渲染的帧到</tspan></text>
      <text class="cs" transform="translate(494.93 255.99)"><tspan x="0" y="0" xml:space="preserve">        GPU </tspan></text>
      <text class="cz" transform="translate(522.15 255.99)"><tspan x="0" y="0" xml:space="preserve">       合成</tspan></text>
    </g>
  </g>
  <g id="bo" data-name="shape129-231">
    <rect class="cp" x="624.57" y="148.47" width="122.14" height="31.15"></rect>
  </g>
  <g id="bp" data-name="shape130-233">
    <rect class="cl" x="620.62" y="154.49" width="123.75" height="18"></rect>
    <g class="dc">
      <text class="ct" transform="translate(643.33 160.23)"><tspan x="0" y="0">9. </tspan></text>
      <text class="cw" transform="translate(651.66 160.23)"><tspan class="dj" x="0" y="0"> </tspan><tspan class="di" x="2.33" y="0">发送最终合成的</tspan></text>
      <text class="cz" transform="translate(639.72 173.23)"><tspan x="0" y="0">缓冲区到显示</tspan></text>
      <text class="cs" transform="translate(684.73 173.23)"><tspan x="0" y="0" xml:space="preserve">       DRM</tspan></text>
    </g>
  </g>
  <g id="bq" data-name="shape132-238">
    <rect class="cp" x="612.75" y="289.29" width="123.39" height="23.18"></rect>
  </g>
  <g id="br" data-name="shape133-240">
    <rect class="cl" x="616.12" y="291.74" width="125.24" height="18.61"></rect>
    <g class="dc">
      <text class="ct" transform="translate(616.12 304.3)"><tspan x="0" y="0">10.</tspan></text>
      <text class="cw" transform="translate(630.03 304.3)"><tspan class="dj" x="0" y="0"> </tspan><tspan class="di" x="2.33" y="0">提交缓冲区到显示内核</tspan></text>
    </g>
  </g>
  <g id="bs" data-name="shape135-244">
    <path class="co" d="M644.97,596.27h66.36c4.58,0,8.29-3.72,8.29-8.3h0v-4.95c0-4.58-3.71-8.3-8.29-8.3h-66.36c-4.58,0-8.29,3.72-8.29,8.3,0,0,0,0,0,0v4.95c0,4.58,3.71,8.3,8.29,8.3h0Z"></path>
  </g>
  <g id="bt" data-name="shape136-246">
    <rect class="cl" x="649.14" y="578.28" width="96" height="14.4"></rect>
    <text class="da" transform="translate(649.14 589.09)"><tspan x="0" y="0">Qualcomm</tspan></text>
  </g>
  <g id="bu" data-name="shape138-249">
    <path class="cm" d="M734.97,596.64h66.36c4.58,0,8.29-3.72,8.29-8.3h0v-4.95c0-4.58-3.71-8.3-8.29-8.3h-66.36c-4.58,0-8.29,3.72-8.29,8.3,0,0,0,0,0,0v4.95c0,4.58,3.71,8.3,8.29,8.3h0Z"></path>
  </g>
  <g id="bv" data-name="shape139-251">
    <rect class="cl" x="733.8" y="578.66" width="71.32" height="14.4"></rect>
    <text class="cu" transform="translate(757.46 589.76)"><tspan x="0" y="0">开源</tspan></text>
  </g>
  <g id="bw" data-name="shape94-152">
    <rect class="cp" x="166.45" y="212.12" width="129.36" height="34.26"></rect>
  </g>
  <g id="bx" data-name="shape119-213">
    <rect class="cl" x="165.62" y="223.25" width="131" height="12"></rect>
    <g class="dc">
      <text class="ct" transform="translate(186.4 225.99)"><tspan x="0" y="0">7.</tspan></text>
      <text class="cw" transform="translate(194.73 225.99)"><tspan class="dj" x="0" y="0"> </tspan><tspan class="di" x="2.33" y="0">获取</tspan></text>
      <text class="cs" transform="translate(209.73 225.99)"><tspan x="0" y="0" xml:space="preserve">   GBM surface </tspan></text>
      <text class="cz" transform="translate(201.12 238.99)"><tspan x="0" y="0">以合成渲染帧</tspan></text>
    </g>
  </g>
  <g id="by" data-name="shape29-54">
    <path class="df" d="M161.62,214.55h155.91-155.91Z"></path>
    <path class="df" d="M161.62,214.55h155.91"></path>
  </g>
  <g id="bz" data-name="shape5-3">
    <rect class="ck" x="307" y="133.94" width="306" height="91.37"></rect>
  </g>
  <g id="ca" data-name="shape6-5">
    <rect class="cl" x="310.12" y="171.33" width="300.74" height="16.8"></rect>
    <g class="dc">
      <text class="db" transform="translate(390.86 184.29)"><tspan x="0" y="0">Adreno GPU </tspan></text>
      <text class="de" transform="translate(474.13 184.29)"><tspan x="0" y="0">驱动程序</tspan></text>
    </g>
  </g>
  <g id="cb" data-name="shape29-54">
    <path class="df" d="M159.88,191.67h141.73-141.73Z"></path>
    <path class="dh" d="M159.88,191.67h141.73"></path>
  </g>
  <g id="cc" data-name="shape29-54">
    <path class="df" d="M160.26,150.31h141.73-141.73Z"></path>
    <path class="dh" d="M160.26,150.31h141.73"></path>
  </g>
  <g id="cd" data-name="shape69-109">
    <path class="df" d="M446.48,65.53v69.18-69.18Z"></path>
    <path class="dh" d="M446.48,65.53v69.18"></path>
  </g>
  <g id="ce" data-name="shape69-109">
    <path class="df" d="M565.04,57.46v69.18V57.46Z"></path>
    <path class="dh" d="M565.04,57.46v69.18"></path>
  </g>
  <g id="cf" data-name="shape113-196">
    <rect class="cp" x="505" y="71.04" width="122.14" height="25.89"></rect>
  </g>
  <g id="cg" data-name="shape114-198">
    <rect class="cl" x="509.12" y="74.87" width="111.62" height="17.18"></rect>
    <g class="dc">
      <text class="ct" transform="translate(512.98 80.21)"><tspan x="0" y="0">6.</tspan></text>
      <text class="cw" transform="translate(521.32 80.21)"><tspan class="dj" x="0" y="0"> </tspan><tspan class="di" x="2.33" y="0">发送渲染后的</tspan></text>
      <text class="cs" transform="translate(566.33 80.21)"><tspan x="0" y="0" xml:space="preserve">       surface </tspan></text>
      <text class="cz" transform="translate(544.93 93.21)"><tspan x="0" y="0">进行合成</tspan></text>
    </g>
  </g>
  <g id="ch" data-name="shape110-188">
    <rect class="cp" x="392.5" y="89.32" width="109.93" height="26.72"></rect>
  </g>
  <g id="ci" data-name="shape111-190">
    <rect class="cl" x="391.12" y="95.99" width="111.62" height="12"></rect>
    <g class="dc">
      <text class="ct" transform="translate(407.77 98.73)"><tspan x="0" y="0">5. EGL/Commit </tspan></text>
      <text class="cz" transform="translate(476.11 98.73)"><tspan x="0" y="0" xml:space="preserve"> 将</tspan></text>
      <text class="cs" transform="translate(483.61 98.73)"><tspan x="0" y="0"> </tspan></text>
      <text class="ct" transform="translate(393.3 111.73)"><tspan x="0" y="0">surface </tspan></text>
      <text class="cz" transform="translate(428.88 111.73)"><tspan x="0" y="0">渲染到</tspan></text>
      <text class="cs" transform="translate(451.38 111.73)"><tspan x="0" y="0" xml:space="preserve">   Wayland</tspan></text>
    </g>
  </g>
</svg>

**Adreno GPU 驱动程序**
Adreno GPU 驱动程序包含一组由 Qualcomm 开发的用户模式预编译库和固件。Adreno GPU 驱动程序必须按原样使用。 
Note: 要使用 Adreno GPU 支持的所有功能，应确保设备的 /lib/firmware/ 中存在以下表格中所列的 Adreno GPU 驱动程序库和固件。

**Adreno GPU 库**

下表列出了用户模式驱动程序支持的 Adreno 闭源图形库：

| 库 | 说明 |
| --- | --- |
| libCB.so | GPU 计算驱动程序 |
| libEGL\_adreno.so | EGL 1.4 驱动程序 |
| libeglSubDriverWayland.so | 适用于 Wayland 子系统的 EGL 驱动程序 |
| libadreno\_utils.so | Adreno GPU 驱动程序的实用工具库 |
| libgsl.so | GSL 库 |
| libq3dtools\_adreno.so | Adreno Profiler 支持层 |
| libGLESv1\_CM\_adreno.so | OpenGL ES 1.1 驱动程序 |
| libGLESv2\_adreno.so | OpenGL ES 2.0/3.0/3.1 驱动程序 |
| 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 核心编译器库 |

## Adreno GPU 固件

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

| 固件 | 说明 |
| --- | --- |
| a660\_sqe.fw | 命令处理器的微代码 |
| a660\_zap | 实现安全内容支持的安全微代码 |
| a660\_gmu.bin | 用于图形管理单元 (GMU) 的微代码 |

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

KGSL 是 Adreno GPU 的内核模式驱动程序。其主要功能是将 Adreno 用户模式驱动程序生成的命令提交到 Adreno GPU 进行处理。此外，KGSL 还与图形管理单元 (GMU) 通信，以确保正确的状态管理。下表列出了有关 KGSL 驱动程序的详细信息：

| **芯片组** | QCS6490/QCS5430 |
| --- | --- |
| **Linux 内核版本** | 6.6 |
| **源代码路径** | &lt;root\_dir&gt;/source/graphics-kernel/ |
| **GPU DTSI文件路径** | <ul class="ul" id="graphics-home__ul_jts_lp5_vbc"><br>                                        <li class="li">QCS6490：<ul class="ul" id="graphics-home__ul_dz3_mp5_vbc"><br>                                                <li class="li">&lt;root_dir&gt;/source/graphics-devicetree/gpu/qcm6490-graphics.dtsi</li><br><br>                                                <li class="li">&lt;root_dir&gt;/source/graphics-devicetree/gpu/qcm6490-graphics-pwrlevels.dtsi</li><br><br>                                            </ul><br></li><br><br>                                        <li class="li">QCS5430：<ul class="ul" id="graphics-home__ul_xcr_qp5_vbc"><br>                                                <li class="li">&lt;root_dir&gt;/source/graphics-devicetree/gpu/qcs5430-graphics.dtsi</li><br><br>                                                <li class="li">&lt;root_dir&gt;/source/graphics-devicetree/gpu/qcs5430-graphics-pwrlevels.dtsi</li><br><br>                                            </ul><br></li><br><br>                                    </ul> |

Last Published: Aug 09, 2024

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