# Architecture

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

## 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 components of the display hardware architecture are described as follows:

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-70015-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 and the SDM, which handles buffer management, composition, and display.

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

**Figure : Display software architecture block diagram**

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. |
> | SDM | SDM software framework manages Qualcomm Adreno DPU hardware<br>resources. SDM 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 software 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-70015-18A/architecture.html#display-software-architecture).

> 
> 
> - **Snapdragon display manager (SDM) architecture**: SDM is an OS-agnostic software framework that manages the Adreno DPU hardware resources and selects the best composition strategy for each connected display.
> - **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-70015-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**: The display 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-70015-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-70015-18A/bringup.html).

Last Published: Oct 14, 2024

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