このトピックでは、Android GPU Inspector の使用時に発生する一般的な問題を解決する方法について説明します。 (AGI)をご覧ください。
AGI 設定のリセット
AGI は、~/.agic
ファイルに設定を保存します。
このファイルを削除すると、
最近開いたトレースとデバイス検証の結果が表示されます。
一部のデバイスで AGI が失敗する
設定内容が 要件。
以下も参考になります。
ADB 経由でデバイスと通信する可能性のあるプログラム(Android など)を停止します。 できます。
Stay awake
オプション([Android の開発者向けオプション] の下にある)を有効にして、以下の操作を行います。 おやすみモードが原因でデバイスの画面がオフになったときに発生する問題を防止できます。
システム プロファイラが OpenGL ES ゲームの GPU アクティビティを報告しない
現在、OpenGL ES をトレースする場合は GPU カウンタのみがサポートされます 説明します。OpenGL ES アプリケーションの GPU アクティビティ情報がアクティブになっています 必要があります。
一部の Vulkan ゲームでフレーム プロファイラが失敗する
最初に確認すべき点は、ゲームが Vulkan を正しく使用していることです。 こちらの Vulkan 検証レイヤ ゲームでエラーや警告が発生しないことを確認します。
Vulkan 検証エラーが発生した場合、AGI フレーム プロファイラは想定されない ありません。
Frame Profiler トレースの作成時のゲームエラー
AGI なしでゲームが正常に実行されるものの、フレームの作成時に実行に失敗した場合 場合、ゲームが起動時に別のプロセスをフォークしている可能性があります。 あります。その場合は、トレースするプロセスの名前を [Process name](プロセス名)がフィールドです。
この問題を特定するには、トレースの作成時に logcat 出力を確認します。 別のプロセスが開始されているかどうかを確認します。
# Clear the logcat output
adb logcat -c
## Use AGI to attempt to create a frame profile trace
Look at the logcat output to identify the processes that are running AGI.
adb logcat | grep "this process name"
I GAPID : gapii [gapii/cc/spy.cpp:109] this process name: com.example.mygame
I GAPID : gapii [gapii/cc/spy.cpp:109] this process name: com.example.mygame:GameProcess
ほとんどのゲームには 1 つのプロセスしかありません。上記の例は、 複数のプロセスを持つ ゲームの場合です
ゲームは com.example.mygame
という名前のメインプロセスで開始され、プロセスをフォークします。
com.example.mygame:GameProcess
という名前の新しいプロセスです。
実際のゲームのレンダリングが 2 番目のプロセスで行われる場合は、
これがトレースするプロセスであることを AGI で確認できます。
これを行うには、Process name
フィールドにプロセスの名前を入力します。
[Trace オプション] ダイアログ
AGI 使用後のゲームエラー
トレースが正しく終了しない場合、AGI が一部の Android 設定を 後続のアプリの実行を中断する可能性がある状態です。次の設定があります。
Vulkan レイヤに関連する設定:
enable_gpu_debug_layers
gpu_debug_app
gpu_debug_layers
gpu_debug_layer_app
ANGLE 関連の設定:
angle_debug_package
angle_gl_driver_selection_values
angle_gl_driver_selection_pkgs
AGI の使用後にアプリで問題が発生した場合は、これらの問題を解消してみてください 設定するには、次の adb コマンドを使用します。
# Vulkan layers
adb shell settings delete global enable_gpu_debug_layers
adb shell settings delete global gpu_debug_app
adb shell settings delete global gpu_debug_layers
adb shell settings delete global gpu_debug_layer_app
# ANGLE
adb shell settings delete global angle_debug_package
adb shell settings delete global angle_gl_driver_selection_values
adb shell settings delete global angle_gl_driver_selection_pkgs
フレーム プロファイル トレースの作成時に AGI 経由でゲームを起動すると、異なる表示になる
フレーム プロファイル トレースを作成するために、AGI は、 ゲームのレンダリングに影響する可能性があります。
AGI は Vulkan の呼び出しをキャプチャします。OpenGL ES ゲームの場合、AGI は ANGLE: OpenGL ES を変換します。 Vulkan に移行しました。 ゲームの外観が異なる場合(たとえば、一部の色が期待した色と異なる場合)は、 AGI 経由で起動する場合、おそらく AGI または ANGLE のバグです。 問題の根本原因を 以下を試します。
Vulkan ゲーム: サポートされているすべての Vulkan 拡張機能を使用したトレース
[Include Unknown Extensions] トレース オプションは、AGI を含めるかどうかを制御します。 サポートされていない Vulkan 拡張機能が含まれている。(参照 サポートされている拡張機能のリストをご覧ください)。
AGI でサポートされていない拡張機能をアプリで使用している場合、 小さなエラーやクラッシュなど、望ましい動作を再現できない 表示されます。
このオプションを有効にしてから、別の Frame Profiler トレースを起動してみてください。もしゲームが オプションを有効にして想定どおりに表示される場合、ゲームは Vulkan に依存する可能性があります。 AGI でサポートされていない拡張機能です。
OpenGL ES ゲーム: ANGLE でのみ実行する
ANGLE を使用しても AGI を使用せずに OpenGL ES ゲームを実行し、間違っているかどうかを確認できます。 レンダリングが ANGLE の問題に起因していることがあります。
OpenGL ES のフレーム プロファイル トレースをすでに作成している場合
AGI がデバイスに ANGLE をインストールしている場合、使用される ANGLE パッケージ
AGI の名前は org.chromium.angle.agi
です。
ANGLE でゲームを強制的に実行するには、次のコマンドを使用します。
# Make sure that the AGI capture layer will be ignored
adb shell settings delete global enable_gpu_debug_layers
# Force the package com.example.mygame to use ANGLE
adb shell settings put global angle_debug_package org.chromium.angle.agi
adb shell settings put global angle_gl_driver_selection_values angle
adb shell settings put global angle_gl_driver_selection_pkgs com.example.mygame
この設定でゲームの表示が異なる場合は、 AGI ではなく ANGLE です。これらの設定でゲームが正しく見えても、 異なる場合は、AGI のバグである可能性があります。
AGI のバグを報告するには、 GitHub の問題。