本主題說明如何修正使用 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 問題。