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 den 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 Rucklern: Durch ARR entfällt der Moduswechsel, der eine bekannte Ursache für Ruckler 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 Bereiche können mit Aktualisierungsraten ausgeführt werden, die Teil des Reißeffekts (TE) des Bereichs sind. 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 ARR.

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 aber als 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 den aktuellen Ablauf nach expectedPresentTime. Wenn notifyExpectedPresent beispielsweise mit expectedPresentTime N und frameIntervalNs von 16,6 ms aufgerufen wird, liegt der nächste Frame bei N + 16,6 ms nach der aktuellen Zeit N. Nach der aktuellen Zeit N beträgt die Framefrequenz 16,6 ms, bis es weitere Änderungen gibt.

IComposerClient.notifyExpectedPresent wird nur aufgerufen, wenn DisplayConfiguration.notifyExpectedPresentConfig festgelegt ist und eine der folgenden Zeitbedingungen eintritt:

  • 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. Beobachte, wie sich die Framerate in Bezug auf die angeforderte Rate ändert.