2. Qualcomm座舱SoC显示与图形硬件架构
在Qualcomm智能座舱SoC(如SA8155P、SA8295P)中,多屏显示并不是由某一个硬件模块独立完成的,而是由DPU、GPU、VPU、显示接口以及内存子系统协同工作的一条完整数据通路。理解这条通路,是后续做多屏并发、分辨率分配、带宽预算和性能调优的基础。
一、四类核心处理单元的分工
DPU(Display Processing Unit,显示处理单元)是显示通路的“总装配线”。它负责图层合成(Layer Blending)、缩放(Scaling)、色彩空间转换(CSC)、旋转、Gamma/色调映射,并把最终画面按显示时序输出。座舱SoC通常集成多个DPU实例,每个DPU可驱动一路或多路显示控制器,支持多图层叠加,例如仪表盘、中控、副驾屏各自拥有独立图层树。
GPU(图形处理单元)基于Adreno架构,负责3D渲染、UI合成加速、OpenGL ES/Vulkan绘制以及部分2D合成。它把应用层的Surface渲染成纹理或帧缓冲,再交给DPU做最终合成。GPU是算力与带宽消耗大户,尤其在多屏高分辨率、高刷新率场景下。
VPU(Video Processing Unit,视频处理单元)负责视频编解码,如H.264/H.265/VP9的硬件解码。座舱中常见的倒车影像、DMS摄像头、后排娱乐视频都经过VPU解码后送入DPU或GPU合成。VPU的价值在于把CPU从软解中解放出来,同时降低功耗。
显示接口是SoC到屏幕的物理出口,常见包括MIPI DSI、DisplayPort(DP)、eDP以及通过桥接芯片扩展的LVDS/HDMI。接口的通道数(Lane)、每通道速率和像素时钟,直接决定单屏可支持的最大分辨率与刷新率。
二、多屏并发显示的数据通路
典型的一条通路是:应用/视频源 → GPU渲染或VPU解码 → 写入DDR中的帧缓冲 → DPU读取图层 → 合成 → 显示接口 → 屏幕。多屏并发时,多个DPU通道会同时向DDR发起读写请求,内存带宽成为最关键的共享资源。
三、内存带宽:多屏并发真正的约束
多屏并发时,每一路显示都需要持续从DDR读取帧缓冲。以1080p@60Hz、ARGB8888(4字节/像素)为例,单层单屏的读取带宽约为:1920×1080×4×60 ≈ 497 MB/s。若中控屏有4个图层叠加,则仅该屏读取就接近2 GB/s。四屏并发、叠加视频与3D渲染后,总带宽需求很容易超过10 GB/s。
LPDDR4x在典型座舱SoC上的有效带宽约在15~25 GB/s量级,LPDDR5可更高。但要注意,这是整颗SoC共享的带宽,CPU、GPU、VPU、DPU、ISP都在竞争。因此实际工程中必须做带宽预算,而不是只看单屏参数。
四、多屏并发的关键配置参数
在设备树(Device Tree)和显示驱动中,多屏并发通常需要关注以下参数:
- 每路DPU的图层数:图层越多,DDR读取次数越多,带宽线性上升。
- 分辨率与刷新率:像素时钟决定单路带宽,4K@60Hz约为1080p@60Hz的4倍。
- 像素格式:ARGB8888比RGB565多一倍带宽,能压缩的格式(如AFBC)可显著降低读取量。
- 显示接口Lane数与速率:MIPI DSI 4-lane、DP 4-lane的速率上限决定单屏能否跑满。
- DDR频率与通道:决定总带宽上限,也影响延迟。
以SA8155P为例,常见配置是:仪表1080p@60Hz(2图层)、中控1920×1200@60Hz(4图层)、副驾1080p@60Hz(2图层)、后排1080p@60Hz(1图层)。此时显示读取带宽约:
仪表: 1920×1080×4×60×2 ≈ 0.99 GB/s
中控: 1920×1200×4×60×4 ≈ 2.21 GB/s
副驾: 1920×1080×4×60×2 ≈ 0.99 GB/s
后排: 1920×1080×4×60×1 ≈ 0.50 GB/s
显示合计 ≈ 4.69 GB/s
再加上GPU渲染、VPU解码和CPU访问,总需求可能达到8~12 GB/s。若DDR有效带宽为17 GB/s,则余量约30%~50%,属于可接受范围;若余量低于20%,多屏并发时就容易出现卡顿。
五、AFBC与带宽优化
Qualcomm平台广泛使用AFBC(Arm Frame Buffer Compression)对帧缓冲做无损或近无损压缩,可把DPU读取带宽降低30%~50%。启用AFBC后,GPU写入和DPU读取都以压缩块为单位,既省带宽又省功耗。工程上应优先确认:
- GPU渲染目标是否分配为AFBC格式;
- DPU是否支持并启用了对应AFBC解码;
- 视频解码输出是否走AFBC或类似压缩路径。
六、结果观察与判断依据
多屏并发是否健康,可以从以下现象判断:
| 观察项 | 正常表现 | 异常表现与可能原因 |
|---|---|---|
| 帧率 | 各屏稳定在目标刷新率 | 掉帧→带宽饱和或DPU图层过多 |
| 撕裂 | 无明显撕裂 | VSync同步失败或DPU时序冲突 |
| 延迟 | 触控到显示延迟低且稳定 | 延迟升高→GPU/DPU排队或DDR延迟大 |
| 功耗 | 显示子系统功耗平稳 | 功耗异常→带宽竞争导致重传或降频 |
实际调试中,可借助Qualcomm的显示调试节点、GPU Profiler和DDR带宽计数器,观察各模块的实时占用。若发现DPU读取带宽接近DDR上限,应优先减少图层数、启用AFBC、降低非关键屏刷新率,或把部分合成从GPU转移到DPU,以平衡负载。
理解DPU、GPU、VPU、显示接口与DDR之间的这条数据通路,才能在多屏并发场景下做出合理的分辨率分配、图层规划和带宽预算,避免“单屏能跑、多屏就卡”的典型问题。