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: 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.

arr-example

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 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. 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 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 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:

app-latencia-del-tacto

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.