Начиная с Android 15, функция адаптивной частоты обновления (ARR) позволяет частоте обновления дисплея адаптироваться к частоте кадров контента, используя дискретные шаги VSync.
Функция ARR предлагает следующие преимущества:
Снижение энергопотребления. По умолчанию ARR позволяет устройствам работать с частотой обновления ниже максимальной, переходя на более высокие частоты только тогда, когда это необходимо для удобства пользователя, что сводит к минимуму ненужное энергопотребление.
Уменьшение зависаний: ARR устраняет необходимость переключения режимов, что является известной причиной зависаний.
Обзор
На панелях без ARR отображение обновляется с фиксированной частотой, определяемой активным режимом отображения.
На панелях ARR частота VSync дисплея и частота обновления разделены, что позволяет изменять частоту обновления в пределах одного режима отображения в зависимости от частоты обновления контента. Панели могут работать с частотой обновления, которая является делителем эффекта разрыва панели (TE). OEM-производители имеют возможность реализовать ARR на основе своих предпочтений в отношении мощности.
На следующем рисунке показан дисплей с vsyncPeriod
240 Гц и minFrameIntervalNs
(максимальная частота обновления) 120 Гц. VSync происходит каждые 4,16 мс. Кадр может быть представлен с любым значением, кратным VSync, после minFrameIntervalNs
из последнего кадра.
Рисунок 1. Пример ARR.
Выполнение
Android 15 поддерживает ARR с новыми API-интерфейсами HAL Hardware Composer (HWC) и изменениями платформы. Чтобы включить ARR, OEM-производители должны поддерживать изменения ядра и системы на устройствах под управлением Android 15 и более поздних версий, а также реализовать API-интерфейсы android.hardware.graphics.composer3
версии 3, как указано в следующих разделах.
Дополнительную информацию см. в эталонной реализации API-интерфейсов Pixel , поддерживающих ARR.
DisplayConfiguration.aidl
API DisplayConfiguration.aidl
определяет конфигурацию отображения с помощью атрибутов отображения, а также следующих атрибутов для ARR:
- Необязательный
vrrConfig
: если установлен, ARR включается для определенных конфигураций. Если установлено значениеnull
, режим отображения устанавливается на режимы без ARR, такие как множественная частота обновления (MRR) . С помощью этого атрибута дисплей можно настроить как MRR или ARR, но не оба одновременно. vsyncPeriod
: частота вертикальной синхронизации дисплея. На дисплеях ARR это значение используется для определения поддерживаемых дискретных частот обновления.Поставщики должны установить значение
DisplayConfiguration.vsyncPeriod
для всех устройств. Для дисплеев, не поддерживающих ARR,DisplayConfiguration.vsyncPeriod
— это частота обновления дисплея. Если устройство поддерживает 120 Гц, то это значение должно составлять 8,3 мс.Для дисплеев ARR
DisplayConfiguration.vsyncPeriod
— это частота сигнала TE. Если устройство имеетminFrameIntervalNs
8,3 мс, но TE составляет 240 Гц, это значение должно быть 4,16 мс.
Вррконфиг.аидл
API VrrConfig.aidl
включает следующие атрибуты:
-
minFrameIntervalNs
: максимальная частота обновления, которую может поддерживать дисплей. -
NotifyExpectedPresentConfig
: это определяется тем, когда на дисплее требуется предварительное уведомление о предстоящем кадре.
IComposerClient.notifyExpectedPresent
предоставляет подсказку для кадра, который, скорее всего, будет представлен, чтобы дисплей мог соответствующим образом адаптировать период самообновления. frameIntervalNs
представляет текущую частоту кадров, следующую за expectedPresentTime
. Например, если notifyExpectedPresent
вызывается с expectedPresentTime
N и frameIntervalNs
, равным 16,6 мс, то следующий кадр будет через N + 16,6 мс после текущего времени N. После текущего времени N частота кадров составляет 16,6 мс до тех пор, пока не произойдут дальнейшие изменения.
IComposerClient.notifyExpectedPresent
вызывается только в том случае, если установлен DisplayConfiguration.notifyExpectedPresentConfig
и если возникает одно из следующих условий синхронизации:
- Настоящее время вне каденции: ожидаемое время представления следующего кадра отклоняется от обычной частоты обновления дисплея, определенной с помощью
frameIntervalNs
. - Превышено время ожидания: интервал времени между предыдущими кадрами больше или равен
notifyExpectedPresentConfig.timeoutNs
.
DisplayCommand.frameIntervalNs
DisplayCommand.frameIntervalNs
предоставляет подсказку о частоте предстоящих кадров в наносекундах.
Тестирование
Используйте onRefreshRateChangedDebug
для отладки. Этот метод уведомляет клиента об изменении частоты обновления дисплея.
Используйте тестовое приложение TouchLatency
для ручного тестирования, как показано на рисунке 2:
Рис. 2. Тестовое приложение TouchLatency.
В тестовом приложении используйте ползунок, чтобы настроить частоту рендеринга в соответствии с различными значениями частоты обновления делителя частоты обновления вашего дисплея. Обратите внимание, как меняется частота кадров в зависимости от запрошенной частоты.
,Начиная с Android 15, функция адаптивной частоты обновления (ARR) позволяет частоте обновления дисплея адаптироваться к частоте кадров контента, используя дискретные шаги VSync.
Функция ARR предлагает следующие преимущества:
Снижение энергопотребления. По умолчанию ARR позволяет устройствам работать с частотой обновления ниже максимальной, переходя на более высокие частоты только тогда, когда это необходимо для удобства пользователя, что сводит к минимуму ненужное энергопотребление.
Уменьшение зависаний: ARR устраняет необходимость переключения режимов, что является известной причиной зависаний.
Обзор
На панелях без ARR отображение обновляется с фиксированной частотой, определяемой активным режимом отображения.
На панелях ARR частота VSync дисплея и частота обновления разделены, что позволяет изменять частоту обновления в пределах одного режима отображения в зависимости от частоты обновления контента. Панели могут работать с частотой обновления, которая является делителем эффекта разрыва панели (TE). OEM-производители имеют возможность реализовать ARR на основе своих предпочтений в отношении мощности.
На следующем рисунке показан дисплей с vsyncPeriod
240 Гц и minFrameIntervalNs
(максимальная частота обновления) 120 Гц. VSync происходит каждые 4,16 мс. Кадр может быть представлен с любым значением, кратным VSync, после minFrameIntervalNs
из последнего кадра.
Рисунок 1. Пример ARR.
Выполнение
Android 15 поддерживает ARR с новыми API-интерфейсами HAL Hardware Composer (HWC) и изменениями платформы. Чтобы включить ARR, OEM-производители должны поддерживать изменения ядра и системы на устройствах под управлением Android 15 и более поздних версий, а также реализовать API-интерфейсы android.hardware.graphics.composer3
версии 3, как указано в следующих разделах.
Дополнительную информацию см. в эталонной реализации API-интерфейсов Pixel , поддерживающих ARR.
DisplayConfiguration.aidl
API DisplayConfiguration.aidl
определяет конфигурацию отображения с помощью атрибутов отображения, а также следующих атрибутов для ARR:
- Необязательный
vrrConfig
: если установлен, ARR включается для определенных конфигураций. Если установлено значениеnull
, режим отображения устанавливается на режимы без ARR, такие как множественная частота обновления (MRR) . С помощью этого атрибута дисплей можно настроить как MRR или ARR, но не оба одновременно. vsyncPeriod
: частота вертикальной синхронизации дисплея. На дисплеях ARR это значение используется для определения поддерживаемых дискретных частот обновления.Поставщики должны установить значение
DisplayConfiguration.vsyncPeriod
для всех устройств. Для дисплеев без ARRDisplayConfiguration.vsyncPeriod
— это частота обновления дисплея. Если устройство поддерживает 120 Гц, то это значение должно составлять 8,3 мс.Для дисплеев ARR
DisplayConfiguration.vsyncPeriod
— это частота сигнала TE. Если устройство имеетminFrameIntervalNs
8,3 мс, но TE составляет 240 Гц, это значение должно быть 4,16 мс.
Вррконфиг.аидл
API VrrConfig.aidl
включает следующие атрибуты:
-
minFrameIntervalNs
: максимальная частота обновления, которую может поддерживать дисплей. -
NotifyExpectedPresentConfig
: это определяется тем, когда на дисплее требуется предварительное уведомление о предстоящем кадре.
IComposerClient.notifyExpectedPresent
предоставляет подсказку для кадра, который, скорее всего, будет представлен, чтобы дисплей мог соответствующим образом адаптировать период самообновления. frameIntervalNs
представляет текущую частоту кадров, следующую за expectedPresentTime
. Например, если notifyExpectedPresent
вызывается с expectedPresentTime
N и frameIntervalNs
, равным 16,6 мс, то следующий кадр будет через N + 16,6 мс после текущего времени N. После текущего времени N частота кадров составляет 16,6 мс до тех пор, пока не произойдут дальнейшие изменения.
IComposerClient.notifyExpectedPresent
вызывается только в том случае, если установлен DisplayConfiguration.notifyExpectedPresentConfig
и если возникает одно из следующих условий синхронизации:
- Настоящее время вне каденции: ожидаемое время представления следующего кадра отклоняется от обычной частоты обновления дисплея, определенной с помощью
frameIntervalNs
. - Превышено время ожидания: интервал времени между предыдущими кадрами больше или равен
notifyExpectedPresentConfig.timeoutNs
.
DisplayCommand.frameIntervalNs
DisplayCommand.frameIntervalNs
предоставляет подсказку о частоте предстоящих кадров в наносекундах.
Тестирование
Используйте onRefreshRateChangedDebug
для отладки. Этот метод уведомляет клиента об изменении частоты обновления дисплея.
Используйте тестовое приложение TouchLatency
для ручного тестирования, как показано на рисунке 2:
Рис. 2. Тестовое приложение TouchLatency.
В тестовом приложении используйте ползунок, чтобы настроить частоту рендеринга в соответствии с различными значениями частоты обновления делителя частоты обновления вашего дисплея. Обратите внимание, как меняется частота кадров в зависимости от запрошенной частоты.