Adaptive Aktualisierungsrate

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.

arr-example

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. Wenn null 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 ist DisplayConfiguration.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 eine minFrameIntervalNs 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:

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:

touchlatency-app

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.