一、概要
android graphic圖形顯示系統,android系統最核心功能之一。本文以分析graphic整體框架爲主。最終以知道圖形顯示系統如何工作爲目的。偏向於介紹基礎和概念
谷歌這張圖中有四個重要角色:要顯示的頁面、buffer queue、surfacefinger、hwcomposer
要顯示的頁面
安卓顯示的一個頁面一般包含:statusbar、app、natigationbar;這三個分別對應一個window。window render(繪製)的時候,是render在surface上的。
要顯示的頁面通過window告訴surfaceflinger創建surface來繪圖,這個surface就是一個layer(layer的核心就是buffer queue)。
顯示的主要三種方式
1、通過canvas繪製顯示,2、通過OpenGL ES渲染顯示(通過軟件或者GPU)。3、Vulkan android7.0開始NDK支持,開源2D和3D繪圖引擎
surfacefinger和HWC
surfacefinlger把layer(buffer queue)的list告知HWC(hwcomposer),HWC標記layer並告訴sufaceflinger是overlay還是OpenGL ES方式繪製。surfaceflinger得到list後只處理OpenGL ES的繪製,把這些會合成爲一個buffer queue再發給HWC。HWC最後再一起合成顯示到display上。
二、軟件架構
我們可以從此圖清楚的看到圖像渲染過程中,各個模塊的一個關係圖。
第一條路:和第一節概要中的流程一樣,普通頁面都是通過window繪製到surface
第二條路:非系統普通組件提供的方式會直接和native層的surface交互,直接提供buffer data
不管數據流怎麼形成,最後流到surfaceflinger配置HWC統一渲染出圖形
本文以理清整個圖形架構脈絡爲核心,本文暫未完成,還會繼續更新。