標籤:技術分享 == surface pos allocator rod 通過 hardware 消費者
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 用來展示子系統的硬體抽象層,SurfaceFlinger可以協助OpenGL 和GPU做已經明確的,組合資料的工作,這樣就能減輕GPU和OpenGL的工作,這樣會更省資源和電量。SurfaceFlinger工作還是利用OpenGL ES,相當於OpenGL ES 用戶端。Gralloc graphics memory allocator 繪製記憶體產生器
android 介面顯示過程分析