2. 显示基础

在 Android 显示驱动与 DRM 集成工程中,几乎所有调试问题最终都会回到一组最基础的显示参数:像素如何组成画面、分辨率如何决定帧大小、刷新率如何驱动扫描、色深与色彩空间如何影响颜色表达、时序如何约束信号、带宽如何决定链路可行性,以及显示接口如何把这些参数承载到屏幕上。理解这些概念,是后续阅读 DRM 模型、配置 CRTC/Encoder/Connector、分析日志与排查花屏、闪屏、黑屏、偏色、掉帧等问题的前提。

核心原理:从像素到一帧画面

像素是显示的最小可寻址单元,每个像素通常由红、绿、蓝三个子像素组成,通过不同亮度组合形成颜色。分辨率描述一帧图像在水平与垂直方向上的像素数量,例如 1920×1080 表示每行 1920 个像素、共 1080 行。刷新率表示屏幕每秒重绘画面的次数,单位 Hz,例如 60Hz 表示每秒扫描 60 帧。色深描述每个颜色通道可用的比特数,常见 8bit 表示每通道 256 级,RGB 三通道合计约 1677 万色。色彩空间则定义这些数值如何映射到真实颜色,例如 sRGB、Display P3、BT.2020 等。

时序是显示链路中最容易被忽视却最关键的部分。一帧画面并不是只有有效像素,还包含水平前肩、水平同步、水平后肩、垂直前肩、垂直同步、垂直后肩等消隐区。显示控制器必须按照面板要求的时序输出像素时钟、HSYNC、VSYNC、DE 等信号,否则面板无法正确锁定画面。带宽则是把这些数据在给定时间内传输完成的能力,通常由分辨率、刷新率、色深、消隐开销和接口编码效率共同决定。

显示基础参数如何共同决定一帧画面 像素 / 分辨率 1920×1080 决定帧尺寸 刷新率 60Hz / 120Hz 决定每秒帧数 色深 / 色彩空间 8bit / sRGB 决定颜色表达 时序 H/V 前后肩 + 同步 决定信号能否锁定 带宽计算:分辨率 × 刷新率 × 色深 × 消隐开销 ÷ 接口编码效率 1920×1080×60Hz×24bit ≈ 2.99Gbps(有效像素),加消隐后更高 带宽不足会导致降刷新率、降色深、压缩或无法点亮 MIPI DSI 移动端主流 eDP / DP 笔记本 / 外接 HDMI 电视 / 显示器 LVDS / RGB 传统面板 DRM 中:Connector 描述接口与模式,CRTC 生成时序,Encoder 完成编码,Plane 提供像素数据

方法流程:从参数到点亮屏幕

在工程实践中,点亮一块屏通常遵循以下流程:首先确认面板规格书中的分辨率、刷新率、色深、色彩空间和接口类型;其次根据面板时序表计算像素时钟与消隐参数;然后确认 SoC 显示控制器和接口 PHY 的带宽能力;接着在设备树或 DRM 模式配置中写入 mode、bus format、lane 数、像素格式等参数;最后通过 DRM 调试节点验证 Connector 状态、CRTC 模式与帧缓冲格式是否匹配。

# 查看 DRM 连接器与模式
cat /sys/class/drm/card0-DSI-1/status
cat /sys/class/drm/card0-DSI-1/modes

# 查看当前 CRTC 与帧缓冲格式
modetest -M msm -c
modetest -M msm -p

# 典型面板时序参数(示例)
clock: 148500 kHz
hdisplay: 1920, hsync_start: 2008, hsync_end: 2052, htotal: 2200
vdisplay: 1080, vsync_start: 1084, vsync_end: 1089, vtotal: 1125

案例场景:1920×1080@60Hz 的带宽核算

假设一块面板为 1920×1080、60Hz、RGB888,即每像素 24bit。有效像素带宽为 1920×1080×60×24 ≈ 2.99Gbps。但实际传输还要加上消隐区,若 htotal 为 2200、vtotal 为 1125,则总像素数为 2200×1125×60 ≈ 1.485 亿像素/秒,对应像素时钟约 148.5MHz,数据带宽约 3.56Gbps。若使用 MIPI DSI 4 lane,每 lane 约 1Gbps 以上,通常可以满足;若 lane 数不足或像素格式变为 10bit,则必须重新核算,否则会出现无法点亮或降帧。

参数 含义 典型值 工程影响
分辨率 一帧有效像素行列数 1920×1080 决定帧缓冲大小与带宽基数
刷新率 每秒扫描帧数 60Hz / 120Hz 影响流畅度与带宽
色深 每通道比特数 8bit / 10bit 影响颜色精度与带宽
色彩空间 颜色数值到真实颜色的映射 sRGB / DCI-P3 影响偏色与 HDR 表现
时序 同步与消隐参数 H/V front/back porch 决定面板能否锁定
带宽 链路每秒可传数据量 约 3.56Gbps 决定接口与 lane 配置

误区与复盘

常见误区一:只看有效分辨率,忽略消隐开销。实际像素时钟由 htotal×vtotal×刷新率决定,消隐区可能让带宽增加 10% 到 20%。

常见误区二:把色深和色彩空间混为一谈。色深决定“有多少级”,色彩空间决定“这些级代表什么颜色”。8bit sRGB 与 8bit P3 的数值相同,显示颜色却不同。

常见误区三:接口能插上就认为带宽够。HDMI、DP、DSI 都有版本、lane 数、编码效率限制,必须按实际模式核算。

调试建议:先确认面板规格书中的 mode 与时序,再核对 DRM 中 Connector 的 modes、CRTC 的 mode 和 Plane 的 format。若出现花屏,优先检查像素格式与 bus format;若出现闪屏,优先检查时序与刷新率;若出现偏色,优先检查色彩空间与 gamma;若无法点亮,优先检查带宽与 lane 配置。

掌握这些基础参数后,后续进入 DRM 框架时,就能把 Connector、CRTC、Encoder、Plane、Framebuffer 等对象与真实显示参数对应起来,而不是停留在抽象概念层面。显示问题的根因,往往就藏在这些看似简单的数字关系之中。