num blending stages
代表 DPU(Display Processing Unit)支持的混合(Blending)阶段的数量,通常用于 描述 DPU 的图层合成能力。这个属性决定了 DPU 可以在硬件上直接合成多少个图层(Layers),超过这个数量的图层就需要 GPU 参与合成,或者使用多次 DPU 处理。
1. num blending stages
的作用
在 显示合成(Composition)过程中,DPU 负责将多个图层混合在一起,最终输出到屏幕。这个混合通常包括:
-
透明度(Alpha blending)
-
颜色混合(Color blending)
-
Z-Order 排序
-
颜色转换(Color Space Transform, CST)
-
Gamma 校正(Gamma Correction)
num blending stages
具体影响以下几点: ✅ DPU 能直接合成的最大图层数(超过的部分要交给 GPU 处理,增加功耗)
✅ 是否可以完全绕过 GPU,做 Full DPU Composition(完全 DPU 合成)
✅ 影响功耗和性能(越多的硬件 Blending Stage,DPU 负载越大,但能减少 GPU 负担)
2. 如何查看 num blending stages
在 Qualcomm 设备上,你可以通过 dumpsys SurfaceFlinger
或 display
相关调试工具找到该属性。
adb shell dumpsys SurfaceFlinger | grep -i "max. mixer stages"
这表示 DPU 硬件支持最多 4 层硬件混合,如果屏幕上有 5 个图层,那么:
-
前 4 个图层可以用 DPU 直接合成
-
第 5 个图层可能会交给 GPU 进行合成
3. num blending stages
影响的场景
📌 场景 1:DPU 直接合成
假设 num blending stages = 4
,如果你的 UI 只有 4 层以内(背景+UI+弹窗等),DPU 可以全部处理,GPU 不需要参与,提高功耗效率。
📌 场景 2:DPU + GPU 混合合成
如果 num blending stages = 4
,但是 UI 有 6 层,那么:
-
前 4 层 DPU 直接合成
-
剩下 2 层需要 GPU 先合成,再送到 DPU 处理
📌 场景 3:Overlay 视频播放
某些视频播放器使用 Overlay,可以绕过 GPU 直接在 DPU 上合成,如果 num blending stages
够多,DPU 可以处理 多个视频流 + UI,提升播放性能。
4. num blending stages
和 MultiRect
的关系
Qualcomm 的 MultiRect(多矩形) 技术可以 扩展 DPU 的混合能力。在某些 SoC(如 Snapdragon 855 及以上)上:
-
普通
num blending stages = 4
-
使用 MultiRect 后,每个物理 Pipeline 可能能处理 2 个图层,相当于变成
num blending stages = 8
5. 结论
✅ num blending stages
代表 DPU 能直接混合的图层数量,超出部分交给 GPU
✅ 影响 合成性能、功耗、是否需要 GPU 参与
✅ 可以通过 adb shell dumpsys SurfaceFlinger
查看
✅ 在 Snapdragon 设备上,MultiRect 可以扩展 num blending stages
代码里确实有:
auto max_mixer_stages = hw_resource_info_.num_blending_stages;