2. SA8155 显示子系统架构:Qualcomm MDSS 硬件架构与显示流水线详解

SA8155 平台的显示能力核心由 Qualcomm MDSS(Mobile Display Subsystem)承载。MDSS 是一个高度可编程、多流水线的硬件模块,负责从系统内存(DDR)读取帧缓冲区数据,经过合成、色彩处理、时序生成,最终驱动物理显示面板。理解 MDSS 的硬件架构与显示流水线(Display Pipeline)是进行 DRM/KMS 驱动开发与 HDR 调试的基础。

2.1 MDSS 硬件架构总览

MDSS 内部由多个专用硬件块组成,通过内部总线连接。下图展示了 SA8155 MDSS 的核心模块及其互连关系:

SA8155 MDSS 硬件架构总览 SA8155 MDSS 硬件架构总览 系统内存 (DDR) - 帧缓冲区 MDP (Mobile Display Processor) 图层合成 | 缩放 | 色彩转换 | HDR 处理 显示控制器 (DSI / DP / eDP) 时序生成 (Timing Controller) | 数据打包 | 物理层驱动 物理接口 (PHY) - D-PHY / C-PHY 显示面板 (LCD / OLED) 关键模块说明 MDP: 核心图像处理 DSI/DP: 接口协议控制

MDSS 的关键硬件模块包括:

  • MDP (Mobile Display Processor):显示流水线的核心处理单元,负责图层合成、缩放、色彩空间转换、HDR 元数据解析与色调映射。
  • 显示控制器 (Display Controller):根据配置的时序参数(Timing Parameters)生成像素时钟、行同步、帧同步信号,并将 MDP 处理后的数据打包为 DSI/DP 协议格式。
  • 物理层 (PHY):实现 D-PHY 或 C-PHY 电气特性,负责高速串行数据的发送。
  • 接口桥接 (可选):如 HDMI 桥接芯片,用于将 DSI 信号转换为 HDMI 输出。
调试要点: 在 SA8155 上,MDP 和显示控制器之间的时钟同步与 FIFO 配置是常见问题点。若出现屏幕撕裂(Tearing)或闪屏,应优先检查 MDP 输出与 Controller 输入之间的像素时钟匹配。

2.2 显示流水线 (Display Pipeline) 详解

显示流水线定义了从帧缓冲区到物理像素的完整数据流路径。SA8155 的 MDSS 支持多个独立的显示流水线,每个流水线可驱动一个显示接口。下图展示了一个典型的单流水线数据流:

SA8155 显示流水线数据流 SA8155 显示流水线数据流 (Display Pipeline) 阶段1: 图层输入 Layer 0 (UI) Layer 1 (Video) 阶段2: MDP 合成 Alpha Blending 色彩转换 (HDR/SDR) 阶段3: 后处理 缩放 (Scaler) Dither / GC 阶段4: 时序生成 Timing Controller DSI/DP 打包 流水线关键属性 每个流水线包含独立的图层输入通道 (Pipe) | 支持 HDR 元数据透传 | 输出分辨率由 Timing Controller 决定

2.2.1 图层输入与 Pipe 管理

每个显示流水线包含多个输入通道(Pipe),每个 Pipe 对应一个独立的帧缓冲区(Framebuffer)。SA8155 的 MDP 支持最多 4 个实时图层(取决于分辨率与格式)。

Pipe 编号典型用途支持格式HDR 支持
Pipe 0UI 主图层 (SurfaceFlinger)RGBA8888, RGB565否 (SDR)
Pipe 1视频图层 (Codec2)NV12, P010是 (HDR10/HLG)
Pipe 2辅助图层 (StatusBar/NavBar)RGBA8888否
Pipe 3光标层 / 安全视频ARGB8888可选
HDR 集成关键点: 视频图层(Pipe 1)必须配置为支持 10-bit 像素格式(如 P010)并启用 HDR 元数据传递。UI 图层通常为 8-bit SDR,MDP 负责在合成阶段将 SDR 与 HDR 图层进行正确的色彩空间混合。

2.2.2 MDP 合成与色彩处理

MDP 是流水线的核心处理阶段,主要完成以下任务:

  1. Alpha Blending:按照 Z-order 顺序混合多个图层,支持全局 Alpha 与逐像素 Alpha。
  2. 色彩空间转换 (CSC):将各图层从输入色彩空间(如 BT.709、BT.2020)转换到统一的合成色彩空间。
  3. HDR 处理:解析 HDR 静态元数据(SMPTE ST 2086),执行色调映射(Tone Mapping)以适配显示面板的亮度范围。
  4. 缩放 (Scaling):支持整数倍缩放与高质量插值缩放,用于适配不同分辨率的图层。

2.2.3 时序生成与接口输出

显示控制器根据 DRM 配置的 drm_display_mode 生成精确的时序信号。关键时序参数包括:

参数说明典型值 (1080p60)
Hactive / Vactive有效显示区域1920 x 1080
HFP / HBP水平前/后肩88 / 148
VFP / VBP垂直前/后肩4 / 36
Pixel Clock像素时钟频率148.5 MHz
常见调试陷阱: 在 SA8155 上,如果 DSI 控制器配置的时序参数与面板规格书不匹配(尤其是 HBP 和 VBP),可能导致面板无法初始化或显示偏移。务必使用示波器或 vendor 提供的调试工具验证像素时钟与同步信号。

2.3 多流水线与显示拓扑

SA8155 支持多个显示流水线并行工作,典型拓扑如下:

  • Primary Display:主流水线,驱动车载中控屏(通常通过 DSI 接口)。
  • Secondary Display:副流水线,驱动仪表盘或副驾娱乐屏(通过 DSI 或 DP 接口)。
  • External Display:通过 USB-C DP Alt Mode 驱动外部显示器。

每个流水线在 DRM 框架中对应一个 drm_crtc 和 drm_encoder。驱动初始化时,需要为每个流水线分配独立的 MDP 资源与中断线。

性能考量: 当同时驱动主屏(4K@60)和副屏(1080p@60)时,MDP 的总合成带宽可能成为瓶颈。建议在调试阶段通过 /sys/kernel/debug/dri/0/ 下的 debugfs 节点监控 MDP 的时钟频率与 FIFO 状态。

2.4 与 DRM/KMS 框架的映射关系

MDSS 硬件模块与 DRM 核心对象的对应关系如下表:

MDSS 硬件模块DRM 对象职责
MDP 合成器drm_crtc管理流水线整体状态、图层合成、Vblank 事件
显示控制器 (DSI/DP)drm_encoder + drm_connector时序生成、面板控制、EDID 读取
MDP Pipedrm_plane图层输入、格式转换、缩放
帧缓冲区drm_framebuffer内存中的像素数据描述

在驱动实现中,msm_drm 驱动通过 mdp5_crtc 和 dsi_encoder 等结构体封装硬件操作。调试时,可通过 drm_info 工具查看对象拓扑:

# 查看 CRTC 与 Plane 的绑定关系
cat /sys/kernel/debug/dri/0/crtc-0/state
# 查看当前显示的时序参数
cat /sys/kernel/debug/dri/0/encoder-0/state