1. 课程导入

智能座舱正在从“单中控屏+机械仪表”快速演进为“多屏协同+多模态交互”的移动计算平台。典型车型已经同时具备全液晶仪表、中央信息娱乐屏、副驾娱乐屏、HUD抬头显示、电子后视镜屏以及后排娱乐屏,屏幕数量从2块增长到5块甚至更多,分辨率从720p提升到2K/4K,刷新率从60Hz向90Hz/120Hz演进。对系统而言,这不再是“多接几根线”的问题,而是图形栈、显示管线、输入分发、安全隔离与实时性保障的系统工程。

一、核心趋势:从多屏到“座舱域”

多屏座舱的本质变化可以归纳为三点:

  • 显示资源集中化:过去每个屏幕由独立ECU驱动,现在趋向于一个座舱域控制器(CDC)驱动多路显示输出,通过DP/eDP、LVDS、MIPI DSI等接口连接不同屏幕。
  • 内容跨屏流动:导航、媒体、通话、ADAS提示需要在仪表、中控、HUD之间迁移或镜像,要求窗口系统支持跨输出(output)的surface管理与同步。
  • 安全与体验分层:仪表和HUD属于安全相关显示,要求确定性刷新与故障隔离;中控和副驾屏属于体验相关显示,允许更丰富的动效与第三方应用。
多屏座舱的图形挑战不是“画得快”,而是“在正确的时间把正确的画面送到正确的屏幕,并且互不干扰”。

二、Wayland在车载中的角色

Wayland是一套现代显示服务器协议,核心思想是合成器(compositor)作为显示与输入的中心。客户端应用把渲染结果提交为surface,合成器负责布局、合成、输出到具体显示设备。相比X11,Wayland在车载场景中有明显优势:

  • 架构简洁:没有X Server的转发层,客户端直接渲染到buffer,减少拷贝与延迟。
  • 多输出原生支持:一个compositor可以管理多个output,每个output有独立的模式、缩放、旋转和刷新率,天然适配多屏。
  • 安全隔离:客户端默认只能访问自己的surface,无法截取其他应用画面,便于满足车载信息安全要求。
  • 可定制合成策略:车厂可以在compositor中实现“仪表层固定、中控层可切换、HUD层只读”等策略。

在车载Linux图形栈中,Wayland通常位于应用与底层显示驱动之间,典型链路如下:

应用 (Qt/Flutter/Web/原生EGL)
        ↓ 提交 surface
Wayland compositor (Weston/自定义合成器)
        ↓ 合成与输出
DRM/KMS (内核显示子系统)
        ↓
GPU / 显示控制器 → DP/eDP/LVDS/MIPI DSI → 屏幕

因此,学习Wayland多屏座舱显示工程,实际上是在学习“应用—合成器—内核显示—屏幕”这条链路上如何做布局、同步、性能与稳定性设计。

三、课程目标与学习路径

本课程面向已经具备Linux基础、C/C++或图形应用开发经验的工程师,目标是让你能够独立完成多屏座舱显示方案的设计、实现与调优。具体目标包括:

  1. 理解Wayland协议核心对象:display、registry、compositor、surface、output、seat、xdg-shell等。
  2. 掌握多输出管理:output枚举、模式设置、缩放、旋转、热插拔与跨屏布局。
  3. 掌握合成器定制:基于Weston或自研compositor实现车载多屏策略。
  4. 掌握性能与同步:帧同步、VSync、多屏刷新率差异、延迟与掉帧分析。
  5. 掌握调试与排障:日志、DRM调试、GPU性能分析、输入分发问题定位。

学习路径建议按“协议→合成器→多屏→性能→实战”推进,下表给出各阶段重点与产出物:

阶段 核心内容 关键产出
协议基础 Wayland对象模型、surface提交、xdg-shell 能读懂协议接口与客户端示例
合成器入门 Weston架构、backend、renderer、shell 能启动并配置一个多输出compositor
多屏管理 output布局、缩放、热插拔、跨屏surface 实现仪表+中控+副驾三屏布局
性能与同步 帧调度、VSync、多屏刷新率、延迟测量 定位并优化掉帧与撕裂问题
车载实战 安全隔离、启动优化、故障恢复、量产调试 形成可落地的多屏显示方案

四、典型场景与常见误区

以一个真实座舱域控制器为例:SoC提供三路显示输出,分别连接12.3英寸仪表、15.6英寸中控和12.3英寸副驾屏。仪表要求上电后1.5秒内显示倒车影像,中控运行Android容器,副驾运行独立Linux应用。此时Wayland compositor需要:

  • 为仪表output设置最高优先级和固定刷新率;
  • 为中控和副驾output分别创建独立的shell区域;
  • 在倒车信号到来时,将摄像头surface直接叠加到仪表层,绕过普通应用合成路径。
常见误区一:认为“多屏就是多开几个窗口”。实际上,多屏涉及output管理、跨屏坐标、输入焦点和安全层级,窗口只是最终表现。
常见误区二:忽视刷新率差异。仪表60Hz、中控120Hz时,若合成器统一按一个节奏提交,会导致其中一块屏周期性掉帧或延迟增大。
常见误区三:把Wayland当成“另一个X11”。Wayland的客户端不能随意读取其他窗口内容,很多X11时代的调试手段在Wayland下需要替换。

下面的SVG展示了本节的核心知识结构:从多屏座舱趋势出发,落到Wayland在图形栈中的位置,再展开课程目标与学习路径,帮助你建立整体认知地图。

Wayland 多屏座舱显示工程 · 第1章认知地图 趋势 → 角色 → 目标 → 路径 多屏座舱趋势 仪表 / 中控 / 副驾 HUD / 后排 / 电子后视镜 集中化 · 跨屏 · 安全分层 Wayland 的角色 合成器中心 · 多输出原生 安全隔离 · 可定制策略 应用 ↔ 合成器 ↔ DRM/KMS 课程目标 协议 · 多输出 · 合成器 性能 · 同步 · 排障 独立完成多屏方案 学习路径 协议 → 合成器 → 多屏 → 性能 → 车载实战 车载图形栈位置 应用层 Wayland Compositor DRM / KMS GPU / 显示控制器 屏幕 本章关键问题 多屏座舱为什么需要统一的图形合成层? Wayland 如何管理多个 output 与跨屏 surface? 安全相关显示与体验显示如何分层? 性能、同步与排障应沿哪条链路展开?