Fréquence d'actualisation adaptative

À partir d'Android 15, la fonctionnalité de fréquence d'actualisation adaptative (ARR) permet à la fréquence d'actualisation de l'écran de s'adapter à la fréquence d'images du contenu, à l'aide d'étapes VSync distinctes.

La fonctionnalité de revenu annuel récurrent offre les avantages suivants:

  • Réduction de la consommation d'énergie: par défaut, l'ARR permet aux appareils de fonctionner à des fréquences inférieures à leurs fréquences d'actualisation maximales, et ne passe à des fréquences plus élevées que lorsque cela est essentiel pour l'expérience utilisateur, ce qui réduit la consommation d'énergie inutile.

  • Réduction des à-coups: le taux de répétition des problèmes élimine la nécessité de changer de mode, qui est une cause connue d'à-coups.

Présentation

Sur les panneaux autres que RA, l'affichage est actualisé à une cadence fixe déterminée par le mode d'affichage actif.

Sur les panneaux ARR, la fréquence VSync et la fréquence d'actualisation de l'écran sont dissociées, ce qui permet de modifier les fréquences d'actualisation dans un même mode d'affichage, en fonction de la fréquence de mise à jour du contenu. Les panneaux peuvent fonctionner à des fréquences d'actualisation qui sont des diviseurs de l'effet de déchirure (TE) du panneau. Les OEM ont la possibilité d'implémenter l'ARR en fonction des compromis d'alimentation de leur choix.

La figure suivante montre un écran avec une vsyncPeriod de 240 Hz et une minFrameIntervalNs (fréquence d'actualisation maximale) de 120 Hz. VSync se produit toutes les 4,16 ms. Une image peut être présentée à n'importe quel multiple de VSync après la minFrameIntervalNs de la dernière image.

arr-example

Figure 1 : Exemple d'ARR

Implémentation

Android 15 est compatible avec l'ARR avec de nouvelles API HAL de Hardware Composer (HWC) et des modifications de la plate-forme. Pour activer la récupération des comptes, les OEM doivent prendre en charge les modifications du noyau et du système sur les appareils équipés d'Android 15 ou version ultérieure, et implémenter la version 3 des API android.hardware.graphics.composer3, comme indiqué dans les sections suivantes.

Pour en savoir plus, consultez l'implémentation de référence de Pixel des API compatibles avec ARR.

DisplayConfiguration.aidl

L'API DisplayConfiguration.aidl spécifie la configuration d'affichage à l'aide d'attributs d'affichage, ainsi que les attributs suivants pour ARR:

  • Facultatif vrrConfig: si défini, ARR est activé pour des configurations spécifiques. Si la valeur est null, le mode d'affichage est défini sur des modes autres que l'ARR, tels que le multiple refresh rate (MRR) (fréquence d'actualisation multiple). Avec cet attribut, un écran peut être configuré en tant que MRR ou ARR, mais pas les deux.
  • vsyncPeriod: taux VSync de l'écran. Sur les écrans ARR, cette valeur permet de déduire les fréquences d'actualisation discrètes compatibles.

    Les fournisseurs doivent définir la valeur DisplayConfiguration.vsyncPeriod pour tous les appareils. Pour les écrans autres que l'ARR, DisplayConfiguration.vsyncPeriod correspond à la fréquence d'actualisation de l'écran. Si un appareil est compatible avec la fréquence de 120 Hz, cette valeur doit être de 8,3 ms.

    Pour les écrans ARR, DisplayConfiguration.vsyncPeriod correspond à la fréquence du signal TE. Si un appareil a une valeur minFrameIntervalNs de 8,3 ms, mais que la TE est de 240 Hz, cette valeur doit être de 4,16 ms.

VrrConfig.aidl

L'API VrrConfig.aidl inclut les attributs suivants:

IComposerClient.notifyExpectedPresent fournit un indice pour un frame susceptible d'être présenté afin que l'écran puisse adapter sa période d'auto-actualisation en conséquence. frameIntervalNs représente la cadence actuelle qui suit après expectedPresentTime. Par exemple, si notifyExpectedPresent est appelé avec expectedPresentTime N et frameIntervalNs de 16,6 ms, le frame suivant se trouve à N + 16,6 ms après l'heure actuelle N. Après l'heure actuelle N, la cadence d'images est de 16,6 ms jusqu'à ce qu'il y ait d'autres modifications.

IComposerClient.notifyExpectedPresent n'est appelé que lorsque DisplayConfiguration.notifyExpectedPresentConfig est défini et si l'une des conditions de synchronisation suivantes se produit:

  • Heure de présentation hors cadence: le délai de présentation prévu du prochain frame diffère du taux de rafraîchissement normal de l'écran défini par frameIntervalNs.
  • Délai avant expiration dépassé: l'intervalle de temps entre les frames précédents est supérieur ou égal à notifyExpectedPresentConfig.timeoutNs.

DisplayCommand.frameIntervalNs

DisplayCommand.frameIntervalNs fournit un indice sur la cadence des prochains frames en nanosecondes.

Tests

Utilisez onRefreshRateChangedDebug pour le débogage. Cette méthode informe le client que la fréquence d'actualisation de l'écran a changé.

Utilisez l'application de test TouchLatency pour les tests manuels, comme illustré dans la figure 2:

touchlatency-app

Figure 2. Application de test TouchLatency.

Dans l'application de test, utilisez le curseur pour ajuster la fréquence de rendu à différentes valeurs de fréquences d'actualisation du diviseur de la fréquence d'actualisation de votre écran. Observez comment la fréquence d'images change par rapport à la fréquence demandée.