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

# Display

The IQ-8275 platform features a Qualcomm Adreno Display Processing Unit (DPU) providing hardware-accelerated image processing. The IQ8-EVK supports two simultaneous displays via dual DisplayPort outputs.

## Display Capabilities

| Interface      | Capability                                                      |
| -------------- | --------------------------------------------------------------- |
| **DP0**        | 3840 × 2160 at 60 fps, 30 bpp                                   |
| **DP1**        | 3840 × 2160 at 60 fps, 30 bpp                                   |
| **Concurrent** | DP0 as primary + DP1 as secondary, both at 3840 × 2160 @ 60 fps |

**Supported features:**

* Wayland and Weston with upstream protocol
* Weston compositor with DRM backend
* 2× DisplayPort with SST and MST support

## Architecture

### DPU Hardware

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

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

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

| Component                          | Function                                                |
| ---------------------------------- | ------------------------------------------------------- |
| **Bus Interface**                  | Fetches data from memory                                |
| **Source Surface Processing**      | Reads RGB/YUV surfaces; performs format conversion      |
| **Blending**                       | Blends and mixes source surfaces                        |
| **Destination Surface Processing** | Converts and adjusts data for panel characteristics     |
| **Compression**                    | Reduces bandwidth by sending compressed display buffers |
| **Display Interface**              | Generates timings for connected display peripherals     |

### Software Stack

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

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

| Component             | Description                                                    |
| --------------------- | -------------------------------------------------------------- |
| **Wayland Sink**      | Plug-in communicating with Weston to render the display        |
| **Weston**            | Wayland compositor; handles composition and rendering          |
| **DRM Backend**       | Manages Adreno DPU hardware resources and composition strategy |
| **libdrm**            | Library providing DRM IOCTL APIs                               |
| **Adreno DPU Driver** | Manages all pixel data paths to panel interfaces               |

## Setup

<Steps>
  <Step title="Connect primary display">
    Connect a DisplayPort cable to the **eDP0** connector.
  </Step>

  <Step title="Connect secondary display (optional)">
    For dual display, connect a second DisplayPort cable to **eDP1**.
  </Step>

  <Step title="Power on">
    Power on the device. Weston launches automatically during boot and displays the flower pattern.

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

### SSH Access

Default credentials: **Username:** `ubuntu` / **Password:** `ubuntu`

## Testing and Verification

### Run Weston EGL Client

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

**Expected output:** A rotating triangle on the display at 60 fps. Press `Ctrl+C` to terminate.

### GStreamer Video Playback

```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
```

## Debugging

```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"
```

## Troubleshooting

<AccordionGroup>
  <Accordion title="No Display Output (Black Screen)">
    ```bash theme={null}
    cat /sys/class/drm/card0-DP-1/status
    sudo dmesg | grep -i "dp\|display\|drm"
    ```

    * Verify cable connection to eDP0 or eDP1
    * Check display power and input source selection
  </Accordion>

  <Accordion title="Weston Fails to Start">
    ```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="Dual Display Not Working">
    ```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 Needs Restart">
    ```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>

## Resources

| Resource                | URL                                                                                                                        |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| DRM Internals           | [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 Protocol        | [https://wayland.freedesktop.org/](https://wayland.freedesktop.org/)                                                       |
| Weston Compositor       | [https://gitlab.freedesktop.org/wayland/weston](https://gitlab.freedesktop.org/wayland/weston)                             |
| GStreamer Documentation | [https://gstreamer.freedesktop.org/documentation/](https://gstreamer.freedesktop.org/documentation/)                       |
