排解 AGI 問題

本主題說明如何修正使用 Android GPU 檢查器的常見問題 (AGI) 。

重設 AGI 設定

AGI 將其設定儲存在 ~/.agic 檔案中。 移除這個檔案會刪除所有 AGI 設定,包括 近期開啟的追蹤記錄和裝置驗證結果。

AGI 無法在部分裝置上運作

請確定您的設定符合所有 requirements

下列資源也有幫助:

  • 停止任何可能透過 ADB 與裝置互動的程式,例如 Android

  • 啟用 Stay awake 選項 (在 Android 裝置的「開發人員選項」底下) 防止裝置螢幕因睡眠模式而關閉時發生的問題。

系統分析器不會回報 OpenGL ES 遊戲的 GPU 活動

目前在追蹤 OpenGL ES 時,僅支援 GPU 計數器 應用程式。OpenGL ES 應用程式的 GPU 活動資訊為啟用狀態 。

部分 Vulkan 遊戲的影格分析器無法運作

首先,請確認您的遊戲正確使用 Vulkan。 使用 Vulkan 驗證層 ,確認您的遊戲不會引發錯誤或警告。

如果發生任何 Vulkan 驗證錯誤,系統就不會預期 AGI 影格分析器 。

建立影格分析器追蹤記錄時遊戲失敗

如果遊戲在沒有 AGI 的情況下成功執行,但在建立影格時無法執行 設定檔追蹤記錄,遊戲可能會在啟動期間分支其他程序 序列在這種情況下,您需要指定追蹤程序名稱 「程序名稱」欄位。

如要找出這個問題,可以在建立追蹤記錄時查看 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

大多數遊戲都只有一個程序,上述範例說明瞭 提供多個程序

遊戲會在名為 com.example.mygame 的主要程序中啟動,然後為 名為 com.example.mygame:GameProcess 的新程序 如果實際遊戲算繪是在第二個程序中發生,您就必須告訴 AGI,也就是您要追蹤的程序。 只要在以下的 Process name 欄位中輸入流程名稱即可: 追蹤選項對話方塊

使用 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 。 如果遊戲看起來與眾不同 (例如某些顏色與您預期的不同), 您透過 AGI 啟動後,可能是 AGI 或 ANGLE 有錯誤所致。 為協助我們進一步瞭解問題的根本原因,請 請嘗試下列方法

Vulkan 遊戲:所有支援 Vulkan 擴充功能的追蹤記錄

[包含不明擴充功能] 追蹤選項可控制 AGI 是否應該 包含不支援的 Vulkan 擴充功能。(瀏覽 支援的擴充功能清單)。

如果應用程式使用了 AGI 不支援的擴充功能, 重播 追蹤記錄。

請嘗試啟用這個選項,然後啟動另一個影格分析器追蹤記錄。如果遊戲 啟用這個選項時,遊戲就會正常顯示,但遊戲可能需要使用 Vulkan AGI 不支援的擴充檔案。

OpenGL ES 遊戲:僅使用 ANGLE 執行

您可以使用 ANGLE 執行 OpenGL ES 遊戲,但不使用 AGI,看看是否有誤 而不是 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

如果遊戲採用這些設定而看起來不同,表示遊戲本身可能發生錯誤 ANGLE,而非 AGI。如果遊戲符合這些設定,但看起來沒問題 不同的 AGI 追蹤記錄建立期間,可能是 AGI 中的錯誤。

如要回報 AGI 錯誤,您可以建立 GitHub 問題