Android 12(S) 圖像顯示系統 - 開篇



請關注公眾號:Android元宇宙 閱讀《圖形圖像》專欄最新文章!

 

 


序言

出於工作需要,也源於個人興趣,終於下決心花時間整理一下自己針對Android圖形顯示子系統的一些零散知識。其實對於是否把這一系列文章發布出來,個人也曾幾經猶豫,原因是這些文章的內容並非個人研究成果或實踐經驗的總結,而僅僅只是學習過程中的 零散筆記 罷了。文章中的錯誤觀點或謬論對讀者可能產生的錯誤引導是我不想看到的。

 

當然,既然文章已經寫出,我想就要發揮出它的價值,即便是錯誤的觀點我覺得在大家的批判、指正、討論中也會引發讀者更多的思考,讓你我還有廣大讀者共同進步。

個人雖然從事Android開發也比較長時間了,但對於Android圖形顯示系統的知識一直比較潰泛,寫作這些文章時也是很多地方一知半解,很多內容也難以講清楚來龍去脈,甚至強加了個人“自以為是”的觀點。網絡上其實已經有很多優秀的文章的來解析Android圖形顯示系統的架構。Android每年一個大版本的更新,圖形顯示系統的code在一定范圍內也幾經調整與修改,雖基本原理不變,但處理邏輯卻也發生了很大的變化。個人也是想基於最新版本Android整理一些自己在這個領域的知識脈絡,並把一些零散的筆記記錄於此。

 

學習的過程是漫長的,該系列的筆記也不會一蹴而就或在短時間內一次完成,所以在學習過程中,我會不斷的把新的筆記、新的收獲更新上來。該系列筆記會在動態中不斷更新。

 

基於此,我建議大家在閱讀這些文章時,請帶着審慎與批判的態度去閱讀,閱讀中請保持獨立思考,因為這只是幾篇學習筆記,錯誤會隱藏於文章各個角落。

 

作者水平有限,文章難免錯誤,也請大家不吝賜教。

 


圖形顯示系列

Android 12(S) 圖像顯示系統 - 開篇

Android 12(S) 圖像顯示系統 - 基本概念(一)

Android 12(S) 圖像顯示系統 - 示例應用(二)

Android 12(S) 圖像顯示系統 - 應用建立和SurfaceFlinger的溝通橋梁(三)

Android 12(S) 圖像顯示系統 - SurfaceFlinger的啟動和消息隊列處理機制(四)

Android 12(S) 圖像顯示系統 - createSurface的流程(五)

Android 12(S) 圖像顯示系統 - BufferQueue/BLASTBufferQueue之初識(六)

Android 12(S) 圖像顯示系統 - 初識ANativeWindow/Surface/SurfaceControl(七)

Android 12(S) 圖像顯示系統 - BufferQueue的工作流程(八)

Android 12(S) 圖像顯示系統 - BufferQueue的工作流程(九)

Android 12(S) 圖像顯示系統 - BufferQueue的工作流程(十)

Android 12(S) 圖像顯示系統 - BufferQueue的工作流程(十一)

Android 12(S) 圖像顯示系統 - Surface 一點補充知識(十二)

Android 12(S) 圖像顯示系統 - 簡單聊聊 SurfaceView 與BufferQueue的關聯(十三)

Android 12(S) 圖像顯示系統 - 解讀Gralloc架構及GraphicBuffer創建/傳遞/釋放(十四)

Android 12(S) 圖像顯示系統 - 簡述Allocator/Mapper HAL服務的獲取過程(十五)

 

截至到今天(2022-03-27),差不多第一階段的學習目標已經完成,重點是在一些兒流程的梳理,明白圖形顯示系統中某些機制的運作過程。當然,在學習和輸出的過程中,也遇到很多迷惑不解的知識點,當然也有很多可能理解錯誤的地方。之后的學習中,會再回過頭來審視、糾正這些內容。學習是個不斷迭代的過程,后期的學習會是對前期學習內容的補充、糾正、加深的一個過程。

計划后續的學習還會再繼續梳理Android圖形顯示系統其它的流程,重點會理清SurfaceFlinger的一些工作機制,包括合成流程、HWC、VSync信號等等,同時,也會根據實際工作中遇到的問題,補充一些細節的知識。

不過還有一個重要的任務:重學C++ 在分析源碼過程中,發現很多C++語言的新特性自己都不是很熟悉了,這對自己閱讀源碼和開發還有有很大影響的,所以要花些時間補課。

 

Android 12(S) 圖像顯示系統 - SurfaceFlinger之VSync-上篇(十六)

Android 12(S) 圖像顯示系統 - SurfaceFlinger 之 VSync - 中篇(十七)

Android 12(S) 圖像顯示系統 - SurfaceFlinger之VSync-下篇(十八)

Android 12(S) VSync信號刨析-札記  --> 混亂的記錄

 

圖層合成零碎知識

Android 12(S) 圖像顯示系統 - SurfaceFlinger GPU合成/CLIENT合成方式 - 隨筆1

Android 12(S) 圖像顯示系統 - GraphicBuffer同步機制 - Fence

Android 12(S) 圖像顯示系統 - HWC HAL 初始化與調用流程

Android 12(S) 圖像顯示系統 - drm_hwcomposer 簡析(上)

Android 12(S) 圖像顯示系統 - drm_hwcomposer 簡析(下)

Android 12(S) 圖像顯示系統 - drm hwc 的知識點分析/記錄 -- 雜亂記錄😀

Android 12(S) 圖像顯示系統 - 多屏同顯 - 原理及架構設計

Android 12(S) 圖像顯示系統 - 多屏異顯 - 原理及架構設計

Android 12(S) 圖像顯示系統 - 多屏同顯/異顯的HWC處理邏輯解讀

Android 12(S) 圖像顯示系統 - 多屏同顯/異顯的demo演示

 

基礎知識系列

Android Native -- Message/Handler/Looper機制(原理篇)

Android Native -- Message/Handler/Looper機制(應用篇)

Android 圖像顯示系統 - 基礎知識之 BitTube

Android 圖像顯示系統 - 導出圖層數據的方法介紹(dump GraphicBuffer raw data)

 

其它參考文章

在 Android 上進行高刷新率渲染

Android 12(S) 圖像顯示系統 - 雜談 - source crop & display frame

 


最后給大家送上一份好心情

 

 


 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM