> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 图形概述

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

* 作为支持 64 位寻址的三维（3D）图形加速器。
* 将图形内存（GMEM）作为图形子系统的专用内存，支持 Fast Z、颜色和模板（stencil）渲染。
* 支持 Qualcomm<sup>®</sup> 通用带宽压缩（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)

**注意**

请参阅 Qualcomm<sup>®</sup> Linux<sup>®</sup> 支持的[硬件 SoC](https://dragonwingdocs.qualcomm.com/)。

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

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

<div className="flex flex-col items-center gap-2">
  <img src="https://mintcdn.com/qualcomm-prod/h7j64QujhJHkLxyj/Technologies/Graphics/media/qli-graphics/Graphics-driver.svg?fit=max&auto=format&n=h7j64QujhJHkLxyj&q=85&s=6ba1ba5f66361bdd554be367dfb1ee6c" alt="图：图形子系统架构" width="1106" height="771" data-path="Technologies/Graphics/media/qli-graphics/Graphics-driver.svg" />

  <p className="text-sm text-gray-700">
    图：图形子系统架构
  </p>
</div>

在上图中，Adreno GPU 驱动使用以下流程和开源组件渲染图形：

1. Wayland 客户端应用程序通过 EGL/OpenGL ES 发起渲染。
2. Wayland 协议为渲染设置注册表（registry）和回调。
3. 图形缓冲区管理获取用于渲染的 Wayland 后台缓冲区（backbuffer）。
4. Adreno GPU 驱动通过 OpenGL 的 swapbuffer、glflush 或 glfinish 将渲染命令提交给内核图形支持层（KGSL）。
5. Weston 合成器将已渲染的表面（surface）发送给 Adreno GPU 驱动进行合成。
6. 获取一个 GBM surface 用于合成已渲染的帧。
7. Adreno GPU 驱动提交已渲染的帧。
8. Weston 合成器通过 DRM 将最终合成的缓冲区发送到显示器。
9. DRM 在后端将缓冲区提交给显示内核驱动，以在屏幕上显示。

**Adreno GPU 驱动**

Qualcomm Adreno GPU 驱动是一组用户模式的预编译库。Adreno GPU 驱动不可修改，必须按原样使用。

**Adreno GPU 固件**

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

> |               |                                                |                        |                                                 | **表：GPU 固件文件**                                  |
> | ------------- | ---------------------------------------------- | ---------------------- | ----------------------------------------------- | ----------------------------------------------- |
> | **描述**        | **Qualcomm Dragonwing <sup>™</sup> IQ-615 固件** | **QCS5430/QCS6490 固件** | **Qualcomm Dragonwing <sup>™</sup> IQ-8275 固件** | **Qualcomm Dragonwing <sup>™</sup> IQ-9075 固件** |
> | 命令处理器微码       | a630\_sqe.fw                                   | a660\_sqe.fw           | a650\_sqe.fw                                    | a660\_sqe.fw                                    |
> | 安全内容支持微码      | a612\_zap                                      | a660\_zap              | a623\_zap                                       | a663\_zap                                       |
> | 图形管理单元（GMU）微码 | a612\_rgmu.bin                                 | a660\_gmu.bin          | a623\_gmu.bin                                   | a663\_gmu.bin                                   |

**内核图形支持层（KGSL）**

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

下表列出了支持的 GPU 库和 KGSL 驱动信息。

**注意**

GPU 库表仅适用于 overlay 或 `qcom‑multimedia‑proprietary‑image`。

**表：GPU 库**

|            **库**            |            **描述**           |
| :-------------------------: | :-------------------------: |
|          libCB.so.1         |           GPU 计算驱动          |
|     libEGL\_adreno.so.1     |          EGL 1.x 驱动         |
| libeglSubDriverWayland.so.1 |     Wayland 子系统的 EGL 驱动     |
|   libeglSubDriverX11.so.1   |       X11 子系统的 EGL 驱动       |
|    libadreno\_utils.so.1    |     Adreno GPU 驱动的实用工具库     |
|         libgsl.so.1         |            GSL 库            |
|   libq3dtools\_adreno.so.1  |       Adreno 性能分析器支持层       |
|  libGLESv1\_CM\_adreno.so.1 |       OpenGL ES 1.x 驱动      |
|    libGLESv2\_adreno.so.2   |     OpenGL ES 2.x/3.x 驱动    |
|    libq3dtools\_esx.so.1    |      OpenGL ES 性能分析器支持层     |
|        libOpenCL.so.1       |           OpenCL 库          |
|    libOpenCL\_adreno.so.1   |  适用于 Adreno GPU 的 OpenCL 库  |
|      libllvm-qcom.so.1      |         OpenCL 编译器库         |
|    libvulkan\_adreno.so.1   |        Vulkan 1.x 驱动        |
|     libllvm-glnext.so.1     | OpenGL ES 和 Vulkan 程序二进制加载器 |
|       libllvm-qgl.so.1      |  OpenGL ES 和 Vulkan 核心编译器库  |

**表：KGSL 驱动**

| **Linux 内核** | 6.6                                                              |
| :----------- | :--------------------------------------------------------------- |
| **源码路径**     | `<https://github.com/qualcomm-linux/kgsl/>` 注意：KGSL 可与上游设备树配合使用。 |

## **后续步骤**

* [编译并运行基于 OpenGL ES 的应用程序](https://dragonwingdocs.qualcomm.com/Technologies/Graphics/run-sample-applications#compile-and-run-opengl-es-based-applications)
* [编译并运行基于 OpenCL 的应用程序](https://dragonwingdocs.qualcomm.com/Technologies/Graphics/run-sample-applications#compile-and-run-opencl-based-applications)
* [编译并运行基于 Vulkan 的应用程序](https://dragonwingdocs.qualcomm.com/Technologies/Graphics/run-sample-applications#compile-and-run-vulkan-based-applications)
* [编译并运行基于 X11 的应用程序](https://dragonwingdocs.qualcomm.com/Technologies/Graphics/run-sample-applications#compile-and-run-x11-based-applications)
