À 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.
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 estnull
, 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 valeurminFrameIntervalNs
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:
minFrameIntervalNs
: fréquence d'actualisation maximale prise en charge par l'écran.NotifyExpectedPresentConfig
: cette valeur est déterminée par le moment où l'écran nécessite un préavis d'un frame à venir.
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:
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.