Android 15 introduit la fonctionnalité de fréquence d'actualisation adaptative, qui permet à la fréquence d'actualisation de l'écran de s'adapter à la fréquence d'images du contenu à l'aide d'étapes VSync discrètes.
La fonctionnalité de fréquence d'actualisation adaptative présente les avantages suivants :
- Réduction de la consommation d'énergie : par défaut, la fréquence d'actualisation adaptative permet aux appareils de fonctionner à des fréquences inférieures à leur fréquence d'actualisation maximale, et de passer à des fréquences plus élevées uniquement lorsque cela est essentiel pour l'expérience utilisateur, ce qui minimise la consommation d'énergie inutile.
- Réduction des saccades : la fréquence d'actualisation adaptative élimine le besoin de changer de mode, ce qui est une cause connue de saccades.
Présentation
Sur les panneaux sans fréquence d'actualisation adaptative, l'écran s'actualise à une cadence fixe déterminée par le mode d'affichage actif.
Sur les panneaux avec fréquence d'actualisation adaptative, la fréquence VSync de l'écran et la fréquence d'actualisation sont dissociées, ce qui permet de modifier les fréquences d'actualisation dans un mode d'affichage en fonction de la cadence de mise à jour du contenu. Les panneaux peuvent fonctionner à des fréquences d'actualisation qui sont des diviseurs de l'effet de déchirement du panneau. Les OEM peuvent implémenter la fréquence d'actualisation adaptative en fonction des compromis de puissance qu'ils préfèrent.
La figure suivante montre un écran avec une valeur vsyncPeriod de 240 Hz et une valeur 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 le minFrameIntervalNs de la dernière image.
Figure 1. Exemple de fréquence d'actualisation adaptative.
Implémentation
Android 15 est compatible avec la fréquence d'actualisation adaptative grâce aux nouvelles API HAL Hardware Composer (HWC) et aux modifications de la plate-forme. Pour activer la fréquence d'actualisation adaptative, les OEM doivent prendre en charge les modifications du noyau et du système sur les appareils
exécutant Android 15 ou une version ultérieure, et implémenter la version 3 des
android.hardware.graphics.composer3 API, comme indiqué dans les sections suivantes.
Pour en savoir plus, consultez l'implémentation de référence de Pixel des API compatibles avec la fréquence d'actualisation adaptative.
DisplayConfiguration.aidl
L'API DisplayConfiguration.aidl spécifie la configuration de l'écran
à l'aide d'attributs d'affichage, ainsi que les attributs suivants pour la fréquence d'actualisation adaptative :
- `vrrConfig` facultatif
vrrConfig: si ce paramètre est défini, la fréquence d'actualisation adaptative est activée pour des configurations spécifiques. Si ce paramètre est défini surnull, le mode d'affichage est défini sur des modes sans fréquence d'actualisation adaptative, tels que la fréquence d'actualisation multiple (MRR). Avec cet attribut, un écran peut être configuré en tant que fréquence d'actualisation multiple ou fréquence d'actualisation adaptative, mais pas les deux. vsyncPeriod: fréquence VSync de l'écran. Sur les écrans avec fréquence d'actualisation adaptative, cette valeur est utilisée pour dériver les fréquences d'actualisation discrètes compatibles.Les fournisseurs doivent définir la valeur
DisplayConfiguration.vsyncPeriodpour tous les appareils. Pour les écrans sans fréquence d'actualisation adaptative,DisplayConfiguration.vsyncPeriodcorrespond à la fréquence d'actualisation de l'écran. Si un appareil est compatible avec 120 Hz, cette valeur doit être de 8,3 ms.Pour les écrans avec fréquence d'actualisation adaptative,
DisplayConfiguration.vsyncPeriodcorrespond à la fréquence du signal TE. Si un appareil a unminFrameIntervalNsde 8,3 ms, mais que le 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 que l'écran peut prendre en charge.NotifyExpectedPresentConfig: ce paramètre est déterminé par le moment où l'écran nécessite une notification anticipée d'une image à venir.
IComposerClient.notifyExpectedPresent
fournit un indice pour une image susceptible d'être présentée, afin que l'écran puisse adapter sa période d'auto-actualisation en conséquence. frameIntervalNs représente la cadence de présentation qui suit le expectedPresentTime. Par exemple, si notifyExpectedPresent est appelé avec expectedPresentTime N et frameIntervalNs de 16,6 ms, l'image suivante se trouve à N + 16,6 ms après l'heure de présentation N. Après l'heure de présentation 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 que l'une des conditions de timing suivantes se produit :
- Heure de présentation hors cadence : l'heure de présentation prévue de l'image suivante s'écarte de la fréquence d'actualisation régulière de l'écran définie par
frameIntervalNs. - Délai avant expiration dépassé : l'intervalle de temps entre les images précédentes est supérieur ou égal à
notifyExpectedPresentConfig.timeoutNs.
DisplayCommand.frameIntervalNs
DisplayCommand.frameIntervalNs
fournit un indice sur la cadence des images à venir 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'
TouchLatency
application de test 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 le taux d'affichage à différentes valeurs de fréquences d'actualisation du diviseur de la fréquence d'actualisation de l'écran. Observez comment la fréquence d'images change en fonction de la fréquence demandée.