# Overview Source: [https://docs.qualcomm.com/doc/80-70015-19/topic/graphics-overview.html](https://docs.qualcomm.com/doc/80-70015-19/topic/graphics-overview.html) The graphics subsystem is powered by the Qualcomm^®^ Adreno™ GPU. The Adreno GPU is a three-dimensional (3D) graphics accelerator with 64‑bit addressing and incorporates the graphics memory (GMEM). The GMEM serves as a dedicated memory for the graphics subsystem and facilitates Fast Z, color, and stencil rendering. Additionally, the Adreno GPU 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) - **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-70015-115/soc.html) that are supported on Qualcomm^®^ Linux^®^. ### Architecture Figure : Graphics subsystem architecture Adreno GPU driver Adreno GPU driver Wayland client Wayland client Weston (Compositor) Weston (Compositor) KGSL driver KGSL driver Display Kernel driver Display Kernel driver Drm-backend (display) Drm-backend (display) Graphics buffer management Graphics buffer management Wayland protocol Wayland protocol Adreno GPU Adreno GPU Adreno DPU Adreno DPU Hardware Hardware Kernel Kernel User space User space 1. Application calls EGL/OpenGL ES 1. Application calls EGL/OpenGL ES 2. When rendering, sets registry and callbacks 2. When rendering, sets registry and callbacks 3. Gets Wayland backbuffer for rendering 3. Gets Wayland backbuffer for rendering 4. Submits to KGSL using swapbuffer/glflush/glfinish to rende... 4. Submits to KGSL using swapbuffer/glflush/glfinish to render with OpenGL ES 5. EGL/Commit render surface to Wayland 5. EGL/Commit render surface to Wayland 6. Sends rendered surfaces for composition 6. Sends rendered surfaces for composition 7. Gets GBM surface for composing the render frame 7. Gets GBM surface for composing the render frame 8. Submits render frame for composition to GPU 8. Submits render frame for composition to GPU 9. Sends final composed buffer to display DRM 9. Sends final composed buffer to display DRM 10. Submits buffer to display kernel 10. Submits buffer to display kernel Qualcomm Qualcomm Open source Open source **Adreno GPU driver** The Adreno GPU driver is a collection of user-mode precompiled libraries and firmware developed by Qualcomm. The Adreno GPU driver 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-70015-19/topic/graphics-overview.html#graphics-home__table_qkn_4bc_ybc) and [Table : GPU libraries and KGSL driver](https://docs.qualcomm.com/doc/80-70015-19/topic/graphics-overview.html#graphics-home__table_j3s_gl3_kcc) are present on the device at /lib/firmware/. **Adreno GPU firmware** The following table lists the firmware files of the Adreno GPU hardware. Table : GPU firmware files | **Description** | QCS5430/QCS6490 firmware | QCS9075 firmware | | --- | --- | --- | | Microcode for command processor | a660\_sqe.fw | a660\_sqe.fw | | Microcode for secure content support | a660\_zap | a663\_zap | | Microcode for graphics management unit (GMU) | a660\_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. | Adreno GPU libraries | KGSL driver | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | |
Library Description
libCB.so Driver for GPU computing
libEGL_adreno.so EGL 1.4 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.1 driver
libGLESv2_adreno.so OpenGL ES 2.0/3.0/3.1 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
| Library | Description | libCB.so | Driver for GPU computing | libEGL\_adreno.so | EGL 1.4 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.1 driver | libGLESv2\_adreno.so | OpenGL ES 2.0/3.0/3.1 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
Source code path <root_dir>/source/graphics-kernel/
GPU DTSI files
QCS5430
  • <root_dir>/source/graphics-devicetree/gpu/qcs5430-graphics.dtsi
  • <root_dir>/source/graphics-devicetree/gpu/qcs5430-graphics-pwrlevels.dtsi
QCS6490
  • <root_dir>/source/graphics-devicetree/gpu/qcm6490-graphics.dtsi
  • <root_dir>/source/graphics-devicetree/gpu/qcm6490-graphics-pwrlevels.dtsi
QCS9075 <root_dir>/source/graphics-devicetree/gpu/qcs9075-graphics.dtsi
| **Linux kernel** | 6.6 | **Source code path** | <root\_dir>/source/graphics-kernel/ | **GPU DTSI files** | **GPU DTSI files** | **QCS5430** | | **QCS6490** | | **QCS9075** | <root\_dir>/source/graphics-devicetree/gpu/qcs9075-graphics.dtsi | | Library | Description | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | libCB.so | Driver for GPU computing | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | libEGL\_adreno.so | EGL 1.4 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.1 driver | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | libGLESv2\_adreno.so | OpenGL ES 2.0/3.0/3.1 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 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | **Source code path** | <root\_dir>/source/graphics-kernel/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | **GPU DTSI files** | **GPU DTSI files** | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | **QCS5430** | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | **QCS6490** | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | **QCS9075** | <root\_dir>/source/graphics-devicetree/gpu/qcs9075-graphics.dtsi | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Last Published: Oct 14, 2024 [Next Topic Getting started](https://docs.qualcomm.com/bundle/publicresource/80-70015-19/topics/graphics-getting-started.md)