游戏中的每个优化都很重要。优化可以使帧频更高,模型的质量更高,游戏画面更漂亮以及电池寿命更长,这意味着游戏时长更长和游戏外观更优质。在最快帧频下保证最佳质量至关重要的点是对GPU的利用。为了在使用Mali GPU的设备上增强游戏性能,Arm增加了对可更新驱动程序和Android GPU Inspector的支持。
目前,Android设备通过无线固件映像接收GPU驱动程序。由于固件需要非常稳定的网络,因此每年仅可能进行一次或两次完整的系统无线更新。在这些版本之间,修复错误和优化驱动程序的机会减少到只能在无线更新时间段进行。如果游戏开发者发现一个驱动程序的漏洞,他们需要等到安卓设备的下一个无线更新才能进行修复。Arm正持续优化Mali GPU的驱动程序,但这些更新的交付只能在无线更新期间进行。
PC游戏玩家体验的主要支柱是为其GPU接收新的驱动程序进行优化以及获得新功能和更稳定的体验。安卓可更新的驱动程序使Mali GPU设备使用者可以获得同样的体验。更新是通过Google Play商店直接交付的,而无需依靠接收设备的完整无线更新:这是一个简单而熟悉的安装过程。
每当一个游戏开发者报告的漏洞被修复后,在被推送到可更新的驱动程序Beta通道进行测试之后可以在 Google Play商店被交付。
一旦这个漏洞被修复,Arm可以将此更新升级到稳定通道。游戏者可以从驱动程序的额外稳定性中受益。因为Arm进行了驱动程序优化,他们可以不断地给玩家提供优化从而改善游戏体验。
谷歌最近宣布,未来的Mali GPU驱动程序将支持Android GPU Inspector。这是一个开源跨供应商工具,可为游戏开发人员提供意见从而帮助他们了解他们的内容如何在Mali GPU上运行。使用这些配置文件信息,游戏开发人员可以优化游戏内容来提高使用Mali GPU的设备上的帧频。不仅Arm可以通过可更新的驱动程序在驱动程序中提供优化,游戏开发人员也可以通过驱动程序中的分析器支持来优化游戏内容。 这是真正的双赢。
Vulkan性能样本
为了演示Android GPU Inspector的分析功能,我们可以使用Khronos Group Vulkan 样本。这个项目演示了Vulkan API的最佳实践方法,其中包含一组性能示例。这里提供了切换功能来显示API的使用对帧频和内存带宽的影响。示例之一显示了使用两个或三个交换链映像的区别,通常称为双缓冲和三缓冲。虽然有更深层次的流水线和更高的输入延迟为代价, 但GPU可以更早地开始下一帧的工作,因为不需要等待显示的缓冲完成。本示例提供了用来切换双缓冲和三缓冲的按钮,并测量了绘制每帧的时间。 启用vsync后,在Arm Mali-G76 GPU上切换到三重缓冲可能导致从30fps(33.3ms)跳至60fps(16.6ms)。
使用Android GPU Inspector,我们可以在此示例中记录GPU操作的轨迹,便可以清楚的通过显示观察到打开三重缓冲后的GPU利用率在增加。
双缓冲
上图的截屏显示了开启双缓冲的例子。值得注意的是帧频是33.4ms代表30fps。按钮可以轻松的切换双缓冲和三缓冲模式。
Android GPU Inspector Trace
上图显示了Android GPU Inspector 的Trace,Trace左侧灰色部分是启用了双缓冲时,右边部分是启用了三重缓冲时。灰色部分清楚地表明GPU在等待缓冲区插入时处于停滞状态。提交工作时和GPU硬件队列之间的间断表明了这一点。 这极大地影响了活动的GPU周期。
一旦启用了三重缓冲,由于GPU不在等待缓冲区插入,工作提交的规律性将大大提高。密度更高的GPU活动周期计数器显示GPU的利用率大大提高。
三缓冲
启用三重缓冲后,绘制帧的时间减少到16.7ms(60fps) 。 这是因为GPU能够立即在第三个缓冲区的下一帧开始工作。
Crytek Neon Noir
如Android GPU Inspector所示,尽管Vulkan 样本可以显著提高GPU的使用性能,但游戏的内容通常要复杂得多。游戏开发与技术公司Crytek与硬件无关被称作Neon Noir的PC示范样本可为现代硬件提供惊人的图形保真度。Crytek与Arm和Google合作,将此示范样本移植到移动设备并使用Arm Mali GPU。 这是一个了不起的成就,因为将如此大的图形负载转移到移动GPU上是一个具有挑战性的过程。
使用 Crytek Neon Noir之前的 Android GPU Inspector Trace
上图是一帧所做工作的Trace 。数据分析清楚地显示有机会更多地加载两个GPU硬件队列。 顶点和片段工作之间存在一些依赖关系,解决这些依赖关系可以让更多工作并行运行。
在Mali-G76上一帧需要花费78ms(12fps)的时间渲染。 12fps很低,但将如此繁重的图形负载转移到移动GPU上是很困难的事情。 此分析数据是对平台之间移动游戏内容的工程过程的深刻理解。
使用 Crytek Neon Noir之后的 Android GPU Inspector Trace
经过对分析数据的仔细研究,发现Crytek可以优化GPU的工作。之前的图像显示了GPU硬件队列的出色负载并大大减少了帧渲染时间。减少的33ms使帧频改善了43%跃升至22fps。
这个示范样本的优点在于Crytek能够改善GPU的使用。 同时添加了额外的图形功能,例如体积雾化和后处理抗锯齿。
总结
在Android GPU Inspector最新开发人员版本中可以打开本文中提供的trace。 它们是以zstd压缩形式提供的,因此请确保在打开.perfetto
trace文件进行可视化之前将其解压。 Android GPU Inspector仍处于开发阶段,因此trace和用户界面不代表最终体验。
Arm, Google, 和 Samsung正紧密合作来支持Samsung Galaxy S10, Samsung Note 10 和Samsung S20, 还有更多设备正 在筹备中。此外,Arm推出了Arm Mali-G78和Arm
Mali-G68 GPU为在移动设备上提供更高质量的游戏体验带来了进一步的性能和效率提升。
此外,Arm推出的Arm Mali-G78和Arm Mali-G68 GPU进一步提升了性能和效率给移动设备提供了更高质量的游戏体验。
最后,Crytek还将继续使用Android GPU Inspector来优化游戏内容,因此期望在不久的将来Crytek能提供更多技术细节。
作者:Matty Clarkson
翻译:Khorina
原文链接:https://community.arm.com/developer/tools-software/graphics/b/blog/posts/mali-gpu-drivers-and-android-gpu-inspector