Android でのGPU負荷のプロファイリング手段として RenderDoc が紹介されることがあります.
ですが実は, RenderDoc の ⏰ ボタン で得られるGPU時間("Duration")の値は,
Android の端末では何ら有用な値にはなりません.
また Unity / Unreal Engine 製のアプリにおけるランタイムでのGPU時間の表示についても,
標準のままでは行えなかったり, 同様に実は無意味であるような値も表示されたりします.
これはモバイル端末のGPUで主流の Tile-Based (Deferred) Renderer なアーキテクチャにおいて,
グラフィクスAPIのGPUタイムスタンプ機能がかなり特殊な挙動をすることが関係しています.
今回は, グラフィクスAPIを使ったGPU時間の計測とリアルタイムでの表示や,
TB(D)R において, 無意味な値を得てしまうのを避け, これを正しく行うために必要な知見を共有します.
Unity / Unreal Engine 製の Android アプリでのGPU時間の計測に関しても,
無意味な値を参考にしてしまうことを避けるために, 重要な知識になります.
講演者プロフィール
キャッシュ ジェームス富増
2016年に元気株式会社に入社, 2017年から内製エンジンの描画周りの開発に関わり始める.
2019年から Vulkan を用いたレンダラの開発やパフォーマンス調査などに従事.
グラフィクスの低レイヤ周りに興味がある.
《講演者からのメッセージ》
ターゲットデバイスでのパフォーマンスの調査/調整には CPU 処理に限らずそれと並列に実行される GPU 処理の時間を調べることが肝要ですが,
ことモバイル端末においては, 手法やその有効性に関する誤解や疑問が多くみられます.
今回はその辺りのモバイル端末特有の事情についての知見を共有させていただきます.