[Android禪修之路] Android 圖形系統開篇

語言: CN / TW / HK

theme: channing-cyan

[Android禪修之路] 圖形系統開篇

一 概述

Android 的圖形系統可以說是 Android 中最重要的系統之一, 它包含了 Android 系統的顯示, 重新整理等機制, 貫穿了 Android 的硬體層 和 native 層, 以及應用層。在我們探究 Android 的重新整理機制,卡頓原因,顯示原理等等方面時,圖形系統都是必須瞭解的。

要想學習這樣一個系統,必然不可能一蹴而就,所以本文,也將作為圖形系統原始碼研究的大綱和目錄。當然,雖說是大綱和目錄,但是實際上也是邊寫邊改,因為很多的觀點隨著學習的不斷深入都會發生改變。

1.1 學習方法

Android 的圖形系統是一個非常複雜的系統,在探究 Android 圖形系統的時候,經常會遇到一些機制(或者說是知識點),如果不瞭解這些機制,就會對系統中的一些程式碼似懂非懂。但是如果深入的研究這些機制,又容易陷入浩瀚的原始碼海洋中,迷失最初的目標。

基於上述原因,所以我決定在閱讀原始碼的時候,按照以下幾個步驟進行

  1. 先制定每一步想要學習的目標,針對制定的目標理清圖形系統的主要流程。
  2. 瞭解制定目標的主要流程以及一些細節。但對於其中的涉及到其他較為複雜的機制的部分,先假設自己已經瞭解。
  3. 針對不同的機制點,單獨研究,瞭解這些機制的工作原理。
  4. 將已經熟悉了的機制帶入系統的工作流程,鞏固之前的學習。

鑑於以上的學習步驟,對於系統原始碼的研究,必然不可能只是一遍而過,更多時候會是先學習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 儲存的。

未完待續...