Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Surface機制流程

Android Surface機制流程

編輯:關於Android編程

Android采用的SurfaceFlinger來管理整個系統的UI工作,既然是管理當然SurfaceFlinger不會去做具體的繪制工作,而只負責整個系統UI資源的協調管理,所以,SurfaceFlinger是個總承包商。干活的則是下面諸多符合OpenGL開放圖形庫規范的接口庫。

一、幾個概念

OpenGL——Open Graphic Library,開放圖形接口庫,是一套跨編程語言、跨平台的編程接口的規范,不同廠家可能有不同的實現。

SurfaceFlinger——Android中負責Surface之間疊加(merge)、混合(Composer)操作的動態庫

libagl——Android通過軟件方法實現的一套OpenGL動態庫

libhgl——Android通過硬件實現的一套OpenGL(也就是由GPU廠商提供GPU庫),隨集成GPU不同而不同。

二、幾個目錄

Android中幾個Surface相關的主要目錄:

frameworks/base/opengl/——該目錄下包含相關opengl本地庫源碼,有libGLESv1_CM.so、libEGL.so、libagl.so。

frameworks/base/services/java/com/android/server/——Surface服務相關源碼放在此系統目錄下

frameworks/base/core/jni/——一些關於Surface Jni接口源碼在此目錄下。

以下則為MTK平台下的廠家配置:

alps/mediatek/platform/mt6573/kernel/drivers/video——底層顯示驅動

alps/mediatek/source/kernel/drivers/video——fb及disp顯示驅動

alps/mediatek/source/kernel/drivers/gpu——GPU硬件驅動

二、幾個流程

SurfaceFlinger啟動流程按層級分底層物理層和頂層邏輯層,當然嚴格點SurfaceFlinger其實只是指Java層面的機制。以下說法僅從調用流程從上到下方面理解劃分。

頂層流程:系統服務(System Server)->啟動BinderService->啟動SurfaceFlinger->去中間層

中間層流程:native_window->libagl(或libhgl)->去底層

底層啟動流程:LCD驅動程序(xxx.cpp)->接口驅動程序(比如dsi_xxx.cpp)->顯示驅動程序(disp_xxx.cpp)->fb管理器(比如mtk_fb.cpp)

數據流向,SurfaceFlinger接受UI動作,然後協調後經過軟件或硬件接口庫運算完成,把最終運算完成的顯示數據,統一通過fb(比如/dev/fb0)傳到底層刷新到LCD進行顯示。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved