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


題外話


最近總有一個感覺:在不斷學習中,越發的感覺自己的無知,自己是不是要從“愚昧之巔”掉到“絕望之谷”了,哈哈哈🐶

鄧寧-克魯格效應

 

一、前言


前面的文章中已經講解了如何去創建一個Surface,也講了一些操作Surface的知識,接下來就是如何利用這個Surface進行繪圖呢?

在此開始講解buffer queue的工作流程,看看圖形數據是怎樣流轉的? 圖形緩沖區的申請和消費流程是怎樣的?有哪些核心類?等等問題在接下來的文章中陸續展開。

這篇文章中,先介紹一些基本概念的東西,幫助后續內容展開打下基礎。

♦ 生產者與消費者模型

♦ 關於圖形緩沖區隊列的核心類

♦ BufferState介紹

♦ BufferSlot介紹

♦ 一些buffer數組的介紹

二、生產者與消費者模型


在Android 12系統中,BLASTBufferQueue中完成buffer queue相關組件的初始化。整個生產消費模型都在客戶端,圖形緩沖區的出隊、入隊、獲取等操作都在客戶端完成,預示着生產者模型從遠程通訊變成了本地通訊。帶來的改變就是客戶端需要通過事務Transaction來向SF端提交Buffer與圖層的屬性。
 
對於Android 12 后的系統,我自己理解下圖來表示生產者-消費者模型中各個組件間的協同工作:
 

或者如下這張圖,關於如何清楚表示BLASTBufferQueue的地位???

 

注:上圖可能表達的意思也不准確,但應留意Android 12之后與舊版本的區別

 

三、關於圖形緩沖區隊列的核心類


先給出一個涉及到的相關類的關系圖,這幅圖並不完整,很多細節也沒有呈現出來,只是大概描述各元素間的關系,便於我們看到全貌。

其中幾個比較重要的類,也是后面出場次數比較多的有:

♦ BLASTBufferQueue

♦ BufferQueueCore

♦ BufferQueueProducer

♦ BufferQueueConsumer

♦ Surface

♦ SurfaceControl

 

關注公眾號 Android元宇宙 繼續閱讀相關文章!



免責聲明!

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



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