# Architecture

Source: [https://docs.qualcomm.com/doc/80-70014-18/topic/architecture.html](https://docs.qualcomm.com/doc/80-70014-18/topic/architecture.html)

The workflow of the primary components within the hardware and the software architecture
            of the Linux display subsystem and the SDM architecture are explained here.

## Display hardware architecture

Source: [https://docs.qualcomm.com/doc/80-70014-18/topic/architecture.html](https://docs.qualcomm.com/doc/80-70014-18/topic/architecture.html)

The hardware architecture includes components for source and destination processing,
            layer mixing, compression, and display interfaces. The following figure shows the
            display hardware architecture:

Figure : DPU hardware architecture
            
            ![](data:image/png;base64,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)

The display hardware architecture is explained in the following table:

Table : Display hardware architecture components

| Component | Description |
| --- | --- |
| Bus interface | Fetches data from memory for processing |
| Source surface processing | <ul class="ul"><br>                                    <li class="li">Reads RGB and YUV surfaces from games and video<br>                                        applications</li><br><br>                                    <li class="li">Performs format conversion and quality improvements for<br>                                        source</li><br><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 users who have
            full access to the proprietary software shipped with Qualcomm Linux. For more
            information, see the [Qualcomm Linux Display Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-70014-18A/architecture.html).

## Display software architecture

Source: [https://docs.qualcomm.com/doc/80-70014-18/topic/architecture.html](https://docs.qualcomm.com/doc/80-70014-18/topic/architecture.html)

The display subsystem consists of Wayland, a display server protocol, and its
            compositors, such as Weston. Wayland uses a client-server model. The client application
            interacts with the Wayland server and the SDM, which handles the buffer management,
            composition, and display. The following figure shows the display software
            architecture:

Figure : Display software architecture block diagram
                    
                    ![](data:image/png;base64,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)

The display software architecture is explained in the following table:

Table : Display software architecture components

| Component | Description |
| --- | --- |
| Wayland sink | The Wayland sink plug-in communicates with the Weston subsystem<br>                                to render the display. |
| Wayland compositor (Weston) | A display server using the Wayland protocol is called a Wayland<br>                                compositor. The wayland compositor is a system-level compositor,<br>                                which handles the composition and rendering requirements and runs as<br>                                a separate process in the system. The reference implementation of a<br>                                Wayland compositor is called Weston. |
| SDM | SDM software framework manages Qualcomm Adreno DPU hardware<br>                                resources. SDM selects the optimal composition strategy for each<br>                                connected display and allocates display processor hardware resources<br>                                for the layer stack received from the client. |
| LibDRM | Libdrm library provides APIs for accessing the Direct Rendering<br>                                Manager (DRM) I/O control (IOCTL). |
| DRM/KMS framework | The DRM/KMS framework offers kernel and userland level interface,<br>                                with the help of libdrm/libkms libraries to get access to the<br>                                related hardware features, configuration, and hardware<br>                                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 the<br>                                image processing and interfacing with minimal power<br>                                consumption. |

### SDM architecture

Source: [https://docs.qualcomm.com/doc/80-70014-18/topic/architecture.html](https://docs.qualcomm.com/doc/80-70014-18/topic/architecture.html)

The Snapdragon Display Manager (SDM) is an OS-agnostic software framework that manages
            the Qualcomm®Adreno DPU™ hardware resources and selects the best composition strategy
            for each connected display.

The SDM features and its components are currently available for users who have full
            access to the proprietary software shipped with Qualcomm Linux. For more information,
            see the [Qualcomm Linux Display Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-70014-18A/architecture.html).

### DRM/KMS Adreno DPU driver architecture

Source: [https://docs.qualcomm.com/doc/80-70014-18/topic/architecture.html](https://docs.qualcomm.com/doc/80-70014-18/topic/architecture.html)

The DRM/KMS Linux kernel framework and related drivers are used to access the display
            hardware block.

The DRM/KMS driver framework and the driver implementation details are currently
            available for users who have full access to the proprietary software shipped with
            Qualcomm Linux. For more information, see the [Qualcomm Linux Display Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-70014-18A/architecture.html).

### Display peripheral interfaces

Source: [https://docs.qualcomm.com/doc/80-70014-18/topic/architecture.html](https://docs.qualcomm.com/doc/80-70014-18/topic/architecture.html)

The display interface comprises of the following: MIPI DSI controller, the DP controller,
            and the eDP controller.

The interfaces and their key attributes are currently available for users who have full
            access to the proprietary software shipped with Qualcomm Linux. For more information,
            see the [Qualcomm Linux Display Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-70014-18A/architecture.html).

Last Published: Jul 16, 2024

[Previous Topic
Features](https://docs.qualcomm.com/bundle/publicresource/80-70014-18/topics/features.md) [Next Topic
Interfaces](https://docs.qualcomm.com/bundle/publicresource/80-70014-18/topics/interfaces.md)