问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Android 动态性能框架 (ADPF) GAME 电源模式游戏性能提升

创作时间:
作者:
@小白创作中心

Android 动态性能框架 (ADPF) GAME 电源模式游戏性能提升

引用
CSDN
1.
https://blog.csdn.net/qq_31138209/article/details/139956855

从Android 14开始,Google为Android动态性能框架(ADPF)引入了GAME电源模式,以优化游戏期间的设备性能。同时,Android 13中新增的GAME_LOADING模式则专注于缩短游戏加载时间。本文将详细介绍这两种模式的工作原理、实现方式以及如何进行测试。

从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如何处理GAME和GAME_LOADING模式。

GAME电源模式

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

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

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

对于AndroidManifest.xml中appCategory为GAME的应用,始终会设置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的信息流,用以指示加载状态:

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

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

使用GAME和GAME_LOADING自定义Power HAL

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

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

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

测试GAME模式实现

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

测试GAME_LOADING实现

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

注意:由于这些模式的实现因硬件而异,因此OEM必须自行执行手动测试,以了解使用此功能时游戏性能是否得到增强。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号