Refuerzo de rendimiento para juegos

A partir de Android 14, un nuevo modo de consumo llamado GAME en el framework de rendimiento dinámico de Android (ADPF) permite la personalización del rendimiento del teléfono durante el uso de un juego. GAME le indica a la HAL de energía que una app de juego está en primer plano. Esta indicación permite que la HAL de energía adopte estrategias de administración de energía cuando se juega un juego, de modo que el usuario experimente un rendimiento estable y mejorado.

Para mejorar el tiempo de carga de un juego, Android 13 presenta un nuevo modo de consumo llamado GAME_LOADING en ADPF. GAME_LOADING indica si una app de juego está en estado de carga para que la HAL de energía pueda proporcionar una mejora de carga. Esta indicación permite que la HAL de energía proporcione medidas de mejora del rendimiento que pueden acelerar el tiempo de carga del juego.

En esta página, se describe cómo la app de juego pasa el estado del juego a la HAL de energía, se explica cómo configurar la HAL de energía para aprovecharla en tus dispositivos y cómo probar tu implementación de la HAL de energía.

Detección y notificación del modo de consumo

En esta sección, se describe cómo el administrador de energía controla los modos GAME y GAME_LOADING.

Modo de consumo GAME

El nuevo modo de consumo GAME en Android 14 le indica a el servicio de Power Manager que el usuario está jugando un juego. Cuando se notifica a la HAL de energía sobre el modo GAME, puede ajustar la energía para mejorar el rendimiento, reducir la temperatura y extender la duración de la batería mientras se juega.

En la siguiente figura, se explica el flujo de información a la HAL de energía para indicar el modo de consumo GAME:

game-mode

Figura 1: Flujo de información para indicar que se está jugando un juego

El modo de consumo GAME siempre está configurado para las apps con un appCategory de GAME en AndroidManifest.xml.

Modo de consumo GAME_LOADING

El modo de mejora de carga funciona detectando cuándo una app de juego está en estado de carga y notificando a la HAL de energía. Android 13 presenta un nuevo estado de juego llamado isLoading en la API orientada al desarrollador. Este estado de juego usa el nuevo GAME_LOADING modo de consumo en el servicio de Power Manager para notificar a la HAL de energía sobre el estado del juego de nivel superior. Una vez que se notifica a la HAL de energía sobre el estado de carga del juego, puede ajustar la configuración de rendimiento de la plataforma y la frecuencia de reloj de la CPU, lo que mejora los tiempos de carga.

Para indicar que se está cargando un juego, la app de juego usa el Panel de juego para establecer un isLoading estado en el administrador de juegos. El administrador de juegos pasa este estado al servicio de Game Manager, que usa setPowerMode con el nuevo GAME_LOADING modo de consumo para invocar el servicio de Power Manager. El modo de consumo GAME_LOADING le indica a la HAL de energía que el juego está en estado de carga para que pueda proporcionar una mejora de carga.

En la siguiente figura, se explica el flujo de información de la app a la HAL de energía para indicar el estado de carga:

loading-boost

Figura 2: Flujo de información para indicar que un juego está en estado de carga

El panel de juego permite a los usuarios activar o desactivar la función de mejora de carga con el parámetro de configuración de rendimiento. El parámetro de configuración de rendimiento siempre está desactivado de forma predeterminada.

Personaliza la HAL de energía con GAME y GAME_LOADING

Para aprovechar los modos GAME y GAME_LOADING, los OEMs deben personalizar su implementación de la HAL de energía. Como la administración de energía y la mejora del rendimiento son específicas del hardware, no se ponen a disposición implementaciones de referencia para los modos GAME o GAME_LOADING hasta que se lance una implementación de referencia para el dispositivo Google Pixel.

Para mejorar el rendimiento en un modo GAME y GAME_LOADING, los OEMs pueden optar por implementar una combinación de las siguientes medidas:

  • Estabilizar la velocidad de fotogramas
  • Aumentar la velocidad de reloj de la CPU
  • Reducir temporalmente la limitación de temperatura
  • Asignar una prioridad de CPU más alta a la app de juego en primer plano
  • Reducir la mejora de CPU ajustada para apps normales que no son de juegos
  • Optimizar la estrategia de distribución de energía relacionada con la temperatura

Prueba la implementación del modo GAME

Para probar la implementación del modo GAME, usa las pruebas con el prefijo testGamePowerMode_ en GameManagerServiceTests.java.

Prueba la implementación de GAME_LOADING

Para probar la implementación del modo GAME_LOADING, usa android.gamemanager.cts.GameManagerTest#testSetGameContext. Esta prueba verifica si GameManager::setGameContext() con un contexto isLoading invoca el modo de carga del juego en la HAL de energía en modo de rendimiento.