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: La 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 pantalla activo.
En los paneles de ARR, la frecuencia de VSync de la pantalla y la frecuencia de actualización están desacopladas, lo que permite que las frecuencias de actualización cambien en un modo de visualización, según la cadencia de actualización de 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 para implementar 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
(tasa 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 las nuevas APIs de HAL de Hardware Composer (HWC) y cambios de 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.
Para obtener más información, consulta la implementación de referencia de Pixel de las APIs que admiten ARR.
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. En pantallas que no son de ARM,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 estará en N + 16.6 ms después del momento presente N. Después de la hora 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 excedió 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 frecuencia de renderización a varios valores de las 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.