android 界面顯示過程分析
阿新 • • 發佈:2018-07-17
2d繪圖 produce play str 開發 rap 消費者 sum 合數
用來展示子系統的硬件抽象層,SurfaceFlinger可以幫助OpenGL 和GPU做已經明確的,組合數據的工作,這樣就能減輕GPU和OpenGL的工作,這樣會更省資源和電量。SurfaceFlinger工作還是利用OpenGL ES,相當於OpenGL ES 客戶端。
android 系統提供了一系列的繪圖渲染api,這些api支持2D繪圖和3D繪圖;那麽理解這些api是如何工作的,還是十分重要的。應用開發者最常用的就是Canvas和OpenGL,Canvas側重於2D,而OpenGL則是全能。Canvas的繪圖操作最終會通過OpenGLRender進行轉換,轉換為OpenGL支持的動作,並由GPU渲染;也就是說Canvas也是通過OpenGL庫工作的。
無論你使用哪種api,這些操作最終還是會渲染到Surface上。Surface代表了生產者,負責生產BufferQueue;與它對立的是作為消費者的SurfaceFlinger。
下面的圖講述了主要部件的工作流程。
Image Stream Producers
圖像生產者:任何生成graphics buffer的組件,包括但不限於Canvas,OpenGL,多媒體服務,視頻解碼器。Image Stream Consumers
圖像消費者: 這個圖像流消費者一般指的是SurfaceFlinger系統服務,SurfaceFlinger負責組織可視Surface,並修改Display,只有SurfaceFlinger可修改DisPlay。OpenGL ES app比如相機程序,carmera也可以消耗圖像流。Window Manager
負責管理系統中的Window,Window manager由Surface支持實現,Window Manager將元數據發動到SurfaceFlinger。Hardware Composer
Gralloc
graphics memory allocator 繪制內存生成器android 界面顯示過程分析