- Vsync 調(diào)度:很多同學(xué)的一個(gè)認(rèn)知誤區(qū)在于認(rèn)為 vsync 是每 16ms 都會(huì)有的 , 但是其實(shí) vsync 是需要調(diào)度的 , 沒有調(diào)度就不會(huì)有回調(diào);
- 消息調(diào)度:主要是 doframe 的消息調(diào)度 , 如果消息被阻塞 , 會(huì)直接造成卡頓;
- input 處理:觸摸事件的處理;
- 動(dòng)畫處理:animator 動(dòng)畫執(zhí)行和渲染;
- view 處理:主要是 view 相關(guān)的遍歷和三大流程;
- measure、layout、draw:view 三大流程的執(zhí)行;
- DisplayList 更新:view 硬件加速后的 draw op;
- OpenGL 指令轉(zhuǎn)換:繪制指令轉(zhuǎn)換為 OpenGL 指令;
- 指令 buffer 交換:OpenGL 的指令交換到 GPU 內(nèi)部執(zhí)行;
- GPU 處理:GPU 對(duì)數(shù)據(jù)的處理過(guò)程;
- layer 合成:surface buffer 合成屏幕顯示 buffer 的流程;
- 光柵化:將矢量圖轉(zhuǎn)換為位圖;
- Display:顯示控制;
- buffer 切換:切換屏幕顯示的幀 buffer;
準(zhǔn)確地說(shuō) , 這里仍可以進(jìn)一步細(xì)化:16ms 內(nèi)完成 APP 側(cè)數(shù)據(jù)的生產(chǎn);16ms 內(nèi)完成 sf layer 的合成
View 的視覺效果正是通過(guò)這一整條復(fù)雜的鏈路一步步展示出來(lái)的 , 有了這個(gè)前提 , 那就可以得出一個(gè)結(jié)論:上述任意鏈路發(fā)生卡頓 , 均會(huì)造成卡頓 。
2.3 生產(chǎn)者和消費(fèi)者
我們?cè)倩氐?Vsync 的話題 , 消費(fèi) Vsync 的雙方分別是 App 和 sf , 其中 App 代表的是生產(chǎn)者 , sf 代表的是消費(fèi)者 , 兩者交付的中間產(chǎn)物則是 surface buffer 。
再具體一點(diǎn) , 生產(chǎn)者大致可以分為兩類 , 一類是以 window 為代表的頁(yè)面 , 也就是我們平時(shí)所看到的 view 樹這一套;另一類是以視頻流為代表的可以直接和 surface 完成數(shù)據(jù)交換的來(lái)源 , 比如相機(jī)預(yù)覽等 。
對(duì)于一般的生產(chǎn)者和消費(fèi)者模式 , 我們知道會(huì)存在相互阻塞的問題 。比如生產(chǎn)者速度快但是消費(fèi)者速度慢 , 亦或是生產(chǎn)者速度慢消費(fèi)者速度快 , 都會(huì)導(dǎo)致整體速度慢且造成資源浪費(fèi) 。所以 Vsync 的協(xié)同以及雙緩沖甚至三緩沖的作用就體現(xiàn)出來(lái)了 。
思考一個(gè)問題:是否緩沖的個(gè)數(shù)越多越好?過(guò)多的緩沖會(huì)造成什么問題?這里結(jié)合 view 的一生 , 我們可以把兩個(gè)流程合在一起 , 讓我們的視角再高一層:
答案是會(huì)造成另一個(gè)嚴(yán)重的問題:lag , 響應(yīng)延遲
2.4 機(jī)制上的保護(hù)這里我們來(lái)回答第三個(gè)問題 , 從系統(tǒng)的渲染架構(gòu)上來(lái)說(shuō) , 機(jī)制上的保護(hù)主要有幾方面:
- Vsync 機(jī)制的協(xié)同;
- 多緩沖設(shè)計(jì);
- surface 的提供;
- 同步屏障的保護(hù);
- 硬件繪制的支持;
- 渲染線程的支持;
- GPU 合成加速;
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專業(yè)人士給予相關(guān)指導(dǎo)!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助:- 淘寶直播等多個(gè)平臺(tái)賬號(hào)已被封 淘寶直播被當(dāng)錄播封了
- 直播聲卡入門知識(shí) 什么是直播聲卡
- 快手怎么開通直播功能 快手直播怎么開
- 新手開直播多久能賺錢 美妝博主怎么賺錢
- 老王直播送iqoo8手機(jī) iqoo7直播
- 加來(lái)眾科AK8Pro數(shù)字直播聲卡
- 新手如何從0開始做直播 直播間怎么開
- 讀懂佳能相機(jī)的系列型號(hào)
- 搞耍是什么意思
- 網(wǎng)絡(luò)電視看直播不清楚怎么回事 網(wǎng)絡(luò)電視看直播為什么會(huì)卡
