android的hwc淺析【轉】

https://blog.csdn.net/alien75/article/details/39290109html

注:本文檔基於kk進行分析,着重於概念的精肯定義和版本歷史演變app

1、關於hwc的介紹

廣義的來說是指利用硬件完成圖像數據組合並顯示的功能(能力),狹義的來說就是指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和硬件平臺的耦合度(方便移植)

性能

 

三、Hwcomposer HAL的大概演變

(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

 

五、hwc能完成的工做

(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

 

2、引用

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

相關文章
相關標籤/搜索