前言
今天同事買了一臺一加8Pro,當然話不多說,先拿來給我們研究一下,看看一加是如何優化120Hz屏幕的。
一、1加7 Pro上90hz的優化方案
首先我們先來看看90hz上如何優化的,採用的主要方法就是動態調整整體屏幕幀率,進到不同應用,調整屏幕幀率,以下是我之前總結的整體幀率切換的場景。
我將它命名爲:屏幕動態調整幀率
1.1 小結
設置當中有60hz和90hz模式選項
設置爲90hz選項之後,正常界面可以一直保持90hz模式,進入特定的應用或界面自動切換到60hz,退出特定的應用或界面自動切換回90hz
特定的應用主要和遊戲,視頻,時間相關
二、1加8 Pro上120hz的優化方案
正當我也認爲一加8 Pro上會採用和1加7 Pro類似的方案的時候。我抓了一個trace,讓我看到了1加8 Pro的另外一種方案。
我將它命名爲:應用動態調整幀率
(我相信一加已經申請了專利,如果沒有申請,我覺得我得趕緊寫一個)
2.1 先來看看trace
新浪微博
狀態欄
可以很明顯的看到在同一時間中,vsync信號按照120hz上報
新浪微博按照120hz繪製
狀態欄按照60hz繪製
我猜這樣子設計的原因是:用戶在刷微博的時候,讓其他窗口按照60hz繪製,可以讓出更多cpu和gpu資源給微博用,保證用戶刷微博保持120hz。
2.2 小結
我推測1加是可能在Choreographer中動了一些手腳,而且我自己大概也可以寫出demo代碼了,可以在不整體調整屏幕幀率的情況下,讓不同應用以任何可以整除120的幀率運行,例如60,30,40hz,由於整體幀率又是120hz,也不會出現長短幀的方案。
三、總結
通過研究可以發現,一加在90hz和120hz採用了兩種不同的方案,而且這兩個方案是可以同時工作的。只不過同時運行的時候邏輯會比較複雜,暫時我還不確定1加8 Pro是否會採用兩種方案同時使用?因爲手機已經還給同事了。
不管是什麼方案,最終目的一致的:就是讓應用的每一幀繪製渲染時間小於一個時間週期。