Melhor desempenho para jogos

No Android 14 e versões mais recentes, um novo modo de energia chamado GAME no Android Dynamic Performance Framework (ADPF) permite a personalização do desempenho do smartphone durante jogos. GAME indica à HAL de energia que um app de jogo está em primeiro plano. Essa indicação permite que o HAL de energia adote estratégias de gerenciamento de energia quando um jogo está sendo jogado, para que o usuário tenha uma experiência de desempenho estável e melhorada.

Para melhorar o tempo de carregamento de um jogo, o Android 13 apresenta um novo modo de energia chamado GAME_LOADING no ADPF. GAME_LOADING indica se um app de jogo está no estado de carregamento para que a HAL de energia possa fornecer um aumento de carregamento. Essa indicação permite que a HAL de energia ofereça medidas de aumento de desempenho que podem acelerar o tempo de carregamento do jogo.

Esta página descreve como o app transmite o estado do jogo para a HAL de energia, explica como configurar essa HAL para aproveitá-la nos seus dispositivos e como testar a implementação dessa HAL.

Detecção e notificação do modo de economia de bateria

Esta seção descreve como o Gerenciador de energia processa os modos GAME e GAME_LOADING.

Modo liga/desliga GAME

O novo modo de energia GAME no Android 14 indica ao Serviço Power Manager que o usuário está jogando. Quando o HAL de energia é notificado sobre o modo GAME, ele pode ajustar a energia para melhorar o desempenho, reduzir a temperatura e prolongar a duração da bateria enquanto o jogo está sendo jogado.

A figura a seguir explica o fluxo de informações para o HAL de energia para indicar o modo de energia GAME:

game-mode

Figura 1. Fluxo de informações para indicar que um jogo está sendo jogado.

O modo de energia GAME é sempre definido para apps com um appCategory de GAME em AndroidManifest.xml.

Modo de energia GAME_LOADING

O modo de aumento de carregamento funciona detectando quando um app de jogo está em um estado de carregamento e notificando a HAL de energia. O Android 13 apresenta um novo estado de jogo chamado isLoading na API voltada para desenvolvedores. Esse estado do jogo usa o novo modo de energia GAME_LOADING no serviço Power Manager para notificar a HAL de energia sobre o estado de jogo de nível superior. Depois que a HAL de energia é notificada sobre o estado de carregamento do jogo, ela pode ajustar as configurações de desempenho da plataforma e a taxa do clock da CPU, o que resulta em tempos de carregamento melhores.

Para indicar que um jogo está sendo carregado, o app usa o Painel de jogo para definir um estado isLoading no Gerenciador de jogos. O Game Manager transmite esse estado ao serviço Game Manager, que usa setPowerMode com o novo modo de energia GAME_LOADING para invocar o serviço Power Manager. O modo de energia GAME_LOADING indica à HAL de energia que o jogo está em um estado de carregamento para que a HAL de energia possa fornecer um aumento de carregamento.

A figura a seguir explica o fluxo de informações do app para o HAL de energia para indicar o estado de carregamento:

loading-boost

Figura 2. Fluxo de informações para indicar que um jogo está em um estado de carregamento.

O painel do jogo permite que os usuários ativem ou desativem o recurso de aumento de carregamento com a configuração de desempenho. A configuração de desempenho está sempre desativada por padrão.

Personalizar o HAL de energia usando GAME e GAME_LOADING

Para aproveitar os modos GAME e GAME_LOADING, os OEMs precisam personalizar a implementação do HAL de energia. Como o gerenciamento de energia e a otimização de desempenho são específicos do hardware, nenhuma implementação de referência para os modos GAME ou GAME_LOADING será disponibilizada até que uma implementação de referência para o dispositivo Google Pixel seja lançada.

Para melhorar o desempenho em um modo GAME e GAME_LOADING, os OEMs podem implementar uma combinação das seguintes medidas:

  • Estabilidade da taxa de frames
  • Aumentar a velocidade do clock da CPU
  • Reduzir temporariamente o limite de temperatura
  • Atribuir uma prioridade de CPU mais alta ao app de jogo em primeiro plano
  • Reduzir o aumento da CPU ajustado para apps normais que não são de jogos
  • Otimizar a estratégia de distribuição de energia relacionada ao calor

Testar a implementação do modo GAME

Para testar a implementação do modo GAME, use testes com o prefixo testGamePowerMode_ em GameManagerServiceTests.java.

Testar a implementação de GAME_LOADING

Para testar a implementação do modo GAME_LOADING, use android.gamemanager.cts.GameManagerTest#testSetGameContext. Esse teste verifica se GameManager::setGameContext() com um contexto isLoading invoca o modo de carregamento do jogo na HAL de energia no modo de desempenho.