[Android禪修之路] Android 圖形系統開篇
theme: channing-cyan
[Android禪修之路] 圖形系統開篇
一 概述
Android 的圖形系統可以説是 Android 中最重要的系統之一, 它包含了 Android 系統的顯示, 刷新等機制, 貫穿了 Android 的硬件層 和 native 層, 以及應用層。在我們探究 Android 的刷新機制,卡頓原因,顯示原理等等方面時,圖形系統都是必須瞭解的。
要想學習這樣一個系統,必然不可能一蹴而就,所以本文,也將作為圖形系統源碼研究的大綱和目錄。當然,雖説是大綱和目錄,但是實際上也是邊寫邊改,因為很多的觀點隨着學習的不斷深入都會發生改變。
1.1 學習方法
Android 的圖形系統是一個非常複雜的系統,在探究 Android 圖形系統的時候,經常會遇到一些機制(或者説是知識點),如果不瞭解這些機制,就會對系統中的一些代碼似懂非懂。但是如果深入的研究這些機制,又容易陷入浩瀚的源碼海洋中,迷失最初的目標。
基於上述原因,所以我決定在閲讀源碼的時候,按照以下幾個步驟進行
- 先制定每一步想要學習的目標,針對制定的目標理清圖形系統的主要流程。
- 瞭解制定目標的主要流程以及一些細節。但對於其中的涉及到其他較為複雜的機制的部分,先假設自己已經瞭解。
- 針對不同的機制點,單獨研究,瞭解這些機制的工作原理。
- 將已經熟悉了的機制帶入系統的工作流程,鞏固之前的學習。
鑑於以上的學習步驟,對於系統源碼的研究,必然不可能只是一遍而過,更多時候會是先學習A點而忽略B點,學習完A點之後再學習B點,最後學習完B點之後再把B帶入A中再學一遍,這將會是以上螺旋上升的過程。
二 目錄
2.1 SurfaceFlinger 工作原理
SurfaceFlinger的啟動過程:SurfaceFlinger是 Android 系統中非常重要的一個服務,Android 系統會在啟動系統服務的時候啟動它。所以我們需要了解 SurfaceFlinger 是如何啟動的,即它的啟動過程
SurfaceFlinger的工作原理:SurfaceFlinger 在啟動之後,就會啟動它的工作線程。我們需要了解 SurfaceFlinger 是如何工作的,它的工作流程和原理是什麼。
2.2 SurfaceFlinger 中的機制解讀
解讀 Vsync 機制:Vsync 機制是 Android 系統刷新機制中非常重要的機制之一,它是由硬件產生的,最後傳遞到軟件的。那麼它是如何產生的,如何傳遞的。這其中的涉及到的硬件有哪些,軟件又有哪些?
Android 系統的刷新涉及到多個進程,甚至還涉及到了CPU和GPU,那麼這些圖像數據是如何保存的,圖像的數據比一般的數據大很多,是通過什麼方式傳遞的呢?
多個進程同時使用這些圖像數據的時候,又是如何同步的呢?
解讀 Fence 同步機制:Android 圖形系統中,同步就是通過 Fence 機制完成的。\
解讀 GraphicBuffer:圖像就是通過 GraphicBuffer 保存的。
未完待續...
- Activity啟動源碼解析(Android12)
- 從MediaServer看Binder的使用方式(一)
- 從MediaServer看Binder的使用方式(二)
- [Android禪修之路] 解讀Layer
- [Android禪修之路] Android圖形系統,從Activity到Surface
- [Android禪修之路] 解讀 GraphicBuffer 之 Framework 層
- [Android禪修之路] 解讀SurfaceFlinger中的BufferQueue
- [Android禪修之路] SurfaceFlinger 合成中的工作
- [Android禪修之路] SurfaceFlinger 中的一些對象
- [Android禪修之路] SurfaceFlinger 合成前的預處理
- [Android禪修之路] SurfaceFlinger合成總覽
- [Android禪修之路] SurfaceFlinger的啟動過程
- [Android禪修之路] Android 圖形系統開篇