> ## 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.

# 显示

IQ-9075 平台配备 Qualcomm Adreno 显示处理单元（DPU），提供硬件加速的图像处理。DPU 从内存中读取像素数据，并通过标准接口将其发送到显示外设

<img src="https://mintcdn.com/qualcomm-prod/T1k4QQ7G3l_dE-rX/Linux/images/peripheral-interfaces/Display_DPU_architecture.png?fit=max&auto=format&n=T1k4QQ7G3l_dE-rX&q=85&s=353218d720a9e852e36cf35e1c88ee7d" width="616" height="210" data-path="Linux/images/peripheral-interfaces/Display_DPU_architecture.png" />

DPU 提供以下图像处理和接口能力：

图像处理包括以下内容：

1. 合成（Composition）：将各个图层混合为单帧并发送到显示面板

2. 缩放（Scaling）：支持对源图像进行放大和缩小以匹配面板分辨率

3. 颜色格式转换：将颜色从一种颜色格式转换为另一种（从 YUV 到 RGB）

4. 色彩空间转换：将颜色从一个色彩空间转换到另一个（sRGB、P3 和 BT2020）

5. 色彩处理：增强颜色以获得更好的视觉质量

6. 接口：通过移动行业处理器接口显示串行接口（MIPI DSI）连接各种面板，并通过 DisplayPort 接口连接电视或显示器

7. MIPI DSI：定义主处理器与遵循 MIPI 联盟移动设备接口规范的外设之间的协议

8. DisplayPort：作为数字显示接口，主要将视频源连接到计算机显示器等显示设备，还可以传输音频、USB 和其他形式的数据

## 显示架构

### DPU 硬件架构

<img src="https://mintcdn.com/qualcomm-prod/T1k4QQ7G3l_dE-rX/Linux/images/peripheral-interfaces/DPU_HW_architecture_block_diagram.png?fit=max&auto=format&n=T1k4QQ7G3l_dE-rX&q=85&s=73f02b273572c45b840f9358144b1ce5" width="290" height="401" data-path="Linux/images/peripheral-interfaces/DPU_HW_architecture_block_diagram.png" />

| 组件         | 功能                   |
| ---------- | -------------------- |
| **总线接口**   | 从内存中获取数据             |
| **源表面处理**  | 读取 RGB/YUV 表面；执行格式转换 |
| **混合**     | 混合并合成源表面             |
| **目标表面处理** | 针对面板特性转换和调整数据        |
| **压缩**     | 通过发送压缩的显示缓冲区来降低带宽    |
| **显示接口**   | 为连接的显示外设生成时序         |

### 显示软件架构

<img src="https://mintcdn.com/qualcomm-prod/T1k4QQ7G3l_dE-rX/Linux/images/peripheral-interfaces/DPU_SW_architecture_block_diagram.png?fit=max&auto=format&n=T1k4QQ7G3l_dE-rX&q=85&s=24cad07837863457ea8fda4cc008937d" width="859" height="719" data-path="Linux/images/peripheral-interfaces/DPU_SW_architecture_block_diagram.png" />

| 组件                | 说明                      |
| ----------------- | ----------------------- |
| **Wayland Sink**  | 与 Weston 通信以渲染显示的插件     |
| **Weston**        | Wayland 合成器；负责合成和渲染     |
| **DRM 后端**        | 管理 Adreno DPU 硬件资源和合成策略 |
| **libdrm**        | 提供 DRM IOCTL API 的库     |
| **DRM/KMS 框架**    | 面向硬件特性的内核和用户态接口         |
| **Adreno DPU 驱动** | 管理通往面板接口的所有像素数据路径       |

## 显示规格

### 显示特性

主要特性

显示子系统支持以下主要特性：

1. 采用上游协议的 Wayland 和 Weston

2. 带直接渲染管理器（DRM）后端模块的 Weston 合成器

3. DSI 接口

4. 4 路 DisplayPort，支持单流传输（SST）

能力

设备支持同时使用两路显示，并提供多种配置以实现最大并发。下表总结了各项能力。

