Android 15 introduce la funzionalità di frequenza di aggiornamento adattiva (ARR), che consente alla frequenza di aggiornamento del display di adattarsi alla frequenza dei fotogrammi dei contenuti utilizzando passaggi VSync discreti.
La funzionalità ARR offre i seguenti vantaggi:
- Riduzione del consumo energetico: per impostazione predefinita, ARR consente ai dispositivi di funzionare a velocità inferiori alle frequenze di aggiornamento massime, passando a velocità più elevate solo quando è essenziale per l'esperienza utente, il che riduce al minimo il consumo energetico non necessario.
- Riduzione dei problemi di scattosità: ARR elimina la necessità di cambiare modalità, una causa nota di scattosità.
Panoramica
Nei pannelli non ARR, il display si aggiorna a una cadenza fissa determinata dalla modalità di visualizzazione attiva.
Nei pannelli ARR, la frequenza VSync del display e la frequenza di aggiornamento sono disaccoppiate, il che consente alle frequenze di aggiornamento di cambiare 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 tearing (TE) del pannello. Gli OEM possono implementare l'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. La sincronizzazione verticale si verifica ogni
4,16 ms. Un frame può essere presentato a qualsiasi multiplo della sincronizzazione verticale dopo
minFrameIntervalNs dall'ultimo frame.
 
 
Figura 1. Esempio di ARR.
Implementazione
Android 15 supporta ARR con nuove API HAL Hardware Composer (HWC) e modifiche alla piattaforma. Per abilitare ARR, gli OEM devono supportare le modifiche al kernel e al sistema sui dispositivi
con Android 15 e versioni successive e implementare la versione 3 delle
API android.hardware.graphics.composer3, come elencato nelle sezioni
seguenti.
Per ulteriori informazioni, consulta l'implementazione di riferimento di Pixel delle API che supportano ARR.
DisplayConfiguration.aidl
L'API DisplayConfiguration.aidl specifica la configurazione di visualizzazione
utilizzando gli attributi di visualizzazione, insieme ai seguenti attributi per ARR:
- (Facoltativo)
vrrConfig: se impostato, ARR è abilitato per configurazioni specifiche. Se impostato sunull, la modalità di visualizzazione è impostata su modalità non ARR, ad esempio frequenza di aggiornamento multipla (MRR). Con questo attributo, un display può essere configurato come MRR o ARR, ma non entrambi.
- vsyncPeriod: La frequenza di sincronizzazione verticale del display. Sui display ARR, questo valore viene utilizzato per derivare le frequenze di aggiornamento discrete supportate.- I fornitori devono impostare il valore - DisplayConfiguration.vsyncPeriodper 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- minFrameIntervalNsdi 8,3 ms, ma il TE è 240 Hz, questo valore deve essere 4,16 ms.
VrrConfig.aidl
L'API VrrConfig.aidl include i seguenti attributi:
- minFrameIntervalNs: La frequenza di aggiornamento massima supportata dal display.
- NotifyExpectedPresentConfig: Questo valore è determinato dal momento in cui il display richiede la 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 attuale che segue expectedPresentTime. Ad esempio, se
notifyExpectedPresent viene chiamato con expectedPresentTime N e
frameIntervalNs di 16,6 ms, il frame successivo si trova a N + 16,6 ms
dopo il momento attuale N. Dopo il momento attuale N, la cadenza dei fotogrammi è
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:
- Tempo di presentazione fuori cadenza: il tempo di presentazione previsto 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 comunica al client che la frequenza di aggiornamento del
display è stata modificata.
Utilizza l'app di test
TouchLatency
per i test manuali, come mostrato nella Figura 2:
 
 
Figura 2. App di test TouchLatency.
Nell'app di test, utilizza il cursore per regolare la frequenza di rendering su vari valori di frequenze di aggiornamento del divisore della frequenza di aggiornamento del display. Osserva come cambia il frame rate in base alla frequenza richiesta.
