1. SA8155平台概述

1.1 SA8155芯片架构总览

SA8155(Snapdragon 8155)是高通第三代汽车数字座舱平台的核心SoC,采用7nm制程工艺。其整体架构围绕高性能计算、多屏异构显示和AI加速三大能力设计,在车载IVI(In-Vehicle Infotainment)和数字仪表领域占据主流地位。

芯片内部主要包含以下关键模块:

  • CPU集群:Kryo 485(1+3+4三丛集),最高主频2.84GHz,用于通用计算和驱动栈调度。
  • GPU:Adreno 640(或Adreno 650,视具体SKU),负责图形渲染、合成与UI绘制。
  • DPU:Display Processing Unit,高通自研显示控制器,负责图层合成、色彩管理、时序生成。
  • DSP:Hexagon 690,用于音频、传感器和低功耗视觉处理。
  • VPU:视频编解码单元,支持多路4K H.264/H.265。
  • 安全岛:SPU(Secure Processing Unit),保障仪表和关键显示数据安全。
关键点:在DRM驱动开发中,我们主要关注GPU → DPU → 显示接口这条渲染与输出链路。CPU和DSP负责上层应用与合成策略,但不直接参与帧缓冲的硬件扫描输出。

1.2 显示子系统组成

SA8155的显示子系统是一个多流水线、多图层、多接口的复杂结构。它支持最多4路独立显示输出(仪表、中控、副驾娱乐、后座娱乐或HUD),每路输出可配置不同的分辨率和刷新率。

显示组件 功能描述 DRM对应对象
GPU (Adreno) 3D渲染、合成、GPU合成(GL/CL) dma-buf生产者
DPU (Display Processing Unit) 图层混合、色彩校正、伽马、DSC、时序生成 struct drm_encoder + crtc
DSI/DP TX 物理层发送器,连接面板或外部显示器 struct drm_connector
MDP (Mobile Display Processor) 旧称,在SA8155中功能已并入DPU 历史兼容层
SDE (Software Display Engine) 高通msm DRM驱动中的显示引擎抽象 drm_crtc + drm_plane
开发提示:在SA8155的msm DRM驱动中,dpu_kms是核心显示管理结构,它封装了所有DPU硬件寄存器操作。GPU渲染完成的帧通过drm_gem_prime_export导出为dma-buf,再通过drm_atomic_set_fb_for_plane绑定到DPU的plane上。

1.3 GPU (Adreno) 与 DPU 的硬件连接关系

Adreno GPU与DPU之间通过系统内存(System Memory / DDR)进行数据交换,而非直接点对点连接。这种架构称为统一内存访问(UMA),GPU渲染结果写入内存中的dma-buf,DPU再从同一内存区域读取帧数据进行合成输出。

具体连接流程如下:

  1. GPU渲染:Adreno通过Command Queue接收渲染指令,将绘制结果写入分配好的dma-buf(通常为Ion buffer或drm_gem_object)。
  2. Buffer共享:渲染完成后,GPU通过写屏障保证数据一致性,DPU通过硬件旋转锁(hw rotator lock)或fence机制等待buffer就绪。
  3. DPU读取:DPU的VIG(VIG: Virtual Image Generator)流水线从DDR中fetch帧数据,经过图层混合、色彩转换后输出到显示接口。
  4. 扫描输出:DPU内部的时序控制器(Timing Controller)生成VSYNC/HSYNC信号,驱动DSI或DP TX将数据发送到物理面板。
避坑指南:在SA8155上,GPU和DPU共享同一DDR带宽。如果同时开启多路4K显示且GPU负载较高,可能出现带宽争抢导致掉帧。此时需要调整dpu_mdss_hw中的带宽预算(bandwidth budget)参数,或启用DSC(Display Stream Compression)降低DPU带宽需求。
SA8155 GPU-DPU硬件连接与数据流 SA8155 GPU ↔ DPU 硬件连接与数据流 Adreno GPU 渲染引擎 Command Queue 纹理/着色器 GPU Fence 系统内存 (DDR) dma-buf / Ion Buffer 帧缓冲 (Framebuffer) 共享内存区域 DPU (Display Processing Unit) VIG流水线 图层混合器 色彩校正 / 伽马 时序控制器 渲染写入 DMA读取 扫描输出 GPU Fence + DPU VBlank 硬件同步机制 DDR带宽共享 需配置带宽预算

1.4 显示流水线关键路径

从GPU渲染到最终面板显示,数据经过以下关键路径:

步骤 硬件模块 数据形态 DRM对象
1. 渲染 Adreno GPU GPU虚拟地址 → 物理页 drm_gem_object
2. 导出 ION / dma-buf 物理连续/非连续内存 dma_buf
3. 提交 msm DRM (atomic commit) drm_framebuffer drm_plane + drm_crtc
4. 合成 DPU VIG + Mixer 图层叠加后的RGB数据 drm_crtc (内部)
5. 输出 DPU Timing Controller MIPI DSI / eDP / DP drm_encoder + drm_connector
架构要点:SA8155的显示架构是解耦的——GPU只负责渲染,不直接控制显示时序;DPU只负责合成和输出,不参与3D渲染。这种设计使得GPU可以专注于图形负载,而DPU独立管理多屏输出和图层合成,是DRM atomic模式设计的硬件基础。

1.5 多显示输出拓扑

SA8155支持最多4路独立显示,典型拓扑如下:

  • Display 0:仪表盘(1920x720 @ 60fps,通过DSI-0连接)
  • Display 1:中控屏(1920x1080 @ 60fps,通过DSI-1连接)
  • Display 2:副驾娱乐屏(1920x1080 @ 60fps,通过DP TX-0连接)
  • Display 3:后座娱乐或HUD(1280x720 @ 30fps,通过DP TX-1连接)

每路显示在DPU内部拥有独立的VIG流水线和Mixer,共享同一个DDR控制器但拥有独立的QoS(Quality of Service)优先级设置。

开发提示:在msm DRM驱动中,每个显示输出对应一个dpu_crtc实例。通过dpu_crtc_state可以查询当前crtc绑定的VIG和Mixer硬件资源。多屏同步需要关注VBlank偏移,否则可能出现跨屏撕裂。