題外話
最近總有一個感覺:在不斷學習中,越發的感覺自己的無知,自己是不是要從“愚昧之巔”掉到“絕望之谷”了,哈哈哈🐶
鄧寧-克魯格效應
一、前言
前面的文章中已經講解了如何去創建一個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