2. 显示技术基础
在进入 Wayland 多屏显示开发之前,必须先建立一套关于“显示”本身的共同语言。很多多屏问题的根源并不在合成器协议,而在于对分辨率、刷新率、像素时钟、扫描时序这些底层概念理解不一致。本节从显示器件演进讲起,把显示原理与多屏术语串成一条完整的知识链,为后续的 DRM/KMS、输出管理与合成器实现打基础。
一、显示原理演进:从CRT到LCD/OLED
CRT(阴极射线管)通过电子束逐行扫描荧光屏发光。它的图像由“扫描”这一物理过程产生,因此天然存在水平/垂直消隐期,也天然与“时序”绑定。电子束从左到右、从上到下扫描,扫完一行回到下一行起点需要时间,扫完一帧回到顶部也需要时间,这就是行消隐与场消隐的来源。
LCD(液晶显示)不再依赖电子束扫描,而是通过背光加液晶分子偏转控制每个像素的透光率。像素是“保持型”的,一旦写入就持续显示到下一次刷新。但为了兼容既有视频接口与传输体系,LCD 依然沿用了 CRT 的扫描时序模型,只是消隐期变成了数据传输的“空档”而非物理回扫时间。
OLED(有机发光二极管)则是自发光器件,每个像素独立发光,无需背光。它带来更高对比度、更快响应和更薄形态,但也带来烧屏、亮度衰减等新问题。对软件而言,三者最大的共性是:上层看到的都是一块由像素矩阵构成的、按帧刷新的输出设备,差异主要体现在时序参数、色彩处理和电源管理上。
二、分辨率、刷新率与像素时钟
分辨率描述一帧图像的像素规模,例如 1920×1080 表示水平 1920 个像素、垂直 1080 行。它决定了画面的细节上限,也决定了帧缓冲的大小。多屏场景中,每块屏幕可以有不同的分辨率,合成器需要为每块输出分别管理缓冲。
刷新率表示屏幕每秒重绘画面的次数,单位 Hz。60Hz 意味着每 16.67ms 刷新一帧。刷新率越高,运动画面越顺滑,输入延迟越低。多屏下不同屏幕可以有不同的刷新率,这给合成器的帧调度带来挑战。
像素时钟(Pixel Clock)是显示时序的核心参数,表示每秒传输的像素数量,单位 MHz。它由分辨率、刷新率和消隐共同决定。一个常用的近似关系是:
像素时钟 ≈ (水平总像素 × 垂直总行数) × 刷新率
其中:
水平总像素 = 水平有效像素 + 水平前肩 + 水平同步 + 水平后肩
垂直总行数 = 垂直有效行数 + 垂直前肩 + 垂直同步 + 垂直后肩
例如 1920×1080@60Hz 的经典 CEA-861 时序,水平总像素约 2200,垂直总行数约 1125,则像素时钟约为 2200×1125×60 ≈ 148.5MHz。这个数字在 DRM 模式信息中会以 clock 字段出现,是配置显示模式的关键依据。
核心关系:分辨率决定“画多大”,刷新率决定“画多快”,像素时钟决定“传多快”。三者通过扫描时序耦合在一起,改动任意一个都会影响其余参数。多屏开发中,必须为每块输出独立计算并校验这组参数。
三、多屏显示的基本术语
在 Wayland 与 DRM/KMS 语境下,多屏相关术语需要精确区分,否则容易在调试时混淆。
| 术语 | 含义 | 多屏开发中的关注点 |
|---|---|---|
| Connector(连接器) | 物理输出接口,如 HDMI-A-1、DP-1、eDP-1 | 热插拔检测、连接状态、EDID 读取 |
| CRTC | 显示控制器,负责扫描输出一个帧缓冲 | 数量有限,多屏时需合理分配 |
| Plane(平面) | 可叠加的图层,如主平面、光标平面、叠加平面 | 硬件合成、叠加层分配、格式支持 |
| Encoder | 将 CRTC 信号编码到 Connector 的转换器 | 接口类型匹配、共享限制 |
| EDID | 显示器能力描述数据,含支持模式与物理尺寸 | 模式枚举、最佳分辨率选择 |
| Mode(模式) | 一组完整时序参数,含分辨率、刷新率、像素时钟 | 模式校验、首选模式、自定义模式 |
| Framebuffer | 存储像素数据的内存缓冲 | 多屏可共享或独立,影响内存与合成策略 |
| Output(输出) | Wayland 中代表一个可显示的逻辑输出 | 与 Connector/CRTC 映射,逻辑布局 |
四、案例场景:双屏扩展的时序校验
假设一台笔记本通过 DP 外接 4K 显示器,内置屏为 1920×1080@60Hz,外接屏为 3840×2160@60Hz。开发中需要确认两件事:一是 GPU 是否有足够的像素时钟带宽同时驱动两块屏;二是两个 CRTC 是否都能分配到合适的 Encoder 与 Connector。
# 查看当前连接器与模式(示意)
$ modetest -M i915 -c
Connectors:
id encoder status name size
42 41 connected eDP-1 1920x1080
55 54 connected DP-1 3840x2160
# 查看 CRTC 与平面资源
$ modetest -M i915 -p
CRTCs:
id fb pos size
31 40 (0,0) 1920x1080
48 0 (0,0) 0x0
如果外接屏的像素时钟超出接口带宽,或 CRTC 数量不足,就会出现“只能镜像不能扩展”或“外接屏无法点亮”的现象。此时需要检查 EDID 中的模式列表、接口链路速率(如 DP 的 HBR2/HBR3)以及 CRTC 分配策略。
调试建议:遇到多屏异常时,先确认 Connector 状态与 EDID 是否正常,再检查 CRTC/Encoder 分配,最后核对 Mode 的像素时钟与接口带宽。多数“黑屏”问题出在时序参数与带宽校验,而非合成器逻辑。
五、常见误区与复盘
- 误区一:把分辨率等同于刷新率。两者独立,高分辨率不等于高刷新率,4K@30Hz 与 1080p@120Hz 是不同维度的取舍。
- 误区二:忽略消隐参数。只记有效分辨率而忽略前后肩与同步,会导致像素时钟计算错误,模式校验失败。
- 误区三:认为多屏必须同刷新率。Wayland 与 DRM 支持每输出独立模式,但合成器需要处理不同刷新率的帧调度。
- 误区四:混淆 Connector 与 Output。Connector 是物理接口,Output 是 Wayland 逻辑概念,二者通过 DRM 资源映射关联。
复盘来看,显示技术基础的价值在于建立“参数—时序—资源”三层认知:参数层理解分辨率、刷新率、像素时钟;时序层理解消隐与同步;资源层理解 Connector、CRTC、Plane、Encoder 的分配关系。只有这三层都清晰,后续在 Wayland 中处理多屏布局、模式切换与热插拔时,才能快速定位问题所在,而不是在协议层盲目猜测。