Frequenza di aggiornamento adattiva

Android 15 introduce la funzionalità di frequenza di aggiornamento adattiva (ARR), che consente alla frequenza di aggiornamento del display di adattarsi alla frequenza fotogrammi dei contenuti utilizzando passaggi VSync discreti.

La funzionalità ARR offre i seguenti vantaggi:

  • Riduzione del consumo di energia: per impostazione predefinita, ARR consente ai dispositivi di operare a frequenze inferiori alle frequenze di aggiornamento massime, passando a frequenze più elevate solo quando è essenziale per l'esperienza utente, il che riduce al minimo il consumo di energia non necessario.
  • Riduzione del jank: ARR elimina la necessità di cambiare modalità, una causa nota di jank.

Panoramica

Sui pannelli non ARR, il display si aggiorna a una cadenza fissa determinata dalla modalità di visualizzazione attiva.

Sui pannelli ARR, la frequenza VSync e la frequenza di aggiornamento del display sono disaccoppiate, il che consente di modificare le frequenze di aggiornamento all'interno di una modalità di visualizzazione in base alla cadenza di aggiornamento dei contenuti. I pannelli possono essere eseguiti a frequenze di aggiornamento che sono divisori dell'effetto di tearing (TE) del pannello. Gli OEM possono implementare ARR in base ai compromessi di alimentazione preferiti.

La figura seguente mostra un display con vsyncPeriod di 240 Hz e minFrameIntervalNs (frequenza di aggiornamento massima) di 120 Hz. VSync si verifica ogni 4,16 ms. Un frame può essere presentato a qualsiasi multiplo di VSync dopo il minFrameIntervalNs dall'ultimo frame.

arr-example

Figura 1. Esempio di ARR.

Implementazione

Android 15 supporta ARR con le nuove API HAL di Hardware Composer (HWC) e le modifiche della piattaforma. Per abilitare ARR, gli OEM devono supportare le modifiche del kernel e del sistema sui dispositivi con Android 15 e versioni successive e implementare la versione 3 delle android.hardware.graphics.composer3 API, come indicato nelle sezioni seguenti.

Per ulteriori informazioni, consulta l'implementazione di riferimento di Pixel's delle API che supportano ARR per maggiori informazioni.

DisplayConfiguration.aidl

L'API DisplayConfiguration.aidl specifica la configurazione del display utilizzando gli attributi del display, insieme ai seguenti attributi per ARR:

  • `vrrConfig` facoltativo vrrConfig: se impostato, ARR è abilitato per configurazioni specifiche. Se impostato su null, la modalità di visualizzazione viene impostata su modalità non ARR come la frequenza di aggiornamento multipla (MRR). Con questo attributo, un display può essere configurato come MRR o ARR, ma non entrambi.
  • vsyncPeriod: la frequenza VSync del display. Sui display ARR, questo valore viene utilizzato per derivare le frequenze di aggiornamento discrete supportate.

    I fornitori devono impostare il valore DisplayConfiguration.vsyncPeriod per tutti i dispositivi. Per i display non ARR, DisplayConfiguration.vsyncPeriod è la frequenza di aggiornamento del display. Se un dispositivo supporta 120 Hz, questo valore deve essere 8,3 ms.

    Per i display ARR, DisplayConfiguration.vsyncPeriod è la frequenza del segnale TE. Se un dispositivo ha un minFrameIntervalNs di 8,3 ms, ma il TE è di 240 Hz, questo valore deve essere di 4,16 ms.

VrrConfig.aidl

L'VrrConfig.aidl API include i seguenti attributi:

  • minFrameIntervalNs: la frequenza di aggiornamento massima che il display può supportare.
  • NotifyExpectedPresentConfig: questo valore è determinato dal momento in cui il display richiede una notifica anticipata di un frame imminente.

IComposerClient.notifyExpectedPresent fornisce un suggerimento per un frame che probabilmente verrà presentato, in modo che il display possa adattare di conseguenza il periodo di autoaggiornamento. frameIntervalNs rappresenta la cadenza di presentazione che segue dopo expectedPresentTime. Ad esempio, se notifyExpectedPresent viene chiamato con expectedPresentTime N e frameIntervalNs di 16,6 ms, il frame successivo è a N + 16,6 ms dopo l'ora di presentazione N. Dopo l'ora di presentazione N, la cadenza dei frame è di 16,6 ms fino a ulteriori modifiche.

IComposerClient.notifyExpectedPresent viene chiamato solo quando DisplayConfiguration.notifyExpectedPresentConfig è impostato e se si verifica una delle seguenti condizioni di temporizzazione:

  • Ora di presentazione fuori cadenza: l'ora di presentazione prevista del frame successivo si discosta dalla frequenza di aggiornamento regolare del display definita da frameIntervalNs.
  • Timeout superato: l'intervallo di tempo tra i frame precedenti è maggiore o uguale a notifyExpectedPresentConfig.timeoutNs.

DisplayCommand.frameIntervalNs

DisplayCommand.frameIntervalNs fornisce un suggerimento sulla cadenza dei frame imminenti in nanosecondi.

Test

Utilizza onRefreshRateChangedDebug per il debug. Questo metodo notifica al client che la frequenza di aggiornamento del display è cambiata.

Utilizza l'app di test TouchLatency per i test manuali, come mostrato nella Figura 2:

touchlatency-app

Figura 2. App di test TouchLatency.

Nell'app di test, utilizza il cursore per regolare la percentuale di rendering su vari valori di frequenze di aggiornamento del divisore della frequenza di aggiornamento del display. Osserva come cambia la frequenza fotogrammi in base alla frequenza richiesta.