W tym artykule opisujemy, jak rozwiązać typowe problemy z inspektorem GPU na Androidzie (AGI)
Resetuję ustawienia AGI
AGI przechowuje swoje ustawienia w pliku ~/.agic
.
Usunięcie tego pliku spowoduje usunięcie wszystkich ustawień AGI, w tym listy
Ostatnio otwarte logi czasu i wyniki weryfikacji urządzenia.
AGI przestaje działać na niektórych urządzeniach
Sprawdź, czy Twoja konfiguracja spełnia wszystkie wymagania.
Pomocne mogą też być następujące czynności:
Zatrzymaj wszystkie programy, które mogą wchodzić w interakcje z urządzeniem przez ADB (np. Android). Studio.
Włącz opcję
Stay awake
(w sekcji „Opcje programisty na urządzeniu z Androidem”), aby: zapobiega problemom pojawiającym się po wyłączeniu ekranu urządzenia w trybie uśpienia.
Systemowy program profilujący nie zgłasza aktywności GPU w grach OpenGL ES
Obecnie podczas śledzenia OpenGL ES obsługiwane są tylko liczniki GPU aplikacji. Informacje o aktywności GPU dla aplikacji OpenGL ES są aktywne w Google Cloud.
Awaria narzędzia do profilowania ramek w niektórych grach z obsługą interfejsu Vulkan
Najpierw musisz sprawdzić, czy Twoja gra poprawnie korzysta z interfejsu Vulkan. Użyj Warstwa walidacji Vulkan i upewnij się, że gra nie zgłasza żadnych błędów ani ostrzeżeń.
W przypadku błędu weryfikacji interfejsu Vulkan program profilujący ramki AGI nie jest oczekiwany do pracy.
Błąd gry podczas tworzenia logu czasu profilowania ramek
jeśli gra działa bez AGI, ale nie uruchamia się podczas tworzenia klatki; ślad profilu, może to powodować rozwidlenie innego procesu podczas uruchamiania gry kolejne wartości. W takim przypadku musisz podać nazwę procesu śledzenia. „Nazwa procesu”, w opcjach śledzenia.
Aby zidentyfikować ten problem, możesz sprawdzić dane wyjściowe logcat podczas tworzenia logu czasu i sprawdź, czy uruchamia się inny proces:
# 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
W większości gier jest tylko jeden proces. Powyższy przykład pokazuje, czego można się spodziewać która ma więcej niż 1 proces.
Gra rozpoczyna się od głównego procesu o nazwie com.example.mygame
, a następnie tworzy rozwidlenie
nowy proces o nazwie com.example.mygame:GameProcess
.
Jeśli podczas drugiego procesu renderowanie gry ma miejsce, musisz poinformować
AGI, że jest to proces, który chcesz śledzić.
Aby to zrobić, wpisz nazwę procesu w polu Process name
atrybutu
okno z opcjami śledzenia.
Awaria gry po użyciu AGI
Jeśli śledzenie nie zakończy się poprawnie, AGI może pozostawić niektóre ustawienia Androida w stanu, który może zakłócać kolejne uruchomienia aplikacji. Są to:
Ustawienia związane z warstwami interfejsu Vulkan:
enable_gpu_debug_layers
gpu_debug_app
gpu_debug_layers
gpu_debug_layer_app
Ustawienia związane z ANGLE:
angle_debug_package
angle_gl_driver_selection_values
angle_gl_driver_selection_pkgs
Jeśli po użyciu AGI występują problemy z aplikacją, możesz je usunąć za pomocą tych poleceń 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
Twoja gra wygląda inaczej, gdy uruchamiasz ją przez AGI podczas tworzenia śledzenia profilu ramki
Aby utworzyć ślad profilu ramki, AGI przechwytuje wywołania interfejsu API grafiki wysyłane przez gry, co może mieć wpływ na renderowanie gry.
AGI rejestruje wywołania interfejsu Vulkan. W grach OpenGL ES AGI polega na ANGLE do tłumaczenia OpenGL ES na Vulkan. Jeśli gra wygląda inaczej (np. niektóre kolory nie są zgodne z Twoimi oczekiwaniami), gdy: jeśli uruchamiasz ją przez AGI, jest to prawdopodobnie błąd w AGI lub ANGLE. Możesz pomóc nam lepiej poznać główną przyczynę problemu przez wykonując poniższe czynności.
Gry związane z interfejsem Vulkan: śledzenie ze wszystkimi obsługiwanymi rozszerzeniami Vulkan
Opcja śledzenia Uwzględnij nieznane rozszerzenia określa, czy AGI ma zawiera rozszerzenia Vulkan, których nie obsługuje. (Przeglądaj listę obsługiwanych rozszerzeń).
Jeśli Twoja aplikacja korzysta z rozszerzenia, które nie jest obsługiwane przez AGI, możesz napotkać niepożądane zachowanie, w tym drobne błędy lub awarie, podczas ponownego odtwarzania śledzić.
Spróbuj włączyć tę opcję, a następnie uruchom inny śledzenie narzędzia do profilowania ramek. Jeśli mecz wyświetla się zgodnie z oczekiwaniami przy włączonej opcji, gra może korzystać z interfejsu Vulkan które nie jest obsługiwane przez AGI.
Gry OpenGL ES: uruchamianie tylko z użyciem ANGLE
Możesz uruchomić grę OpenGL ES z użyciem ANGLE, ale bez AGI, aby sprawdzić, czy błąd ponieważ chodzi o problem w ANGLE.
Jeśli próbowano już utworzyć śledzenie profilu ramki na platformie OpenGL ES
to AGI zainstalował już na Twoim urządzeniu ANGLE. Pakiet ANGLE używany przez
AGI nazywa się org.chromium.angle.agi
.
Aby wymusić uruchomienie gry w ANGLE, użyj tych poleceń:
# 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
Jeśli przy tych ustawieniach gra wygląda inaczej, prawdopodobnie jest to błąd ANGLE, a nie AGI. Jeśli gra wygląda prawidłowo przy tych ustawieniach, ale wygląda podczas tworzenia logu czasu AGI, prawdopodobnie jest to błąd w AGI.
Możesz zgłaszać błędy AGI, tworząc Problem z GitHubem.