[010]HWC在SurfaceFlinger中的角色

2020-06-08 10:46:01 浏览数 (1)

前言

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的理解再去看代码,我相信会更加容易的。

0 人点赞