> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs-staging.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 显示

IQ-8275 平台配备 Qualcomm Adreno 显示处理单元（DPU），提供硬件加速的图像处理。IQ8-EVK 通过双 DisplayPort 输出支持两个显示器同时使用。

## 显示能力

| 接口      | 能力                                            |
| ------- | --------------------------------------------- |
| **DP0** | 3840 × 2160 @ 60 fps，30 bpp                   |
| **DP1** | 3840 × 2160 @ 60 fps，30 bpp                   |
| **并发**  | DP0 作为主显示 + DP1 作为副显示，均为 3840 × 2160 @ 60 fps |

**支持的功能：**

* 使用上游协议的 Wayland 和 Weston
* 带 DRM 后端的 Weston 合成器
* 2× DisplayPort，支持 SST 和 MST

## 架构

### DPU 硬件

<img src="https://mintcdn.com/qualcomm-staging/5j1H6H_NhFpsAqlq/Ubuntu/images/peripheral-interfaces/Display_DPU_architecture.png?fit=max&auto=format&n=5j1H6H_NhFpsAqlq&q=85&s=efd0324d3e4d1caf4c4e01528f87033c" width="616" height="210" data-path="Ubuntu/images/peripheral-interfaces/Display_DPU_architecture.png" />

<img src="https://mintcdn.com/qualcomm-staging/5j1H6H_NhFpsAqlq/Ubuntu/images/peripheral-interfaces/DPU_dataflow_diagram.png?fit=max&auto=format&n=5j1H6H_NhFpsAqlq&q=85&s=4acfc3e296badbc3e6d9d99341077bba" width="977" height="368" data-path="Ubuntu/images/peripheral-interfaces/DPU_dataflow_diagram.png" />

<img src="https://mintcdn.com/qualcomm-staging/5j1H6H_NhFpsAqlq/Ubuntu/images/peripheral-interfaces/DPU_HW_architecture_block_diagram.png?fit=max&auto=format&n=5j1H6H_NhFpsAqlq&q=85&s=73f219bd81e5ae201b7fe9168b9fd231" width="290" height="401" data-path="Ubuntu/images/peripheral-interfaces/DPU_HW_architecture_block_diagram.png" />

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

### 软件栈

<img src="https://mintcdn.com/qualcomm-staging/5j1H6H_NhFpsAqlq/Ubuntu/images/peripheral-interfaces/DPU_SW_architecture_block_diagram.png?fit=max&auto=format&n=5j1H6H_NhFpsAqlq&q=85&s=3c9db95789b99432e54e0a7fabb54141" width="859" height="719" data-path="Ubuntu/images/peripheral-interfaces/DPU_SW_architecture_block_diagram.png" />

<img src="https://mintcdn.com/qualcomm-staging/5j1H6H_NhFpsAqlq/Ubuntu/images/peripheral-interfaces/Display_sw_stacklayer.png?fit=max&auto=format&n=5j1H6H_NhFpsAqlq&q=85&s=5f558f4f9838497f7010c27e370c4d22" width="281" height="741" data-path="Ubuntu/images/peripheral-interfaces/Display_sw_stacklayer.png" />

| 组件                | 说明                      |
| ----------------- | ----------------------- |
| **Wayland Sink**  | 与 Weston 通信以渲染显示的插件     |
| **Weston**        | Wayland 合成器；处理合成和渲染     |
| **DRM 后端**        | 管理 Adreno DPU 硬件资源和合成策略 |
| **libdrm**        | 提供 DRM IOCTL API 的库     |
| **Adreno DPU 驱动** | 管理通往面板接口的所有像素数据路径       |

## 设置

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

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

  <Step title="开机">
    为设备通电。Weston 在启动期间自动运行并显示花朵图案。

    <img src="https://mintcdn.com/qualcomm-staging/5j1H6H_NhFpsAqlq/Ubuntu/images/peripheral-interfaces/hdmi_monitor_Server.png?fit=max&auto=format&n=5j1H6H_NhFpsAqlq&q=85&s=d41eb3a70e00ce1b5f628657fe23835a" width="700" height="393" data-path="Ubuntu/images/peripheral-interfaces/hdmi_monitor_Server.png" />
  </Step>
</Steps>

### SSH 访问

默认凭据：**用户名：** `ubuntu` / **密码：** `ubuntu`

## 测试和验证

### 运行 Weston EGL 客户端

```bash theme={null}
weston-simple-egl
```

**预期输出：** 显示器上以 60 fps 显示一个旋转的三角形。按 `Ctrl+C` 终止。

### GStreamer 视频播放

```bash theme={null}
# H.264 playback
gst-launch-1.0 -v filesrc location=/etc/media/video.mp4 ! qtdemux ! queue ! \
  h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! \
  video/x-raw,format=NV12 ! waylandsink

# H.265/HEVC playback
gst-launch-1.0 -v filesrc location=/etc/media/video_hevc.mp4 ! qtdemux ! queue ! \
  h265parse ! v4l2h265dec capture-io-mode=4 output-io-mode=4 ! \
  video/x-raw,format=NV12 ! waylandsink
```

## 调试

```bash theme={null}
sudo cat /sys/class/drm/card0-DP-1/status   # eDP0 cable status
sudo cat /sys/class/drm/card0-DP-2/status   # eDP1 cable status
sudo cat /sys/class/drm/card0-DP-1/modes    # Available EDID modes
dmesg | grep -i "dp\|display\|drm"
```

## 故障排除

<AccordionGroup>
  <Accordion title="无显示输出（黑屏）">
    ```bash theme={null}
    cat /sys/class/drm/card0-DP-1/status
    sudo dmesg | grep -i "dp\|display\|drm"
    ```

    * 检查连接到 eDP0 或 eDP1 的线缆
    * 检查显示器电源和输入源选择
  </Accordion>

  <Accordion title="Weston 无法启动">
    ```bash theme={null}
    journalctl -u weston
    ls -l /dev/dri/card0
    weston --idle-time=0 --continue-without-input --log=/home/ubuntu/weston.log
    ```
  </Accordion>

  <Accordion title="双显示不工作">
    ```bash theme={null}
    cat /sys/class/drm/card0-DP-1/status
    cat /sys/class/drm/card0-DP-2/status
    cat /sys/kernel/debug/dri/0/state
    ```
  </Accordion>

  <Accordion title="Weston 需要重启">
    ```bash theme={null}
    killall weston
    sudo systemctl start weston-autostart
    export XDG_RUNTIME_DIR=/run/user/$(id -u ubuntu)
    export WAYLAND_DISPLAY=wayland-1
    ```
  </Accordion>
</AccordionGroup>

## 资源

| 资源           | 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) |
| 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/)                       |
