2. 车载图形系统概述

车载图形系统与消费电子图形系统最大的差异,在于它必须同时满足“安全、实时、多屏、长生命周期”四类约束。仪表、中控、HUD、后排娱乐、电子后视镜等显示对象,对刷新率、延迟、功能安全和温度适应性的要求各不相同。理解这些需求,是后续在 Linux 上做 GPU 与 DRM 集成的前提。

2.1 车载显示需求:不是一块屏,而是一组约束

车载显示需求可以从五个维度拆解:

  • 多屏异构:仪表通常要求高可靠、固定刷新;中控强调交互流畅;HUD 要求低延迟与高对比;后排娱乐则更关注视频解码与多路输出。
  • 实时性:倒车影像、电子后视镜等场景对端到端延迟敏感,通常要求在几十毫秒内完成采集、合成与显示。
  • 功能安全:仪表关键信息(车速、报警灯)不能因中控应用崩溃而丢失,因此需要独立图层、独立通道甚至独立显示控制器。
  • 环境适应:宽温、振动、电磁干扰、长期供货,决定了车规级 SoC 与 GPU 的选型逻辑。
  • 生命周期:整车生命周期常达 10 年以上,软件栈必须可维护、可升级、可回溯。
车载图形集成的核心目标:让“安全关键显示”和“非安全关键显示”在同一 SoC 上共存,同时保证各自的实时性、隔离性与可恢复性。

2.2 GPU 的角色:从渲染器到显示流水线的一环

在车载系统中,GPU 不只是“画图”的单元,它承担四类职责:

  1. 2D/3D 渲染:仪表指针、地图、3D 车模、动画过渡。
  2. 合成与图层处理:将多个应用表面合成为最终帧,部分平台由 GPU 完成,部分由显示控制器硬件合成。
  3. 视频后处理:色彩空间转换、缩放、去隔行,常与视频解码器协同。
  4. 通用计算:图像增强、畸变校正、部分感知算法加速。

需要特别注意的是:GPU 负责“产生帧”,但不直接决定“帧何时上屏”。上屏时序、图层叠加、页面翻转由 DRM/KMS 管理。把 GPU 与显示控制器混为一谈,是车载图形调试中最常见的认知误区。

2.3 Linux 图形栈分层:从应用到底层硬件

Linux 图形栈可以按“应用—窗口系统—图形 API—内核—硬件”五层理解。车载场景中,Wayland 逐渐取代 X11,成为主流合成器基础;DRM/KMS 则是所有显示路径的最终出口。

Linux 车载图形栈分层与 DRM/KMS 定位 应用层 仪表 HMI · 中控 Launcher · HUD 渲染 · 倒车影像 · 后排娱乐 窗口/合成层 Wayland 合成器(Weston / 定制合成器)· Surface 管理 · 输入分发 图形 API 层 OpenGL ES · Vulkan · EGL · GBM · 视频解码接口 内核图形子系统 DRM/KMS:CRTC · Encoder · Connector · Plane · Framebuffer · GEM/DMA-BUF GPU 驱动:渲染调度 · 内存管理 · 电源管理 · 固件加载 硬件层 车规 SoC · GPU · 显示控制器 · MIPI DSI / LVDS / DP · 面板与背光 DRM/KMS 显示路径统一出口

从图中可以看到,DRM/KMS 位于内核图形子系统内部,向上承接 GBM/EGL 与合成器,向下管理显示控制器与面板。它既是显示资源的抽象层,也是多屏、多图层、页面翻转的控制中心。

2.4 DRM/KMS 的定位:显示资源的“内核调度器”

DRM(Direct Rendering Manager)负责 GPU 与显示相关的内存、渲染与显示资源管理;KMS(Kernel Mode Setting)负责显示模式设置与图层合成。二者合称 DRM/KMS,是 Linux 显示路径的事实标准。

对象 职责 车载关注点
CRTC 扫描输出控制器,决定时序与刷新 多屏独立刷新、固定帧率
Encoder 将像素流转换为接口信号 DSI/LVDS/DP 转换与桥接
Connector 描述物理连接与热插拔状态 面板检测、EDID、显示状态
Plane 图层叠加与位置/格式控制 仪表与中控图层隔离
Framebuffer 描述可扫描的像素缓冲 双缓冲、页面翻转
GEM / DMA-BUF 显存与跨设备缓冲共享 GPU、视频解码、显示共享

2.5 典型应用场景与集成路径

车载图形集成通常围绕以下场景展开:

  • 仪表与中控双屏:两个 CRTC 分别驱动,仪表使用独立 Plane 保证安全信息不被遮挡。
  • 倒车影像:摄像头数据经 DMA-BUF 直接送入显示 Plane,绕过 GPU 合成以降低延迟。
  • HUD:需要低延迟与高对比,常采用专用图层与固定刷新策略。
  • 多应用合成:Wayland 合成器通过 GBM 分配缓冲,经 DRM 提交页面翻转。

一个典型的调试命令如下,用于查看当前显示资源与连接状态:

# 查看 DRM 设备与连接器状态
ls /dev/dri/
cat /sys/class/drm/card0-HDMI-A-1/status

# 使用 modetest 查看 CRTC、Encoder、Connector、Plane
modetest -M rockchip -c
modetest -M rockchip -p

# 查看 GPU 与显示相关内核日志
dmesg | grep -Ei "drm|kms|gpu|dsi|panel"
调试多屏问题时,优先确认 Connector 状态、CRTC 绑定关系与 Plane 分配,再排查应用层合成逻辑。多数“黑屏/花屏”问题根因在显示路径,而非 GPU 渲染本身。

2.6 常见误区与复盘

在车载图形集成中,以下误区反复出现:

  1. 把 GPU 当显示控制器:GPU 渲染完成不等于上屏成功,页面翻转与 VSync 由 KMS 控制。
  2. 忽视图层隔离:仪表与中控共用一个 Plane,导致安全信息被覆盖或延迟。
  3. 忽略 DMA-BUF 生命周期:缓冲释放时机错误,导致花屏或内核报错。
  4. 只测单屏:多屏并发时带宽、时钟与电源域冲突才会暴露。
  5. 缺少回退策略:合成器崩溃后无安全显示通道,仪表直接黑屏。
车载图形系统的验收标准不是“能显示”,而是“在异常、并发、长时间运行下仍能稳定显示安全关键信息”。集成方案必须包含降级与恢复路径。

综上,车载图形系统的核心是:以多屏异构需求为输入,以 GPU 为渲染与合成算力,以 Linux 图形栈为软件骨架,以 DRM/KMS 为显示资源调度中枢,最终在安全、实时与可维护性之间取得平衡。理解这一分层与定位,是后续进行 GPU 驱动适配、DRM 配置与多屏调试的基础。