2016年11月29日

打造含有 Mali Graphics Debugger 支持的虚幻引擎应用程序

作者 Thomas Poulet ARM Mali Graphics

ARM 的 Mali Graphics Debugger (MGD) 允许开发者追踪应用程序中的 Vulkan、OpenGL ES、EGL 和 OpenCL API 的调用,以逐帧了解这些调用的效果,从而帮助识别代码中可能存在的瓶颈。此博客介绍了开发者如何向虚幻引擎应用程序添加对非 root 设备上的 MGD 的支持。

blogAssets%2F2016%2FNovember+2016%2FNOV29_ARMMaliGraphicsDebugger%2F770_Epic_Citadel_with_MGD-770x458-3e605439d65d30668f907945b9bf8cebf1fb64c9

我们在此采用的方案十分简单:

  • 向构建系统添加拦截器库
  • 编辑用于加载拦截器库的活动
  • 在目标设备上安装 MGD Daemon 应用程序

 

在第一步中,我们将需要从 GitHub 上的各种来源下载一个版本的虚幻引擎应用程序。有关此步骤的更多信息,请参阅 Epic 指南

获得可用的虚幻引擎副本后,下一步主要是让 MGD 能够运行起来。首先,您需要在 MGD 安装目录中找到 android-non-root 文件夹及虚幻引擎的安装文件夹(将存储库克隆到的位置)。将 android-non-root 文件夹复制到 Engine\Build\Android\Java\ 目录下。

接下来,我们需要修改 Android 的 makefile 文件以确保拦截器能够正常打包到引擎构建中。为此,需要编辑 Engine/Build/Android/Java/jni/ 目录下的 Android.mk 文件,在其末尾添加这样一行文本:include $(LOCAL_PATH)/../android-non-root/MGD.mk。修改后的文件如下如下所示:

 


blogAssets%2F2016%2FNovember+2016%2FNOV29_ARMMaliGraphicsDebugger%2FARM_Mali_Text_1-770x150-a2c6cc3438321dfcd31c52c69ec7273da9bb546b

现在我们将指定加载 MGD 库所需的主要游戏活动,找到 Engine\Build\Android\Java\src\com\epicgames\ue4\ 目录下的 GameActivity.java,然后编辑 onCreate 函数。修改后的文件如下所示:

blogAssets%2F2016%2FNovember+2016%2FNOV29_ARMMaliGraphicsDebugger%2FARM_Mali_Text_2-770x248-ca951201784e122b7b7420b4acde4247a305eef6

这样一来,引擎方面的准备就全做好了。接下来我们要准备设备。保持 android-non-root 文件夹打开,同时使用下面的命令将 MGD Daemon 安装到目标手机上:

blogAssets%2F2016%2FNovember+2016%2FNOV29_ARMMaliGraphicsDebugger%2FARM_Mali_Text_3-770x23-1e353d47e3c9672b132dea3ac9e6a2e11c4e3b0c

现在,在运行应用之前,需要在主机 PC 上运行以下命令 (请先运行 adb devices 以确保该设备可见):

blogAssets%2F2016%2FNovember+2016%2FNOV29_ARMMaliGraphicsDebugger%2FARM_Mali_Text_4-770x22-cce33de0cd6aee4c96edacbde4d48d5e42f9e2db

在目标手机上运行 MGD Daemon 应用程序,让 Daemon 自动激活:

blogAssets%2F2016%2FNovember+2016%2FNOV29_ARMMaliGraphicsDebugger%2FARM_Mali_Text_5-770x248-c7923709ea768477e70cc401e0cd36278b4d2d4b

此时,您便可以将它连接到主机 PC 上的 MGD,启动您的应用程序,然后开始对其进行调试。有关 MGD 用法的更多信息,请参阅 MGD 手册。

执行上述步骤后,应能够在任何基于 Mali 的平台上结合使用 MGD 和虚幻引擎应用程序。如需更多信息或有疑问,请联系 ARM Mali graphics Connected Community

blogAssets%2F2016%2FNovember+2016%2FNOV29_ARMMaliGraphicsDebugger%2Fcitadel-frame-analysis3-scaled1-0613777c5147b6b1d93338d7e77e85bdaa8c942d