Android 15 推出自動調整更新率 (ARR) 功能,可讓螢幕更新率使用離散 VSync 步驟,配合內容影格速率調整。
ARR 功能具備下列優點:
- 降低耗電量:ARR 預設會讓裝置以低於最高更新率的速率運作,只有在使用者體驗需要時才會切換至較高的速率,盡量減少不必要的耗電量。
 - 減少卡頓:ARR 不需切換模式,而切換模式是造成卡頓的已知原因。
 
總覽
在非 ARR 面板上,顯示器會以固定節奏更新,而節奏取決於有效顯示模式。
在 ARR 面板上,顯示 VSync 速率和刷新率會分離,因此刷新率可根據內容更新節奏,在一個顯示模式內變更。面板的刷新率可以是面板撕裂效應 (TE) 的除數。原始設備製造商可根據偏好的電源取捨方式實作 ARR。
下圖顯示 vsyncPeriod 為 240 Hz,而 minFrameIntervalNs (最高刷新率) 為 120 Hz 的螢幕。VSync 每 4.16 毫秒發生一次。影格可在上一個影格的 minFrameIntervalNs 之後,以 VSync 的任何倍數呈現。
 
圖 1. ARR 範例。
實作
Android 15 支援 ARR,並提供新的硬體合成器 (HWC) HAL API 和平台變更。如要啟用 ARR,原始設備製造商必須支援搭載 Android 15 以上版本的裝置進行核心和系統變更,並實作第 3 版 android.hardware.graphics.composer3 API,如以下各節所述。
如要瞭解支援 ARR 的 API,請參閱 Pixel 的參考實作。
DisplayConfiguration.aidl
DisplayConfiguration.aidl API 會使用顯示屬性指定顯示設定,以及 ARR 的下列屬性:
- 選用
vrrConfig: 如果設定此選項,系統會為特定設定啟用 ARR。如果設為null,顯示模式會設為非 ARR 模式,例如多重更新率 (MRR)。使用這項屬性時,顯示畫面可設定為 MRR 或 ARR,但不能同時設定兩者。 vsyncPeriod: 螢幕的 VSync 速率。在 ARR 螢幕上,這個值用於衍生支援的離散重新整理頻率。供應商必須為所有裝置設定
DisplayConfiguration.vsyncPeriod值。如果是 ARR 以外的螢幕,DisplayConfiguration.vsyncPeriod是螢幕刷新率。如果裝置支援 120 Hz,則這個值必須為 8.3 毫秒。如果是 ARR 螢幕,
DisplayConfiguration.vsyncPeriod是 TE 訊號頻率。如果裝置的minFrameIntervalNs為 8.3 毫秒,但 TE 為 240 Hz,則這個值必須為 4.16 毫秒。
VrrConfig.aidl
VrrConfig.aidl API 包含下列屬性:
minFrameIntervalNs:螢幕支援的最高更新率。NotifyExpectedPresentConfig:這取決於螢幕何時需要即將到來影格的預先通知。
IComposerClient.notifyExpectedPresent 會提供可能顯示的影格提示,讓螢幕相應調整自我重新整理週期。frameIntervalNs 代表 expectedPresentTime 之後的當前節奏。舉例來說,如果使用 16.6 毫秒的 frameIntervalNs 呼叫 notifyExpectedPresent N,則下一個影格會在目前時間 N 之後的 N + 16.6 毫秒。expectedPresentTime在目前時間 N 之後,影格節奏為 16.6 毫秒,直到有進一步變更為止。
只有在設定 DisplayConfiguration.notifyExpectedPresentConfig,且發生下列其中一個時間條件時,才會呼叫 IComposerClient.notifyExpectedPresent:
- 超出節奏的顯示時間:下一個影格的預期顯示時間偏離 
frameIntervalNs定義的螢幕正常更新率。 - 逾時:前一個影格與目前影格的時間間隔大於或等於 
notifyExpectedPresentConfig.timeoutNs。 
DisplayCommand.frameIntervalNs
DisplayCommand.frameIntervalNs
提供有關後續影格節奏的提示 (單位為奈秒)。
測試
使用 onRefreshRateChangedDebug 進行偵錯。這個方法會通知用戶端螢幕的重新整理率已變更。
如圖 2 所示,使用 TouchLatency 測試應用程式進行手動測試:
 
圖 2. TouchLatency 測試應用程式。
在測試應用程式中,使用滑桿將算繪率調整為螢幕重新整理率的各種除數值。觀察影格速率如何根據要求速率變化。