一、HWC介绍
HWC(hwcomposer)是Android中进行窗口(Layer)合成和显示的HAL层模块,其实现是特定于设备的,而且通常由显示设备制造商 (OEM)完成,为SurfaceFlinger服务提供硬件支持。
SurfaceFlinger可以使用OpenGL ES合成Layer,这需要占用并消耗GPU资源。大多数GPU都没有针对图层合成进行优化,当SurfaceFlinger通过GPU合成图层时,应用程序无法使用GPU进行自己的渲染。而HWC通过硬件设备进行图层合成,可以减轻GPU的合成压力。
显示设备的能力千差万别,很难直接用API表示硬件设备支持合成的Layer数量,Layer是否可以进行旋转和混合模式操作,以及对图层定位和硬件合成的限制等。因此HWC描述上述信息的流程是这样的:
-
SurfaceFlinger向HWC提供所有Layer的完整列表,让HWC根据其硬件能力,决定如何处理这些Layer。
-
HWC会为每个Layer标注合成方式,是通过GPU还是通过HWC合成。
-
SurfaceFlinger负责先把所有注明GPU合成的Layer合成到一个输出Buffer,然后把这个输出Buffer和其他Layer(注明HWC合成的Layer)一起交给HWC,让HWC完成剩余Layer的合成和显示。
虽然每个显示设备的能力不同,但是官方要求每个 HWC 硬件模块都应该支持以下能力:
-
至少支持4个叠加层:状态栏、系统栏、应用本身和壁纸或者背景。
-
叠加层可以大于显示屏,例如:壁纸
-
同时支持预乘每像素(per-pixel)Alpha混合和每平面(per-plane)Alpha混合。
-
为了支持受保护的内容,必须提供受保护视频播放的硬件路径。
-
RGBA packing order, YUV formats, and tiling, s


1946

被折叠的 条评论
为什么被折叠?



