UNISOC 利用 ADPF 提升 Android 游戏性能

对于 Android 游戏开发者来说,优化性能和散热管理是一项关键挑战。为了打造尽可能出色的玩家体验,开发者需要使用工具来平衡高帧速率和可持续的功耗。Android 动态性能框架 (ADPF) 提供了一组关键的 API,可让游戏直接与设备的电源和散热系统进行互动,从而实现这种精细的优化。

UNISOC 正在采用这些工具,以在其 SoC 上提供出色的游戏体验。从 Android 14 开始,UNISOC 产品完全支持核心 ADPF API,包括 Performance Hint、Thermal 和 Game Mode/State。为了进一步提升其 SoC 的性能,UNISOC 在其 UNISOC Miracle Gaming 引擎中利用这些 ADPF API 来监控系统工作负载并动态调整性能,从而确保更流畅、更稳定的游戏体验。

图 1:UNISOC Miracle Gaming
图 1:UNISOC Miracle Gaming

利用 ADPF 优化性能和散热

UNISOC 的 ADPF 实现为开发者提供了强大的工具来实时管理游戏性能。

  • 性能提示PerformanceHintManager 允许应用将信息传递给系统,使 SoC 能够在适当的时间分配适当数量的资源。通过提供有关工作负载的提示并报告帧的实际时长,游戏可以帮助系统动态加速绘制和图层合成,从而实现更稳定的性能。

  • Thermal API:为防止出现破坏性的热节流,开发者可以使用 getThermalHeadroom() API。此函数可预测设备的热状态,从而使应用能够在过热发生之前主动调整其工作负载。这种预见性对于在长时间的激烈会话期间稳定游戏帧速率至关重要。

  • Game Mode 和 Game State API:这些 API 可改进游戏与系统之间的通信。GameMode 可让用户表明自己的意图(例如,在游戏中选择“性能”设置),而 GameState 可让游戏告知操作系统其当前状态(例如,正在加载、正在玩等)。在底层,系统随后可以利用游戏分辨率缩放和游戏 FPS 替换等干预措施,根据此上下文优化性能。

提供更高的帧速率和能效

在 UNISOC SoC 上集成 ADPF 可显著提升帧速率、功耗和整体游戏体验。在对 NCSOFT 的热门游戏《天堂 W》进行的测试中,各种图形设置下的优势都非常明显。

在中等画质下,游戏帧速率显著提升了 28.1% ,同时功耗降低了 3.7%,实现了更流畅的体验和更高的效率双重优势。

其他设置下的结果也令人印象深刻:

  • 在高图形设置下,帧速率飙升了令人印象深刻的 50.1%,而功耗仅增加了 3.1%,这充分展示了 ADPF 释放巨大性能空间的强大能力。

  • 在低图形设置下,玩家发现帧速率提高了 11.5% ,而能耗相应增加了 9.9% ,这表明即使在要求不高的配置下,性能也能得到提升。

图 2:图形帧速率低
图 2:低图形帧速率
图 3:中等图形帧速率
图 3:中等图形帧速率
图 4:高图形帧速率
图 4:高图形帧速率
图 5:能耗
图 5:能耗

此外,UNISOC 还展示了“自适应优化”功能。用户启用此选项后,应用可以根据系统反馈自动调整纹理、树叶和效果质量等图形元素,从而确保提供更稳定的帧速率。

UNISOC SoC 上的自适应性能的未来发展

UNISOC 致力于深化与 ADPF 的集成。随着框架的不断发展,UNISOC Miracle Gaming 引擎将继续纳入最新的核心 ADPF 功能,确保开发者和游戏玩家能够从 UNISOC 赋能的设备上获得最新的性能和散热管理技术。

Android 适应性功能使用入门

Android 动态性能框架现已面向所有 Android 游戏开发者推出,适用于 Unity、Unreal、Cocos Creator 游戏引擎,也可通过原生 C++ 库使用。

  • 对于 Unity 开发者,您可以从 Adaptive Performance 提供程序 v5.0.0 开始。请注意,大多数 Android 设备都支持从 Android 11(API 级别 30)开始的 Thermal API,以及从 Android 12(API 级别 31)开始的 Performance Hint API。

  • 对于 Unreal 开发者,您可以开始使用 Android 动态性能 Unreal Engine 插件,该插件适用于以 Android 12(API 级别 31)或更高版本为目标平台的大多数 Android 设备。

  • 对于 Cocos Creator,您可以从 v3.8.2 开始使用 Thermal API,从 v3.8.3 开始使用 Performance Hint API。

  • 对于自定义引擎,您可以参考原生 ADPF C++ 示例