Skip to content
阅读进度

SurfaceFlinger 和 HWC 如何分工? ​

返回 Framework 与系统服务 目录

标准回答 ​

SurfaceFlinger 收集图层缓冲区和状态,处理可见性、层级、变换、裁剪等合成信息,并与 Hardware Composer 协商各图层的合成方式。能由显示硬件直接处理的图层采用 device composition;需要客户端合成的图层由 SurfaceFlinger 的渲染路径处理,再把结果交给 HWC。HWC 对接设备显示能力并执行呈现相关操作。因此 App 负责生成内容,窗口系统负责组织窗口与图层状态,SurfaceFlinger 和 HWC 协作把内容呈现出来。

延伸追问 ​

不能说 SurfaceFlinger 会重新调用 Button.onDraw,也不能说它对每一层都必然用 GPU 合成。

内容来源 ​

用完整回答理解机制,用真实证据解释项目。