| 接口       | 能力                                                                                                                                        |
| -------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| **DSI0** | 支持 1280 × 720，使用参考 Raspberry Pi（RPi）面板；支持视频电子标准协会（VESA）显示流压缩（DSC）1.2                                                                      |
| **eDP0** | 支持 3840 × 2160 @ 60 fps 30 bpp                                                                                                            |
| **eDP1** | 支持 3840 × 2160 @ 60 fps 30 bpp                                                                                                            |
| **eDP2** | 支持 3840 × 2160 @ 60 fps 30 bpp                                                                                                            |
| **eDP3** | 支持 3840 × 2160 @ 60 fps 30 bpp                                                                                                            |
| **最大并发** | 支持以 DP0 为主显示的 3840 × 2160 @ 60 fps、30 bpp，以及以 DP1 为副显示的 3840 × 2160 @ 60 fps 30 bpp。请注意，软件支持最大并发（DSI、eDP0 和 eDP1 之间仅支持 4 路流，包括多流传输（MST））。 |

## 设置 DisplayPort

### 连接 DisplayPort

要在 DisplayPort 上查看示例应用程序的输出，请设置 DisplayPort。

<img src="https://mintcdn.com/qualcomm-prod/Bh7DlgudKfjY_3Wf/Linux/images/peripheral-interfaces/Displayport_setup_workflow.png?fit=max&auto=format&n=Bh7DlgudKfjY_3Wf&q=85&s=e79f61ff4994f44ffa7e48f85fc2e9ac" width="1133" height="228" data-path="Linux/images/peripheral-interfaces/Displayport_setup_workflow.png" />

显示子系统提供 Weston 和 Wayland 合成器以及 libdrm，它们与 DPU 驱动交互以渲染 Wayland 客户端应用程序。使用示例测试应用程序来评估 Wayland 应用程序的基本渲染并连接到 DisplayPort。

### 验证 DisplayPort 设置

<img src="https://mintcdn.com/qualcomm-prod/Bh7DlgudKfjY_3Wf/Linux/images/peripheral-interfaces/IQ-9075_displayport_setup.png?fit=max&auto=format&n=Bh7DlgudKfjY_3Wf&q=85&s=2c1f1b807ff0ac4ebf4143447bd39c24" width="550" height="619" data-path="Linux/images/peripheral-interfaces/IQ-9075_displayport_setup.png" />

<Steps>
  <Step title="连接主显示器">
    将 DisplayPort 线连接到 **eDP0** 连接器。
  </Step>

  <Step title="连接副显示器（可选）">
    如需双显示，将第二根 DisplayPort 线连接到 **eDP1**。
  </Step>

  <Step title="上电">
    给设备上电。Weston 在启动过程中自动运行并显示花朵图案。

    <img src="https://mintcdn.com/qualcomm-prod/GfyA_U32cnx0UaZ3/Linux/images/peripheral-interfaces/dragonwing_image.png?fit=max&auto=format&n=GfyA_U32cnx0UaZ3&q=85&s=865afde0146393ced6e464e9c7e5a021" width="3910" height="2214" data-path="Linux/images/peripheral-interfaces/dragonwing_image.png" />
  </Step>
</Steps>

### SSH 访问

您必须启用 SSH 才能访问您的主机设备。

## 测试与验证

### 运行 Weston simple EGL 客户端应用程序

Weston simple EGL 是一个示例测试应用程序，用于验证 DisplayPort 上帧的合成和渲染。要运行该应用程序，请执行以下命令：

```bash theme={null}
mount -o remount,rw /
```

```
. /etc/profile
```

```
export XDG_RUNTIME_DIR=/run/user/1000 && mkdir -p $XDG_RUNTIME_DIR
```

```
cd /usr/bin
```

```
export WAYLAND_DISPLAY=wayland-1 && weston-simple-egl
```

下图显示了在显示器上运行的 Weston simple EGL 客户端应用程序。

<img src="https://mintcdn.com/qualcomm-prod/GfyA_U32cnx0UaZ3/Linux/images/peripheral-interfaces/dragonwing_image_weston.png?fit=max&auto=format&n=GfyA_U32cnx0UaZ3&q=85&s=8352f6622bc4882ac4f20df135b03532" width="3865" height="2232" data-path="Linux/images/peripheral-interfaces/dragonwing_image_weston.png" />

按 `Ctrl+C` 终止。

### 运行 DRM modetest 应用程序

DRM modetest 可确保 DSI 和 DPU 路径正常工作。要验证显示驱动拓扑，请运行 DRM modetest。

注意

