UnityアプリケーションでMali Graphics Debuggerを使う

はじめまして。普段はiOSを使っているのに開発中はAndroid周りについて見ること多いsuzu-jです。

最近はHuawei製の端末等、国内でも搭載しているSoCがSnapdragonではない端末が増えてきました。 そんな端末でも、読み込まれているテクスチャや、描画順の確認等、グラフィックス周りのデバッグをするために、今回は Mali Graphics Debugger の使い方を紹介します。

対象はCPUがARMでGPUがMaliのAndroidとなります。 x86系統のCPUだとrootedな端末が必要な上、手順が違うため今回の記事では対象外です。

説明は dtab Compact d-02HWindows 上で行いますので、Mac等その他のOSを使っている方は適宜読み替えてください。

なお、大体のアプリに繋げられてしまうSnapdragon系列と違い、こちらは残念ながら自分でビルドするアプリケーションでしか見れません。 むしろセキュリティ的に見えるのがおかしいと思うのですが。

PC側の準備

まずはダウンロード、公式サイトから自分のプラットフォームに応じてダウンロードしてインストールします。

インストール後は Edit->PreferencesPath to ADB にADBのパスを指定しておきましょう。

mgd_adb_path

端末側の準備

端末側にはDebuggerと繋げるためのアプリケーションをインストールする必要があります。

Windowsでインストール先を変えていなければ、 C:\Program Files\Arm\Mali Developer Tools\Mali Graphics Debugger v4.8.0\target\android\MGD.apk があるため adb install でインストールしましょう。

アプリケーション側の準備

アプリケーション側にはPluginを入れる必要があります。

Pluginは C:\Program Files\Arm\Mali Developer Tools\Mali Graphics Debugger v4.8.0\target\android\ 以下に、各CPUに応じたlibMGD.soがあるので、デバッグしたい端末に応じて配置していきましょう。

今回の端末はarm-v7aの端末なので C:\Program Files\Arm\Mali Developer Tools\Mali Graphics Debugger v4.8.0\target\android\arm\unrooted\armeabi-v7a\libMGD.soAssets\Plugins\Android\libs\armeabi-v7a 以下に配置します。

通常であればこれで準備完了となります。

Debuggerとアプリケーションの接続

対象アプリのAPKをインストール後に、PCとAndroidを繋げたまま、Android側の Mali Graphics Debugger を起動しましょう。 Enable MGD Deamon: の項目をONにして下のアプリケーション一覧からDebuggerに繋げたいアプリを起動しましょう。

mgd_android

アプリを起動したらPC側のDebuggerから Debug->Open the Device Manager を選択すると、接続している端末の一覧を開きます。

mgd_test_select_device

接続したい端末名の左にあるアイコンを選択すれば接続完了。晴れて各種描画関連の確認が出来るようになりました!

mgd_test_connected

上手く接続できない場合

Debugger起動前にアプリを開いている場合、うまく接続できないことがあるようなので、アプリのタスクキルをしてから再度開きなおしてみましょう。

Activityをカスタマイズしている等の場合、Activity側にも手を入れる必要があります。UnityPlayernew するより前に System.loadLibrary("MGD"); を呼んであげましょう。 よくわからないけれど使っている外部PluginがActivityを書き換えている、という場合は onCreate をOverrideしたActivityを作ってあげると動くことが多いと思います。

それではよい最適化ライフを!

明日、20日目はやまださんです。よろしくお願いします。

このブログについて

KLabのゲーム開発・運用で培われた技術や挑戦とそのノウハウを発信します。

おすすめ

合わせて読みたい

このブログについて

KLabのゲーム開発・運用で培われた技術や挑戦とそのノウハウを発信します。