Ab Android 15 kann die Displayaktualisierungsrate mithilfe der Funktion für die adaptive Bildwiederholrate (ARR) an die Framerate der Inhalte angepasst werden. Dabei werden diskrete VSync-Schritte verwendet.
Die ARR-Funktion bietet folgende Vorteile:
Stromverbrauch senken: Standardmäßig können Geräte mit ARR mit niedrigeren als ihren maximalen Bildwiederholraten betrieben werden. Höhere Raten werden nur dann verwendet, wenn dies für die Nutzerfreundlichkeit unerlässlich ist. So wird unnötiger Stromverbrauch minimiert.
Reduzierung von Ruckeln: Durch ARR entfällt der Moduswechsel, der eine bekannte Ursache für Ruckeln ist.
Übersicht
Bei Panels ohne ARR wird das Display in einem festen Takt aktualisiert, der vom aktiven Displaymodus bestimmt wird.
Bei ARR-Bildschirmen sind die VSync-Rate und die Bildwiederholrate der Anzeige voneinander getrennt. So können sich die Bildwiederholraten innerhalb eines Anzeigemodus ändern, je nach Aktualisierungstakt der Inhalte. Die Panels können mit einer Bildwiederholrate ausgeführt werden, die ein Teiler des Tearing-Effekts (TE) des Panels ist. OEMs haben die Flexibilität, ARR basierend auf ihren bevorzugten Leistungskompromissen zu implementieren.
Die folgende Abbildung zeigt ein Display mit einer vsyncPeriod
von 240 Hz und einer minFrameIntervalNs
(maximale Aktualisierungsrate) von 120 Hz. VSync erfolgt alle 4,16 ms. Ein Frame kann nach der minFrameIntervalNs
des letzten Frames in einem beliebigen Vielfachen von VSync dargestellt werden.
Abbildung 1: Beispiel für den durchschnittlichen Jahresumsatz
Implementierung
Android 15 unterstützt ARR mit neuen HAL APIs (Hardware Composer) und Plattformänderungen. Um die automatische Ratenzahlung zu aktivieren, müssen OEMs Kernel- und Systemänderungen auf Geräten mit Android 15 und höher unterstützen und Version 3 der android.hardware.graphics.composer3
APIs implementieren, wie in den folgenden Abschnitten aufgeführt.
Weitere Informationen finden Sie in der Referenzimplementierung von Pixel für die APIs, die ARR unterstützen.
DisplayConfiguration.aidl
Die DisplayConfiguration.aidl
API gibt die Anzeigekonfiguration mithilfe von Anzeigeattributen sowie den folgenden Attributen für ARR an:
- Optional:
vrrConfig
: Wenn diese Option festgelegt ist, wird die automatische Ressourcenzuweisung für bestimmte Konfigurationen aktiviert. Wennnull
festgelegt ist, wird der Anzeigemodus auf einen Modus ohne ARR gesetzt, z. B. Multiple Refresh Rate (MRR). Mit diesem Attribut kann ein Display entweder als MRR oder ARR konfiguriert werden, nicht beides. vsyncPeriod
: Die VSync-Rate des Displays. Bei ARR-Displays wird dieser Wert verwendet, um die unterstützten diskreten Bildwiederholraten abzuleiten.Anbieter müssen den Wert „
DisplayConfiguration.vsyncPeriod
“ für alle Geräte festlegen. Bei Displays ohne ARR istDisplayConfiguration.vsyncPeriod
die Displayaktualisierungsrate. Wenn ein Gerät 120 Hz unterstützt, muss dieser Wert 8,3 ms betragen.Bei ARR-Displays ist
DisplayConfiguration.vsyncPeriod
die TE-Signalfrequenz. Wenn ein Gerät eineminFrameIntervalNs
von 8,3 ms hat, aber die TE 240 Hz beträgt, muss dieser Wert 4,16 ms betragen.
VrrConfig.aidl
Die VrrConfig.aidl
API umfasst die folgenden Attribute:
minFrameIntervalNs
: Die maximale Bildwiederholrate, die das Display unterstützen kann.NotifyExpectedPresentConfig
: Das hängt davon ab, wann das Display eine Vorabankündigung eines anstehenden Frames benötigt.
IComposerClient.notifyExpectedPresent
gibt einen Hinweis auf einen Frame, der wahrscheinlich angezeigt wird, damit das Display seinen Selbstaktualisierungszeitraum entsprechend anpassen kann. frameIntervalNs
steht für die gegenwärtige Kadenz, die auf die expectedPresentTime
folgt. Wenn notifyExpectedPresent
beispielsweise mit expectedPresentTime
N und frameIntervalNs
= 16,6 ms aufgerufen wird, wird der nächste Frame nach N + 16,6 ms nach der aktuellen Zeit N angezeigt. Nach dem aktuellen Zeitpunkt N beträgt die Frame-Taktfrequenz 16,6 ms, bis es weitere Änderungen gibt.
IComposerClient.notifyExpectedPresent
wird nur aufgerufen, wenn DisplayConfiguration.notifyExpectedPresentConfig
festgelegt ist und eine der folgenden Zeitbedingungen erfüllt ist:
- Außer Takt: Die erwartete Präsentationszeit des nächsten Frames weicht von der regulären Bildwiederholrate des Displays ab, die durch
frameIntervalNs
definiert ist. - Zeitlimit überschritten: Das Zeitintervall zwischen den vorherigen Frames ist mindestens
notifyExpectedPresentConfig.timeoutNs
.
DisplayCommand.frameIntervalNs
DisplayCommand.frameIntervalNs
gibt einen Hinweis auf die Kadenz der nächsten Frames in Nanosekunden.
Testen
Verwenden Sie onRefreshRateChangedDebug
für die Fehlerbehebung. Mit dieser Methode wird der Client darüber informiert, dass sich die Bildwiederholrate des Displays geändert hat.
Verwenden Sie die Test-App TouchLatency
für manuelle Tests, wie in Abbildung 2 dargestellt:
Abbildung 2: TouchLatency-Test-App
Passen Sie in der Test-App mit dem Schieberegler die Renderrate an verschiedene Werte der Teileraktualisierungsraten der Aktualisierungsrate Ihres Displays an. Beobachten Sie, wie sich die Framerate im Vergleich zur angeforderten Rate ändert.