您必须启用 SSH 才能访问您的主机设备。请参阅 [Connect SSH](https://dragonwingdocs.qualcomm.com/Linux/devices/iq9075-evk/set-up-the-device#connect-over-ssh)

1. 要终止 Weston 客户端应用程序，请在设备 shell 中运行以下命令：

```
mount -o remount,rw /
```

```
ps -A | grep weston
```

示例输出：

```
824 ?        00:00:12 weston
1090 ?        00:00:00 weston-keyboard
1092 ?        00:00:01 weston-desktop-
```

使用示例 Weston 进程列表中的 Weston 进程 ID 来终止 Weston 进程。

2. 要终止所有 Weston 进程，请运行以下命令：

```
systemctl stop weston.service
```

3. 要更改 modetest 应用程序的权限，请运行以下命令：

```
chmod 0777 /usr/bin/modetest
```

4. 要查看连接器 ID 和模式，请运行以下命令：

```
/usr/bin/modetest -M msm > /opt/drm_mode.txt
```

5. 要验证 DRM 模式和连接器信息，请将 /opt/drm\_mode.txt 文件拉取到主机本地。使用安全复制协议（SCP）将 drm\_mode.txt 文件从设备拉取到主机。例如：

```
scp -r root@<IP of the device>:/opt/drm_mode.txt <directory path of the host machine>
```

注意

出现密码提示时，输入 oelinux123。
下图所示的输出来自 /opt/drm\_mode.txt 文件。

<img src="https://mintcdn.com/qualcomm-prod/XFFGGnuKFRy5vKOW/Linux/images/peripheral-interfaces/drm_output.png?fit=max&auto=format&n=XFFGGnuKFRy5vKOW&q=85&s=3f23888f707bb9ff3fe5b2b63e9d1337" width="1503" height="166" data-path="Linux/images/peripheral-interfaces/drm_output.png" />

6. 要获取连接器 ID、模式名称和刷新率，请使用 /opt/drm\_mode.txt 文件中的相关值：

```
modetest -M msm -s <Connector id>:<mode name>-<refresh>
```

7. 要启动 modetest 应用程序，请使用从 /opt/drm\_mode.txt 文件中获取的连接器 ID 和模式名称运行以下示例命令。例如：

```
/usr/bin/modetest -M msm -s 32:1920x1080-60
```

注意

启动 DRM modetest 应用程序，并忽略警告日志：Failed to set gamma: Function not implemented。

<img src="https://mintcdn.com/qualcomm-prod/T1k4QQ7G3l_dE-rX/Linux/images/peripheral-interfaces/DRM_mode_test.png?fit=max&auto=format&n=T1k4QQ7G3l_dE-rX&q=85&s=90a7a78c9d543821b0b91126925a16c4" width="694" height="384" data-path="Linux/images/peripheral-interfaces/DRM_mode_test.png" />

要终止 modetest 应用程序，请按 CTRL + C。
确保重新启动 Weston

```
systemctl start weston.service
```

## 故障排查

### 检查 DisplayPort 状态

使用以下命令挂载 debugfs 文件系统

```
 mount -t debugfs none /sys/kernel/debug
```

```bash theme={null}
# Cable status
cat /sys/class/drm/card0-DP-1/status   # eDP0
cat /sys/class/drm/card0-DP-2/status   # eDP1

# Available modes (EDID)
cat /sys/class/drm/card0-DP-1/modes

# Detailed DP info
cat /sys/kernel/debug/dri/0/DP-1/dp_debug
```

## 资源

| 资源           | URL                                                                                                                        |
| ------------ | -------------------------------------------------------------------------------------------------------------------------- |
| DRM 内部机制     | [https://www.kernel.org/doc/html/v5.4/gpu/drm-internals.html](https://www.kernel.org/doc/html/v5.4/gpu/drm-internals.html) |
| 内核模式设置（KMS）  | [https://www.kernel.org/doc/html/v5.4/gpu/drm-kms.html](https://www.kernel.org/doc/html/v5.4/gpu/drm-kms.html)             |
| Wayland 协议   | [https://wayland.freedesktop.org/](https://wayland.freedesktop.org/)                                                       |
| Weston 合成器   | [https://gitlab.freedesktop.org/wayland/weston](https://gitlab.freedesktop.org/wayland/weston)                             |
| GStreamer 文档 | [https://gstreamer.freedesktop.org/documentation/](https://gstreamer.freedesktop.org/documentation/)                       |
