Повышение производительности для игр

Начиная с Android 14, в Android Dynamic Performance Framework (ADPF) появился новый режим энергосбережения под названием GAME , позволяющий настраивать производительность телефона во время игр. Режим GAME сообщает Power HAL, что игровое приложение находится на переднем плане. Это позволяет Power HAL применять стратегии управления энергопотреблением во время игры, обеспечивая пользователю стабильную и улучшенную производительность.

Для улучшения времени загрузки игр в Android 13 в ADPF введен новый режим энергосбережения под названием GAME_LOADING . GAME_LOADING указывает, находится ли игровое приложение в состоянии загрузки, чтобы Power HAL мог ускорить загрузку. Эта индикация позволяет Power HAL применять меры повышения производительности, которые могут ускорить время загрузки игры.

На этой странице описывается, как игровое приложение передает состояние игры в Power HAL, объясняется, как настроить Power HAL для его использования на ваших устройствах, а также как протестировать вашу реализацию Power HAL.

Обнаружение и оповещение о режиме энергосбережения

В этом разделе описывается, как диспетчер питания обрабатывает режимы GAME и GAME_LOADING .

игровой режим питания

Новый режим энергосбережения GAME в Android 14 сообщает службе управления питанием о том, что пользователь играет в игру. Когда Power HAL получает уведомление о режиме GAME , он может регулировать энергопотребление для повышения производительности, снижения температуры и продления срока службы батареи во время игры.

На следующем рисунке показана последовательность передачи информации в Power HAL для индикации режима питания GAME :

game-mode

Рисунок 1. Схема потока информации, указывающая на то, что игра ведётся.

Режим энергосбережения GAME всегда устанавливается для приложений, у которых в файле AndroidManifest.xml указано appCategory со значением GAME .

Режим питания GAME_LOADING

Режим ускорения загрузки работает за счет определения состояния загрузки игрового приложения и уведомления Power HAL. В Android 13 представлено новое состояние игры под названием isLoading в API для разработчиков . Это состояние игры использует новый режим энергосбережения GAME_LOADING в службе управления питанием, чтобы уведомить Power HAL о состоянии игры верхнего уровня. После получения уведомления о состоянии загрузки игры Power HAL может скорректировать параметры производительности платформы и тактовую частоту процессора, что приводит к сокращению времени загрузки.

Чтобы указать, что игра загружается, игровое приложение использует панель управления игрой для установки состояния isLoading в менеджере игр. Менеджер игр передает это состояние службе менеджера игр, которая использует setPowerMode с новым режимом питания GAME_LOADING для вызова службы менеджера питания. Режим питания GAME_LOADING указывает Power HAL , что игра находится в состоянии загрузки, чтобы Power HAL мог обеспечить ускорение загрузки.

На следующем рисунке показан поток информации от приложения к Power HAL, указывающий на состояние загрузки:

loading-boost

Рисунок 2. Схема потока информации, указывающая на то, что игра находится в состоянии загрузки.

В панели управления игры пользователи могут включать или выключать функцию ускорения загрузки с помощью настроек производительности. По умолчанию эта функция всегда отключена.

Настройте Power HAL с помощью параметров GAME и GAME_LOADING.

Для использования режимов GAME и GAME_LOADING производителям оборудования необходимо адаптировать свою реализацию Power HAL . Поскольку управление питанием и повышение производительности зависят от аппаратного обеспечения, эталонные реализации для режимов GAME и GAME_LOADING не будут доступны до тех пор, пока не будет выпущена эталонная реализация для устройства Google Pixel.

Для повышения производительности в режимах GAME и GAME_LOADING производители оборудования могут выбрать комбинацию следующих мер:

  • Стабилизация частоты кадров
  • Увеличьте тактовую частоту процессора.
  • Временно снизить температурное дросселирование.
  • Присвойте игровому приложению, работающему в фоновом режиме, более высокий приоритет использования ЦП.
  • Снижена интенсивность работы процессора, оптимизированная для обычных приложений, не являющихся играми.
  • Оптимизировать стратегию распределения электроэнергии, связанной с тепловым режимом.

Тестирование реализации игрового режима

Для проверки реализации режима GAME используйте тесты с префиксом testGamePowerMode_ в GameManagerServiceTests.java .

Проверка реализации GAME_LOADING

Для проверки реализации режима GAME_LOADING используйте android.gamemanager.cts.GameManagerTest#testSetGameContext . Этот тест проверяет, вызывает ли GameManager::setGameContext() с контекстом isLoading режим загрузки игры в Power HAL в режиме производительности.