Khorina · 2020年07月17日

使用可更新的Mali GPU驱动程序和Android GPU Inspector加快游戏速度

游戏中的每个优化都很重要。优化可以使帧频更高,模型的质量更高,游戏画面更漂亮以及电池寿命更长,这意味着游戏时长更长和游戏外观更优质。在最快帧频下保证最佳质量至关重要的点是对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利用率在增加。

image.png
                           双缓冲

上图的截屏显示了开启双缓冲的例子。值得注意的是帧频是33.4ms代表30fps。按钮可以轻松的切换双缓冲和三缓冲模式。

image.png
                                                     Android GPU Inspector Trace

上图显示了Android GPU Inspector 的Trace,Trace左侧灰色部分是启用了双缓冲时,右边部分是启用了三重缓冲时。灰色部分清楚地表明GPU在等待缓冲区插入时处于停滞状态。提交工作时和GPU硬件队列之间的间断表明了这一点。 这极大地影响了活动的GPU周期。

一旦启用了三重缓冲,由于GPU不在等待缓冲区插入,工作提交的规律性将大大提高。密度更高的GPU活动周期计数器显示GPU的利用率大大提高。

image.png
                            三缓冲

启用三重缓冲后,绘制帧的时间减少到16.7ms(60fps) 。 这是因为GPU能够立即在第三个缓冲区的下一帧开始工作。

Crytek Neon Noir

Android GPU Inspector所示,尽管Vulkan 样本可以显著提高GPU的使用性能,但游戏的内容通常要复杂得多。游戏开发与技术公司Crytek与硬件无关被称作Neon NoirPC示范样本可为现代硬件提供惊人的图形保真度。CrytekArmGoogle合作,将此示范样本移植到移动设备并使用Arm Mali GPU 这是一个了不起的成就,因为将如此大的图形负载转移到移动GPU上是一个具有挑战性的过程。

image.png
                           使用 Crytek Neon Noir之前的 Android GPU Inspector Trace

上图是一帧所做工作的Trace 。数据分析清楚地显示有机会更多地加载两个GPU硬件队列。 顶点和片段工作之间存在一些依赖关系,解决这些依赖关系可以让更多工作并行运行。

Mali-G76上一帧需要花费78ms12fps)的时间渲染。 12fps很低,但将如此繁重的图形负载转移到移动GPU上是很困难的事情。 此分析数据是对平台之间移动游戏内容的工程过程的深刻理解。

image.png
                            使用 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-G78Arm
Mali-G68 GPU为在移动设备上提供更高质量的游戏体验带来了进一步的性能和效率提升。

此外,Arm推出的Arm Mali-G78Arm 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

推荐阅读
关注数
23520
内容数
973
Arm相关的技术博客,提供最新Arm技术干货,欢迎关注
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息