Risoluzione dei problemi relativi all'AGI

Questo argomento descrive come risolvere i problemi comuni relativi all'utilizzo di Android GPU Inspector (AGI) .

Reimpostazione delle impostazioni AGI

AGI archivia le impostazioni nel file ~/.agic. La rimozione di questo file comporta l'eliminazione di tutte le impostazioni AGI, incluso l'elenco delle tracce aperte di recente e i risultati della convalida del dispositivo.

AGI non funziona su alcuni dispositivi

Assicurati che la tua configurazione soddisfi tutti i requisiti.

Inoltre, può esserti utile:

  • Interrompi qualsiasi programma che possa interagire con il dispositivo tramite ADB, come 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à di sospensione.

Il profiler di sistema non segnala l'attività della GPU per i giochi OpenGL ES

Attualmente, sono supportati solo i contatori GPU quando traccia un'applicazione OpenGL ES. Le informazioni sull'attività della GPU per le applicazioni OpenGL ES sono in fase di sviluppo attivo.

Profiler di frame non funziona su alcuni giochi Vulkan

La prima cosa da verificare è che il tuo gioco utilizzi Vulkan correttamente. Utilizza il livello di convalida Vulkan e assicurati che il gioco non generi errori o avvisi.

In caso di errori di convalida Vulkan, il profiler del frame AGI non dovrebbe funzionare.

Errore di gioco durante la creazione di una traccia profiler frame

Se il gioco viene eseguito correttamente senza AGI, ma non viene eseguito durante la creazione di una traccia del profilo frame, è possibile che il gioco stia eseguendo il fork di un processo diverso durante la sequenza di avvio. In questo caso, devi specificare il nome del processo da tracciare nel campo "Nome processo" delle opzioni di traccia.

Per identificare questo problema, puoi controllare l'output di logcat mentre crei una traccia e verificare se viene avviato 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 prevede un solo processo; l'esempio riportato sopra mostra cosa aspettarsi da un gioco con più processi.

Il gioco inizia in un processo principale denominato com.example.mygame, quindi crea un nuovo processo denominato com.example.mygame:GameProcess. Se il rendering effettivo del gioco avviene nel secondo processo, devi comunicare all'AGI che si tratta del processo che vuoi tracciare. A tale scopo, inserisci il nome del processo nel campo Process name della finestra di dialogo dell'opzione di traccia.

Errore del gioco dopo l'utilizzo di AGI

Se una traccia non viene terminata correttamente, AGI potrebbe lasciare alcune impostazioni di Android in uno stato che potrebbe interrompere le esecuzioni successive dell'app. Le seguenti impostazioni sono:

  • Impostazioni relative 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, dopo aver utilizzato AGI, la tua app presenta problemi, prova a cancellare queste impostazioni 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 frame

Per creare una traccia del profilo frame, AGI intercetta le chiamate all'API grafiche effettuate dal gioco, il che potrebbe influire sui rendering del gioco.

AGI acquisisce le chiamate Vulkan. Per i giochi OpenGL ES, AGI si affida ad ANGLE per tradurre OpenGL ES in Vulkan. Se il tuo gioco ha un aspetto diverso (ad es. alcuni colori non sono quelli che ti aspetti) quando lo avvii tramite AGI, si tratta probabilmente di un bug di AGI o ANGLE. Puoi aiutarci a comprendere meglio la causa principale del problema svolgendo i passaggi che seguono.

Giochi Vulkan: traccia con tutte le estensioni Vulkan supportate

L'opzione di tracciamento Includi estensioni sconosciute consente di stabilire se AGI debba includere le estensioni Vulkan che non supporta. Consulta l'elenco delle estensioni supportate.

Se la tua app utilizza un'estensione non supportata da AGI, durante la riproduzione della traccia potresti riscontrare comportamenti indesiderati, tra cui lievi errori o arresti anomali.

Prova ad attivare questa opzione, quindi avvia un'altra traccia profiler frame. Se il gioco viene visualizzato come previsto con l'opzione attivata, potrebbe dipendere da un'estensione Vulkan non supportata da AGI.

Giochi OpenGL ES: solo con ANGLE

Puoi eseguire il gioco OpenGL ES con ANGLE ma senza AGI per vedere se il rendering errato proviene da un problema in ANGLE.

Se hai già provato a creare una traccia del profilo frame del tuo gioco OpenGL ES, AGI ha già installato ANGLE sul dispositivo. Il pacchetto ANGLE utilizzato da AGI è denominato 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 in ANGLE e non in AGI. Se il gioco ha un aspetto corretto con queste impostazioni, ma è diverso durante la creazione di una traccia AGI, è probabile che si tratti di un bug dell'AGI.

Puoi segnalare bug AGI creando un problema di GitHub.