前言
HWC是Hardware Composer是缩写,翻译成中文就是硬件作曲家,或者硬件设计者。
在android手机中的开发者模式中就有一个Hardware Composer的开关选项,HWC通常是由显示设备硬件 OEM提供的功能。
Hardware Composer的开关选项
举个栗子
在[009]SurfaceFlinger是什么东西中提到,王老师每天要临摹三个贴纸上房子,小河,山到了一张固定尺寸的白纸上,每天将当天画的美术作品给美术馆,让其展览。有一天王老师回到家和老婆说:“老婆,每天需要临摹,好累啊,尤其那座山,特别难画。”,王老师的老婆说:你傻不傻,你就不会只临摹房子和小河,然后把那座山直接贴上去嘛,反正山和房子,小河也没有任何重叠的部位。王老师说:“老婆,你真的太聪明了。”
HWC在SurfaceFlinger中就好比王老师直接把那座山贴上去的行为
理解一下HWC在SurfaceFlinger的作用
看下图
在关闭HWC的情况下,状态栏,当前Activity,导航栏的三个Surface,是通过OpenGL方式合成到FrameBuffer中。
在开启HWC的情况下,状态栏,当前Activity先通过OpenGL方式合成一部分,然后通过HWC合成导航栏的Surface到FrameBuffer中
HWC在SurfaceFlinger的作用
HWC的好处
1.提升每一帧画面的合成速度,提升用户界面的流畅度
2.相比OpenGL使用GPU来合成,HWC的合成,相对来说更加省电
总结
HWC是SurfaceFlinger的重要的角色,当然具体的代码肯定更加复杂,比如确定那几个surface可以直接通过HWC合成,这些都是需要大家自己去看代码,但是带着对HWC的理解再去看代码,我相信会更加容易的。