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

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

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

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

Обнаружение и уведомление режима питания

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

GAME режим питания

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

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

game-mode

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

Режим питания GAME всегда устанавливается для приложений с appCategory GAME в AndroidManifest.xml .

GAME_LOADING режим мощности

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

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

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

loading-boost

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

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

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

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

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

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

Тестовая реализация режима GAME

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

Тестирование реализации GAME_LOADING

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