外观
SurfaceFlinger 和 HWC 如何分工?
标准回答
SurfaceFlinger 收集图层缓冲区和状态,处理可见性、层级、变换、裁剪等合成信息,并与 Hardware Composer 协商各图层的合成方式。能由显示硬件直接处理的图层采用 device composition;需要客户端合成的图层由 SurfaceFlinger 的渲染路径处理,再把结果交给 HWC。HWC 对接设备显示能力并执行呈现相关操作。因此 App 负责生成内容,窗口系统负责组织窗口与图层状态,SurfaceFlinger 和 HWC 协作把内容呈现出来。
延伸追问
不能说 SurfaceFlinger 会重新调用 Button.onDraw,也不能说它对每一层都必然用 GPU 合成。
内容来源
- Android Framework 知识手册 · 原条目
2-8