Frecuencia de actualización adaptativa

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.

arr-example

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 en null, 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 un minFrameIntervalNs 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:

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:

touchlatency-app

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.