游戏性能提升

从 Android 14 开始,Android 动态性能框架 (ADPF) 中新增了一种名为 GAME 的电源模式,以便自定义手机在玩游戏期间的性能。GAME 会向 Power HAL 指明游戏应用位于前台。此指示可让 Power HAL 在玩游戏时采用电源管理策略,以便让用户获得稳定并提升性能的效果。

为了缩短游戏的加载时间,Android 13 在 ADPF 中引入了一个名为 GAME_LOADING 的新电源模式。GAME_LOADING 表示游戏应用是否处于加载状态,以便 Power HAL 可以提供加载速度提升。此指示可让 Power HAL 提供性能提升措施,从而缩短游戏加载时间。

本页介绍了游戏应用如何将游戏状态传递给 Power HAL,并说明了如何配置 Power HAL 以便在您的设备中充分利用它,以及如何测试您的 Power HAL 实现。

电源模式检测和通知

本部分介绍了 Power Manager 如何处理 GAMEGAME_LOADING 模式。

GAME 电源模式

Android 14 中的新电源模式 GAME 会向电源管理器服务指明用户正在玩游戏。Power HAL 收到 GAME 模式通知后,可在玩游戏期间调整电源以提升性能、降低温度并延长电池续航时间。

下图说明了进入 Power HAL 以指示 GAME 电源模式的信息流:

game-mode

图 1. 用于指示正在玩游戏的信息流。

对于 AndroidManifest.xmlappCategoryGAME 的应用,始终会设置 GAME 电源模式。

GAME_LOADING 电源模式

加载速度提升模式的工作原理是检测游戏应用何时处于加载状态,并通知 Power HAL。Android 13 在面向开发者的 API 中引入了一个名为 isLoading 的新游戏状态。此游戏状态使用电源管理器服务中新增的 GAME_LOADING 电源模式来向 Power HAL 发送有关顶级游戏状态的通知。Power HAL 收到游戏加载状态通知后,可以调整平台的性能设置和 CPU 时钟频率,从而缩短加载时间。

为了表明游戏正在加载,游戏应用会使用游戏信息中心在游戏管理器中设置 isLoading 状态。游戏管理器将此状态传递给游戏管理器服务,后者将 setPowerMode 与新增的 GAME_LOADING 电源模式结合使用,以调用电源管理器服务。GAME_LOADING 电源模式会向 Power HAL 发出指示,告知其游戏处于加载状态,以便 Power HAL 可以提供加载速度提升。

下图说明了从应用到 Power HAL 的信息流,用以指示加载状态:

loading-boost

图 2. 用于指示游戏处于加载状态的信息流。

借助游戏信息中心,用户可以通过“性能设置”来启用或停用加载速度提升功能。默认情况下,“性能设置”始终处于关闭状态。

使用 GAME 和 GAME_LOADING 自定义 Power HAL

为了利用 GAMEGAME_LOADING 模式,原始设备制造商 (OEM) 必须自定义其 Power HAL 实现。由于电源管理和性能提升与硬件相关,因此在发布 Google Pixel 设备的参考实现之前,系统不会提供 GAMEGAME_LOADING 模式的参考实现。

为了增强 GAMEGAME_LOADING 模式下的性能,OEM 可以选择实现以下措施的组合:

  • 稳定帧速率
  • 提高 CPU 时钟速度
  • 暂时降低温度限制
  • 为前台游戏应用分配更高的 CPU 优先级
  • 减少针对常规非游戏应用的 CPU 加速
  • 优化热相关的电源分布策略

测试 GAME 模式实现

如需测试 GAME 模式的实现,请使用 GameManagerServiceTests.java 中以 testGamePowerMode_ 为前缀的测试。

测试 GAME_LOADING 实现

如需测试 GAME_LOADING 模式的实现,请使用 android.gamemanager.cts.GameManagerTest#testSetGameContext。该测试会验证具有 isLoading 上下文的 GameManager::setGameContext() 是否会在处于性能模式下的 Power HAL 上调用游戏加载模式。