4. MDP通路基础

在SA8155平台中,MDP(Mobile Display Processor)是显示子系统的核心硬件模块,负责将GPU、VPU、Camera以及系统内存中的图层数据,经过格式转换、缩放、旋转、混合后,通过DSI、DP等显示接口输出到屏幕。理解MDP通路的硬件组成与数据流,是后续调试显示异常、性能瓶颈和色彩问题的前提。

一、MDP硬件组成与数据流

MDP并不是单一模块,而是一组围绕显示流水线协同工作的硬件单元。从数据源到屏幕,典型通路包括:DMA通道从DDR读取图层数据,进入Layer Mixer进行图层叠加,再经过Scaler缩放、Rotator旋转、CSC色彩空间转换,最终由Display Interface输出。每个阶段都有独立的寄存器配置和带宽需求。

SA8155 MDP 显示通路数据流 GPU 图层 RGBA / NV12 VPU 视频层 NV12 / P010 Camera 预览 MIPI CSI → DDR UI 合成层 ARGB8888 DMA 通道 DMA0 / DMA1 DMA2 / DMA3 地址 / 步长 格式 / 压缩 带宽仲裁 Layer Mixer 图层叠加 Alpha 混合 Z-order 排序 Blend 公式 背景色填充 Scaler 缩放 / 滤波 Rotator 0°/90°/180°/270° CSC RGB ↔ YUV 显示接口 DSI DP eDP HDMI 关键参数与调试关注点 • DMA:源地址、步长、格式、压缩模式、带宽仲裁优先级 • Layer Mixer:图层数量、Z-order、Alpha 模式、混合公式、背景色 • Scaler/Rotator/CSC:缩放比例、滤波系数、旋转角度、色彩矩阵与范围

二、图层混合与Z-order

Layer Mixer支持多图层叠加,每个图层有独立的Z-order、Alpha和混合模式。常见混合模式包括:源覆盖(Src over)、源叠加(Src alpha)、目标覆盖(Dst over)等。调试时若出现图层遮挡错误,应优先检查Z-order寄存器配置和Alpha预乘设置。

典型混合公式:

out.rgb = src.rgb * src.a + dst.rgb * (1 - src.a)
out.a   = src.a + dst.a * (1 - src.a)

三、缩放、旋转与色彩空间转换

Scaler负责将图层从源分辨率缩放到目标分辨率,支持多相滤波。缩放比例过大时可能引入模糊或振铃,需调整滤波系数。Rotator支持0°、90°、180°、270°旋转,旋转后DMA的步长和地址需要重新计算。CSC模块完成RGB与YUV之间的转换,涉及色彩矩阵、偏移量和范围(Full/Limited)。

模块 关键寄存器/参数 常见问题
DMA SRC_ADDR、STRIDE、FORMAT 地址越界、带宽不足
Layer Mixer ZORDER、ALPHA、BLEND_MODE 图层遮挡、透明异常
Scaler SRC_W/H、DST_W/H、FILTER 模糊、振铃、比例失真
Rotator ROT_ANGLE、STRIDE 旋转后花屏、步长错误
CSC MATRIX、OFFSET、RANGE 偏色、灰阶异常

四、DMA通道与显示接口

SA8155的MDP通常提供多个DMA通道,每个通道可绑定到不同的图层。DMA通道的带宽仲裁直接影响显示流畅度。显示接口方面,DSI用于MIPI屏幕,DP/eDP用于外接显示器,HDMI用于高清输出。不同接口的时序参数(如HFP、HBP、HSA、VFP、VBP、VSA)需要与屏幕规格严格匹配。

调试建议:使用 cat /sys/kernel/debug/dri/0/mdp 查看MDP寄存器状态;使用 dmesg | grep mdp 过滤MDP驱动日志;通过 echo 1 > /sys/kernel/debug/dri/0/mdp_dump 触发寄存器快照。

五、案例与误区复盘

案例:某项目在播放4K视频时出现画面撕裂。排查发现DMA通道带宽不足,Scaler输出分辨率超过MDP处理能力。通过降低缩放比例、启用压缩格式、调整DMA仲裁优先级后问题解决。

误区:很多开发者认为MDP只是简单的“叠加”,忽略了DMA带宽、CSC范围、旋转步长等细节。实际上,MDP通路的每个环节都可能成为显示异常的根因。建议在调试时按照“DMA→Layer Mixer→Scaler→Rotator→CSC→Display Interface”的顺序逐级排查,结合寄存器dump和日志分析,快速定位问题。

注意:修改MDP寄存器前务必确认时钟和电源域已开启,否则可能导致总线挂死。调试完成后应恢复默认配置,避免影响正常显示。