https://blog.csdn.net/alien75/article/details/39290109html
注:本文档基于kk进行分析,着重于概念的精肯定义和版本历史演变app
广义的来说是指利用硬件完成图像数据组合并显示的功能(能力),狭义的来说就是指Hwcomposer HAL。composer
(1)hwc:利用硬件完成图像数据组合并显示的功能(能力),具体到代码级别它是由多个类如SurfaceFlinger、HWComposer、DisplayDevice等协同完成的一种功能(能力)。
(2)HWComposer:硬件组合抽象层,介于SurfaceFlinger和HAL之间,具体到代码级别就是一个类,封装对于Hwcomposer HAL和Gralloc HAL的使用。根据官方的介绍,Hwcomposer HAL有1.0、1.一、1.二、1.3等多个版本,当为1.1及以后版本时,HWComposer再也不须要使用Gralloc HAL。
(3)Hwcomposer:具体到代码级别就是Hwcomposer HAL
(4)hw composer:具体到平台硬件级别就是composer硬件,如BE。ide
Hwcomposer HAL是从Honeycomb(3.0)引入,取代2.3的Overlay实现方式(但不是必须的),以下降代码实现及维护难度。它的实现版本经历了1.0到1.3的演变,在Jellybean MR1(4.2)实现的1.1版本,引入了硬件组合抽象层(HWComposer)的概念,向上对SurfaceFlinger彻底隐藏了平台显示硬件特性,工做方式也修改为以下官方描述:
(1)SurfaceFlinger provides the HWC with a full list of layers, and asks, "how do you want to handle this?"
SurfaceFlinger提供全部软图层信息给HWComposer,询问其处理方式
(2)The HWC responds by marking each layer as "overlay" or "GLES composition"
HWComposer根据硬件性能决定是使用硬件图层合成器仍是GPU合成
(3)SurfaceFlinger takes care of any GLES composition, passing the output buffer to HWC, and lets HWC handle the rest
SurfaceFlinger处理须要GPU合成的软图层,将结果递交给HWComposer作显示(经过Hwcomposer HAL),须要硬件图层合成器合成的软图层由HWComposer自行处理(经过Hwcomposer HAL)
分析:这样设计的好处是能够充分发挥硬件性能,同时下降SurfaceFlinger和硬件平台的耦合度(方便移植)
性能
(1)pre-1.1
只支持一个Display
(2)1.1(example: exynos5)
不须要Gralloc HAL
支持Multiple Display
支持hotplug
增长HWC_FRAMEBUFFER_TARGET合成类型
(3)1.2(example: msm8960、msm8x26)
支持Alpha运算(setPlaneAlpha),以前由GPU完成
(4)1.3(example: msm8974)
支持Virtual Display图层合成,以前由GPU完成
支持crop(裁剪)this
从JellyBean(4.2)开始支持多屏幕,屏幕类型:
Primary Display:设备自带的屏幕,由SurfaceFlinger管理
External Display:经过HDMI链接,由SurfaceFlinger监控和管理
Virtual Display:这种方式是在4.2新增的(如基于Wifi Direct技术实现的Mircast),由DisplayManagerService监控和管理。Virtual Display可选择所有或部分的图层进行合成,在KitKat以前,Hwcomposer只能管理Primary Display的合成,Virtual Display使用GLES进行合成;从KitKat开始,Hwcomposer也能参与Virtual Display的合成。Virtual Display的显示数据也是由BufferQueue处理spa
(1)Full-screen games in portrait and landscape mode
(2)Full-screen video with closed captioning and playback control
(3)The home screen(compositing the status bar, system bar, application window, and live wallpapers)
(4)Protected video playback
(5)Multiple display support.net
http://source.anddroid.com/devices/graphics.htmlhttp://blog.csdn.net/jinzhuojun/article/details/17427491设计
http://www.cnblogs.com/samchen2009/p/3364327.htmlrest
http://blog.csdn.net/brucexu1978/article/details/8976781
The Android graphics path, in depth.pdfAndroid Graphics And Android EGL.pdf