小米電池休眠自動解除打開后蓋 小米電池休眠自動解除

背景Apple 在今年推出了支持 ProMotion 屏幕的 iPhone 設備,讓 App 在 iPhone 13 Pro 和 iPhone 13 Pro Max 上的更大刷新幀率可到達 120Hz,極大優化了應用滑動/動畫的流暢度體驗 。
ProMotion 并不是一個新的概念,早在 2017 年,Apple 推出的第二代 iPad Pro 便搭載了這一刷新率更高可達 120Hz 的屏幕 。在 iPad 上,高刷新率默認對所有 App 啟用 。而也許是出于能耗的考慮,在 iPhone 上,Apple 并未將這個能力自動對所有 App 啟用,而是需要開發者手動添加配置項來進行適配 。
近期有消息指出 iOS 15.4 beta 修正了這一行為(https://www.macrumors.com/2022/01/27/ios-15-4-apps-120-hz-promotion/),經過筆者驗證額外的配置項依然是需要的,并且本文內容依然適用 。
本文介紹了在 iPhone 上對 ProMotion 動態幀率的適配時觀察到的現象和遇到的問題,嘗試推測了背后的原理,并探討了解決問題的可能思路,最終基于調研結果在國際化短視頻業務上線優化方案,取得了核心業務指標的收益 。
什么是幀率在深入探究 ProMotion 屏幕所帶來的變化之前,我們先回顧一個似乎耳熟能詳的概念:
什么是幀率?
【小米電池休眠自動解除打開后蓋小米電池休眠自動解除】眾所周知,顯示器并不能顯示真正動態的畫面,所有動畫效果都是靠高速播放一幀幀靜態畫面欺騙人類視覺所造成的假象 。那么幀率最基本的定義便是屏幕內容的變化頻率,是一個物理意義上的指標 。這種變化頻率又由以下兩個值共同決定:
刷新幀率:由屏幕硬件規格控制,傳統顯示設備一般為 59.94Hz,決定了幀率的上限 。渲染幀率:由 CPU -> GPU 渲染管線的執行速率控制,決定了幀率的下限 。理想情況下,渲染幀率和刷新幀率更好完全匹配,或者渲染幀率是刷新幀率的整數倍,這樣實際展現的內容不會出現任何異常 。但現實中二者往往會出現不匹配的情況,卡頓就是其中之一:
卡頓

小米電池休眠自動解除打開后蓋  小米電池休眠自動解除

文章插圖
當 CPU -> GPU 的渲染管線遇到瓶頸,導致某一幀的渲染耗時大于屏幕的刷新間隔時,上一幀畫面會在屏幕上多停留數幀的時間 。當這個滯留時間過長,用戶感知到畫面更新的延遲,這稱為卡頓 。這也是 iOS 開發過程中會遇到的主要性能問題之一 。
實際幀率幀率并不等同于刷新率,它和所展示的內容息息相關:
展示靜態畫面時,理想情況只需要進行一次渲染,盡管屏幕仍然以 60Hz 或者更高的頻率進行刷新,每次刷新所展示的內容(FrameBuffer)也未改變,用戶感知到的實際幀率依然接近 0 。展示固定幀率的元素,例如 24FPS 的電影視頻時,用戶感知到的實際幀率自然也是 24 FPS 左右 。展示超高幀率的內容,例如 CS:GO 不鎖幀跑 >200 FPS,但由于顯示設備刷新率限制,用戶感知到的幀率依然不會超過硬件幀率的上限 。什么是動態刷新率ProMotion 本質上是對 Adaptive-Sync 顯示標準的一種實現 。
Ref: https://en. *** .org/wiki/Variable_refresh_rate
根據 Apple 官方文檔顯示,ProMotion 屏幕支持的刷新率是可變的 。
具體來說,對 iPhone 而言:
The iPhone 13 Pro and iPhone 13 Pro Max ProMotion displays can present content on the display using the following refresh rates and timings:
120Hz (8ms), 80Hz (12ms), 60Hz (16ms), 48Hz (20ms), 40Hz (25ms), 30Hz (33ms), 24Hz (41ms), 20Hz (50ms), 16Hz (62ms), 15Hz (66ms), 12Hz (83ms), 10Hz (100ms)
而對 iPad Pro 來說:
The iPad Pro’s ProMotion display can present content on the display using the following refresh rates and timings:
120Hz (8ms), 60Hz (16ms), 40Hz (25ms), 30Hz (33ms), 24Hz (41ms)
這其實是 Apple 對 VESA 定制的 Adaptive-Sync 技術標準的一種實現,在游戲業界已經實裝多年,類似的實現還有 AMD 的 FreeSync 和 Nivida 的 G-Sync 。這種新的顯示技術有著以下優點:
減少可感知的卡頓對于固定刷新率的屏幕而言,當某一幀的渲染耗時出現異常,在 VSync 信號到來之后才完成渲染,那么當前內容便會滯留在屏幕上,這一幀需要再等一次 VSync 信號才能被渲染展示給用戶 。
而 Adaptive-Sync 技術可以避免這一點,在該幀渲染結束后盡快進行展示,從而減少顯示卡頓時長:
小米電池休眠自動解除打開后蓋  小米電池休眠自動解除

文章插圖
減少移動設備的屏幕功耗在搭載了固定刷新率屏幕的設備上,當顯示靜態內容或者幀率較低(例如視頻)的內容時,GPU 的渲染頻率比實際頻率刷新率會更低 。但是固定刷新率的屏幕依然會已更高速率進行刷新,重復展示之前的內容,造成了額外的電量消耗 。

推薦閱讀