DRMPlane
代表了 DPU(Display Processing Unit) 里的 Pipeline(数据通路),不同的 DRMPlaneType
对应 DPU 内部的不同 渲染/合成管线。
📌 DRMPlaneType
与 DPU Pipeline 的关系
在 高通(Qualcomm)DPU 里,每个 DRMPlane
其实就对应 DPU 硬件渲染/合成管线,不同类型的 Plane
适用于不同的图层(Layer)。
DRMPlaneType | DPU Pipeline(数据通路) | 特点 | 主要用途 |
---|---|---|---|
VIG(VIG Pipe) | VIG(Video Image Generator) | 专门用于 视频处理,支持 缩放(Scaling)、格式转换等 | 适用于 视频播放、相机预览 |
DMA(DMA Pipe) | DMA(Direct Memory Access) | 负责 普通图层(UI Layer) 传输,不支持缩放 | 适用于 普通 UI、App 界面 |
RGB(RGB Pipe) | RGB Layer | 一般用于 GPU 渲染后的 UI 图层,支持混合、透明度 | 适用于 窗口合成、透明 UI |
🔹 说明
DRMPlaneType
只是 软件层的概念,底层 实际映射到 DPU 硬件中的不同 Pipeline。- VIG 管道更适合视频(支持缩放、格式转换等)。
- DMA 管道更适合 UI 界面(支持基础显示,但不支持缩放)。
- RGB 管道用于 GPU 渲染后的 UI(支持混合、透明度)。
📌 DPU Pipeline(数据通路) 详细结构
高通 DPU(Display Processing Unit) 里的 Pipeline(数据通路) 主要包括:
- Source Pipe(源管道)
VIG
(视频图层管道)DMA
(普通 UI 图层管道)RGB
(GPU 渲染的 UI 图层)
- Mixer(混合器)
- 负责将多个
Plane
进行 Blending(混合)。 - GPU、Camera ISP、视频解码器的数据最终都经过 Mixer 处理。
- 负责将多个
- DSPP(Display Sub-System Processing)
- 负责色彩调整、Gamma 校正、Dithering 等。
- DSI/eDP/HDMI 输出
- 经过 DSPP 处理后的数据,最终输出到 LCD、OLED、HDMI 设备上。
🔍 代码示例
在 DRM 框架 里,DRMPlaneType
可能在 设备树(DTS)或驱动代码 里被定义:
enum drm_plane_type {
DRM_PLANE_TYPE_PRIMARY = 0, // 主屏幕的主图层
DRM_PLANE_TYPE_OVERLAY = 1, // 叠加层(视频、UI)
DRM_PLANE_TYPE_CURSOR = 2, // 鼠标光标
};
// 高通 DPU 的 Plane 定义(可能在 dpu_hw_catalog.c 里)
struct dpu_plane_data {
.id = VIG,
.type = DRM_PLANE_TYPE_OVERLAY, // VIG 管道通常用于视频
};
struct dpu_plane_data {
.id = DMA,
.type = DRM_PLANE_TYPE_PRIMARY, // DMA 可能用于 UI 主界面
};
struct dpu_plane_data {
.id = RGB,
.type = DRM_PLANE_TYPE_OVERLAY, // RGB 可能用于 GPU 渲染的窗口
};
🔎 总结
✅ DRMPlane
代表 DPU 硬件管线,不同的 Plane
类型对应 不同的 DPU Pipeline。
✅ VIG
(Video Image Generator)用于视频处理,支持缩放、格式转换。
✅ DMA
负责普通 UI 图层,不支持缩放。
✅ RGB
适用于 GPU 渲染的 UI,支持混合、透明度。
✅ 最终 DRMPlane
经过 Mixer 进行合成,再通过 DSPP 处理后输出到屏幕。