Questo argomento descrive come risolvere i problemi comuni durante l'utilizzo di Android GPU Inspector (AGI) .
Reimpostazione delle impostazioni AGI
AGI archivia le proprie impostazioni nel file ~/.agic
.
La rimozione di questo file elimina tutte le impostazioni AGI, incluso l'elenco di
tracce aperte di recente e risultati di convalida del dispositivo.
AGI non funziona su alcuni dispositivi
Assicurati che la configurazione soddisfi tutte le requisiti.
Anche i seguenti elementi possono essere utili:
Interrompi qualsiasi programma che potrebbe interagire con il dispositivo tramite ADB, ad esempio Android. Studio.
Attiva l'opzione
Stay awake
(in Opzioni sviluppatore su Android) per evitare problemi che si verificano quando lo schermo del dispositivo si spegne a causa della modalità sonno.
Il profiler di sistema non segnala l'attività della GPU per i giochi OpenGL ES
Al momento, quando traccia un file OpenGL ES, sono supportati solo i contatori GPU un'applicazione. Le informazioni sull'attività della GPU per le applicazioni OpenGL ES sono attive sviluppo del prodotto.
Il profiler del frame non funziona su alcuni giochi Vulkan
La prima cosa da verificare è che il tuo gioco utilizzi correttamente Vulkan. Utilizza la Livello di convalida di Vulkan e assicurati che il gioco non generi errori o avvisi.
Se si verifica un errore di convalida Vulkan, il profiler frame AGI non è previsto al lavoro.
Errore del gioco durante la creazione di una traccia profiler frame
Se il gioco funziona senza AGI, ma non funziona durante la creazione di un frame traccia del profilo, durante l'avvio il gioco potrebbe creare il fork di un processo diverso sequenza. In questo caso, devi specificare il nome del processo da tracciare "Nome processo" nelle opzioni di traccia.
Per identificare questo problema, puoi controllare l'output logcat durante la creazione di una traccia e verificare se è in corso un processo diverso:
# 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
La maggior parte dei giochi ha un solo processo, l'esempio precedente mostra cosa aspettarsi che ha più di un processo.
Il gioco inizia in un processo principale chiamato com.example.mygame
, quindi crea un fork
nuovo processo denominato com.example.mygame:GameProcess
.
Se l'effettivo rendering del gioco avviene nel secondo processo, devi indicare
AGI che si tratta del processo che vuoi tracciare.
Per farlo, inserisci il nome della procedura nel campo Process name
di
la finestra di dialogo con le opzioni di traccia.
Errore di gioco dopo l'utilizzo di AGI
Se una traccia non termina correttamente, AGI potrebbe lasciare alcune impostazioni Android in uno stato che potrebbe interrompere le esecuzioni successive dell'app. Le impostazioni sono:
Impostazioni correlate ai livelli Vulkan:
enable_gpu_debug_layers
gpu_debug_app
gpu_debug_layers
gpu_debug_layer_app
Impostazioni correlate ad ANGLE:
angle_debug_package
angle_gl_driver_selection_values
angle_gl_driver_selection_pkgs
Se la tua app riscontra problemi dopo aver utilizzato AGI, puoi provare a cancellare questi con i seguenti comandi 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
Il gioco ha un aspetto diverso quando viene avviato tramite AGI durante la creazione di una traccia del profilo del frame
Per creare una traccia profilo frame, AGI intercetta le chiamate alle API grafiche effettuate il gioco, il che potrebbe influire sul rendering del gioco.
L'AGI acquisisce le chiamate Vulkan. Per i giochi OpenGL ES, AGI fa affidamento ANGLE per tradurre OpenGL ES a Vulkan. Se il tuo gioco ha un aspetto diverso (ad esempio, alcuni colori non sono quelli previsti) quando lo avvii tramite AGI, probabilmente si tratta di un bug in AGI o ANGLE. Puoi aiutarci a comprendere meglio la causa principale del problema procedendo nel seguente modo.
Giochi Vulkan: traccia con tutte le estensioni Vulkan supportate
L'opzione di tracciamento Includi estensioni sconosciute controlla se AGI deve Includere estensioni Vulkan non supportate. (Sfoglia un elenco delle estensioni supportate.
Se la tua app utilizza un'estensione non supportata da AGI, potresti riscontrare comportamenti indesiderati, inclusi piccoli errori o arresti anomali, durante la riproduzione traccia.
Prova ad abilitare questa opzione, quindi avvia un'altra traccia del profiler frame. Se il gioco viene visualizzato come previsto con l'opzione abilitata, il gioco potrebbe basarsi su un Vulkan non supportata da AGI.
Giochi OpenGL ES: esegui solo con ANGLE
Puoi eseguire il gioco OpenGL ES con ANGLE ma senza AGI per vedere se del rendering proviene da un problema in ANGLE.
Se hai già provato a creare una traccia del profilo frame del tuo OpenGL ES
AGI, AGI ha già installato ANGLE sul dispositivo. Il pacchetto ANGLE utilizzato da
L'AGI si chiama org.chromium.angle.agi
.
Per forzare l'esecuzione del gioco su ANGLE, utilizza i seguenti comandi:
# 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
Se il gioco ha un aspetto diverso con queste impostazioni, probabilmente si tratta di un bug ANGLE e non AGI. Se il gioco sembra corretto con queste impostazioni, ma sembra diversa durante la creazione di una traccia AGI, allora si tratta probabilmente di un bug in AGI.
Puoi segnalare bug AGI creando un Problema GitHub.