# Architecture

This information explains the workflow of the primary components within the hardware and the
software architecture of the Qualcomm Linux display subsystem.

## Display hardware architecture

The hardware architecture includes components for source and destination
processing, layer mixing, compression, and display interfaces.

![../../_images/DPU_hardware_architecture1.png](data:image/png;base64,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)

**Figure : DPU hardware architecture block diagram**

The following table lists the components of the display software architecture.

Table : Display hardware architecture components

| Component | Description |
| --- | --- |
| Bus interface | Fetches data from memory for processing |
| Source surface processing | <ul class="simple"><br><li><p>Reads RGB and YUV surfaces from games and video<br>applications</p></li><br><li><p>Performs format conversion and quality improvements for<br>source</p></li><br></ul> |
| Blending | Blends and mixes source surface together |
| Destination surface processing | Converts, corrects, and adjusts the data based on panel<br>characteristics |
| Compression | Reduces bandwidth and power consumption by sending compressed<br>display buffers to the display |
| Display interface | Generates timings for the connected display peripherals |

Detailed information on the display hardware architecture is available
to licensed developers with authorized access. For more information, see [Qualcomm Linux Display
Guide -
Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-70017-18A/architecture.html#high-level-display-hardware-architecture).

## Display software architecture

The display subsystem consists of Wayland, a display server protocol,
and its compositors, such as Weston. Wayland uses a client-server model where the client application interacts with the Wayland server.

![../../_images/Linux_enabled_display_architecture.png](data:image/png;base64,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)

**Figure : Display software architecture block diagram**

Note

QCS6490/QCS5430 continues to support SDM backend. For more information, see [Qualcomm Linux Display Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-70017-18A/architecture.html#advanced-features)

The components of the display software architecture are described as follows:

> 
> 
> | Component | Description |
> | --- | --- |
> | Wayland sink | The Wayland sink plug-in communicates with the Weston<br>subsystem to render the display.. |
> | Wayland compositor (Weston) | A display server using the Wayland protocol is called a<br>Wayland compositor. The Wayland compositor is a system-level<br>compositor, which handles the composition and rendering<br>requirements and runs as a separate process in the system.<br>The reference implementation of a Wayland compositor is<br>called Weston. |
> | DRM backend | The DRM backend software framework manages Qualcomm Adreno DPU hardware<br>resources. It selects the optimal composition strategy for<br>each connected display and allocates display processor<br>hardware resources for the layer stack received from the<br>client. |
> | `libdrm` | The `libdrm` library provides APIs for accessing the Direct<br>Rendering Manager (DRM) I/O control (IOCTL). |
> | DRM/KMS framework | The DRM/KMS framework offers kernel and userland level<br>interface, with the help of `libdrm` libraries to<br>access the related hardware features, configuration, and<br>hardware acceleration. |
> | Adreno DPU driver | The Adreno DPU driver manages all the pixel data paths to<br>different panel interfaces. |
> | Adreno DPU | The Adreno DPU is a hardware accelerated engine that performs<br>the image processing and interfacing with minimal power<br>consumption. |

Detailed information on the architecture components is available to licensed developers with authorized access. For more information, see the following topics in [Qualcomm Linux Display Guide -
Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-70017-18A/architecture.html#display-software-architecture).

> 
> 
> - **DRM/KMS Adreno DPU driver architecture**: the DRM/KMS Linux kernel framework and related drivers are used to access the display hardware block.
> - **Display peripheral interfaces**: the display interface consists of the MIPI DSI controller, the DP controller, and the eDP controller.

## Software APIs

The Qualcomm Linux software interface provides the following display APIs:

- Weston API: facilitates interactions with the SDM compositor. For the Weston APIs, see [Wayland client APIs](https://wayland.freedesktop.org/docs/html/apb.html) and [Wayland server APIs](https://wayland.freedesktop.org/docs/html/apc.html).
- `libdrm` API: facilitates interactions with the DRM/KMS framework. For the APIs, see [libdrm](https://dri.freedesktop.org/docs/drm/gpu/drm-uapi.html).

Qualcomm provides you the GStreamer-based plugins. You can add the
Waylandsink plugin to your media pipeline from [IM SDK
plugins](https://docs.qualcomm.com/bundle/publicresource/topics/80-70017-50/qim-sdk-plugins.html).

For more information, see [GStreamer application development and
pipeline
creation](https://gstreamer.freedesktop.org/documentation/application-development/basics/index.html).

## Display software directory and bringup instructions

### Software

Explores the user space and kernel space modules, which are available in the Qualcomm Linux-enabled display software directory. The software modules are available to licensed developers with authorized access. For more information, see [Qualcomm Linux Display Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-70017-18A/software.html).

### Bringup

Explains the process to bring up the DSI display panel in the kernel, as well as the guidelines for panel selection and customization, and bring up eDP. The bringup information is available to licensed developers with authorized access. For more information, see [Qualcomm Linux Display Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-70017-18A/bringup.html).

Last Published: Dec 19, 2024

[Previous Topic
Features](https://docs.qualcomm.com/bundle/publicresource/80-70017-18/topics/features.md) [Next Topic
Configure](https://docs.qualcomm.com/bundle/publicresource/80-70017-18/topics/configure.md)