Android 15 introduce la función de frecuencia de actualización adaptable (ARR), que permite que la frecuencia de actualización de la pantalla se adapte a la frecuencia de fotogramas del contenido con pasos de VSync discretos.
La función de ARR ofrece los siguientes beneficios:
- Reducción del consumo de energía: De forma predeterminada, ARR permite que los dispositivos funcionen a velocidades inferiores a sus velocidades de actualización máximas, y solo pasan a velocidades más altas cuando es esencial para la experiencia del usuario, lo que minimiza el consumo de energía innecesario.
- Reducción del jank: ARR elimina la necesidad de cambiar de modo, lo que es una causa conocida de jank.
Descripción general
En los paneles que no son de ARR, la pantalla se actualiza con una cadencia fija determinada por el modo de visualización 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 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 desgarro (TE) del panel. Los OEM pueden implementar el ARR según las compensaciones de energía que prefieran.
En la siguiente figura, se muestra una pantalla con un vsyncPeriod de 240 Hz y un minFrameIntervalNs (frecuencia de actualización máxima) de 120 Hz. La sincronización vertical se produce cada 4.16 ms. Se puede presentar un fotograma en cualquier múltiplo de la 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 el ARR, los OEM deben admitir cambios en el kernel y el sistema en dispositivos que ejecuten 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 pantalla, junto con los siguientes atributos para ARR:
- Opcional
vrrConfig: Si se configura, ARR se habilita para configuraciones específicas. Si se establece ennull, el modo de visualización se establece en modos que no son de ARR, como velocidad de actualización múltiple (MRR). Con este atributo, una pantalla se puede configurar como MRR o ARR, pero no ambas. vsyncPeriod: Es la frecuencia de VSync de la pantalla. En las pantallas de ARR, este valor se usa para derivar las frecuencias de actualización discretas admitidas.Los proveedores deben establecer el valor de
DisplayConfiguration.vsyncPeriodpara todos los dispositivos. Para las pantallas que no son de ARR,DisplayConfiguration.vsyncPeriodes 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 de ARR,
DisplayConfiguration.vsyncPeriodes la frecuencia de la señal de TE. Si un dispositivo tiene unminFrameIntervalNsde 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 admite la pantalla.NotifyExpectedPresentConfig: Se determina en función de cuándo 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 autorrenovación 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 se encuentra en N + 16.6 ms después del momento actual N. Después del momento actual N, la cadencia de fotogramas es de 16.6 ms hasta que haya más cambios.
Se llama a IComposerClient.notifyExpectedPresent solo cuando se establece DisplayConfiguration.notifyExpectedPresentConfig y si se produce una de las siguientes condiciones de tiempo:
- Hora de presentación fuera de cadencia: La hora de presentación esperada 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 divisores de la frecuencia de actualización de la pantalla. Observa cómo cambia la frecuencia de fotogramas según la frecuencia solicitada.