A partir de Android 15, la función de frecuencia de actualización adaptable (ARR) permite que la frecuencia de actualización de la pantalla se adapte a la velocidad de fotogramas del contenido mediante pasos discretos de VSync.
La función ARR ofrece los siguientes beneficios:
Reducción del consumo de energía: De forma predeterminada, la ARR permite que los dispositivos funcionen a velocidades más bajas que sus velocidades de actualización máximas y que cambien a velocidades más altas solo cuando sea esencial para la experiencia del usuario, lo que minimiza el consumo de energía innecesario.
Reducción de la latencia: El ARR elimina la necesidad de cambiar de modo, que es una causa conocida de latencia.
Descripción general
En los paneles que no son de ARR, la pantalla se actualiza a una cadencia fija determinada por el modo de visualización activo.
En los paneles ARR, la frecuencia de VSync y la frecuencia de actualización de la pantalla están desacopladas, lo que permite que las frecuencias de actualización cambien dentro de un modo de visualización según la cadencia de actualización del contenido. Los paneles pueden ejecutarse a frecuencias de actualización que son divisores del efecto de seccionamiento (TE) del panel. Los OEMs tienen la flexibilidad de implementar el ARR en función de sus compensaciones de energía preferidas.
En la siguiente imagen, se muestra una pantalla con vsyncPeriod
de 240 Hz y minFrameIntervalNs
(frecuencia de actualización máxima) de 120 Hz. La sincronización vertical se produce cada 4.16 ms. Un fotograma se puede presentar en cualquier múltiplo de sincronización vertical después del minFrameIntervalNs
del último fotograma.
Figura 1: Ejemplo de ARR
Implementación
Android 15 admite ARR con nuevas APIs de HAL de Hardware Composer (HWC) y cambios en la plataforma. Para habilitar ARR, los OEMs deben admitir cambios en el kernel y el sistema en dispositivos que ejecutan Android 15 y versiones posteriores, y deben implementar la versión 3 de las APIs de android.hardware.graphics.composer3
, como se indica en las siguientes secciones.
Consulta la implementación de referencia de Pixel de las APIs que admiten ARR para obtener más información.
DisplayConfiguration.aidl
La API de DisplayConfiguration.aidl
especifica la configuración de la pantalla con atributos de visualización, junto con los siguientes atributos para ARR:
vrrConfig
opcional: Si se establece, se habilita el ARR para configuraciones específicas. Si se establece ennull
, el modo de visualización se establece en modos que no son de ARR, como la frecuencia de actualización múltiple (MRR). Con este atributo, se puede configurar una visualización como MRR o ARR, pero no ambas.vsyncPeriod
: Es la tasa de VSync de la pantalla. En las pantallas de ARR, este valor se usa para derivar las frecuencias de actualización discretas compatibles.Los proveedores deben establecer el valor
DisplayConfiguration.vsyncPeriod
para todos los dispositivos. Para las pantallas que no son ARR,DisplayConfiguration.vsyncPeriod
es la frecuencia de actualización de la pantalla. Si un dispositivo admite 120 Hz, este valor debe ser de 8.3 ms.En el caso de las pantallas ARR,
DisplayConfiguration.vsyncPeriod
es la frecuencia de la señal de TE. Si un dispositivo tiene unminFrameIntervalNs
de 8.3 ms, pero el TE es de 240 Hz, este valor debe ser de 4.16 ms.
VrrConfig.aidl
La API de VrrConfig.aidl
incluye los siguientes atributos:
minFrameIntervalNs
: Es la frecuencia de actualización máxima que puede admitir la pantalla.NotifyExpectedPresentConfig
: Esto se determina cuando la pantalla requiere un aviso anticipado de un fotograma próximo.
IComposerClient.notifyExpectedPresent
proporciona una sugerencia para un fotograma que es probable que se presente, de modo que la pantalla pueda adaptar su período de actualización automática según corresponda. frameIntervalNs
representa la cadencia actual que sigue después de expectedPresentTime
. Por ejemplo, si se llama a notifyExpectedPresent
con expectedPresentTime
N y frameIntervalNs
de 16.6 ms, el siguiente fotograma está en N + 16.6 ms después de la hora actual N. Después del tiempo actual N, la cadencia de fotogramas es de 16.6 ms hasta que se produzcan más cambios.
Se llama a IComposerClient.notifyExpectedPresent
solo cuando se establece DisplayConfiguration.notifyExpectedPresentConfig
y si se produce una de las siguientes condiciones de sincronización:
- Hora actual fuera de cadencia: El tiempo de presentación esperado del siguiente fotograma se desvía de la frecuencia de actualización normal de la pantalla definida por
frameIntervalNs
. - Se superó el tiempo de espera: El intervalo de tiempo entre los fotogramas anteriores es mayor o igual que
notifyExpectedPresentConfig.timeoutNs
.
DisplayCommand.frameIntervalNs
DisplayCommand.frameIntervalNs
proporciona una sugerencia sobre la cadencia de los próximos fotogramas en nanosegundos.
Prueba
Usa onRefreshRateChangedDebug
para la depuración. Este método notifica al cliente que cambió la frecuencia de actualización de la pantalla.
Usa la app de prueba TouchLatency
para las pruebas manuales, como se muestra en la Figura 2:
Figura 2: App de prueba de TouchLatency.
En la app de prueba, usa el control deslizante para ajustar la velocidad de renderización a varios valores de frecuencias de actualización del divisor de la frecuencia de actualización de la pantalla. Observa cómo cambia la velocidad de fotogramas con respecto a la velocidad solicitada.