Solución de problemas de AGI

En este tema, se describe cómo solucionar problemas habituales cuando se usa el Inspector de GPU de Android (AGI) .

Cómo restablecer la configuración de AGI

AGI almacena su configuración en el archivo ~/.agic. Si quitas este archivo, se borrará toda la configuración de AGI, incluida la lista de registros abiertos recientemente y los resultados de validación del dispositivo.

AGI falla en algunos dispositivos

Asegúrate de que tu configuración cumpla con todos los requisitos.

Lo siguiente también puede ser útil:

  • Detén cualquier programa que pueda interactuar con el dispositivo a través de ADB, como Android Studio.

  • Habilita la opción Stay awake (en Opciones para desarrolladores en Android) para evitar problemas que surjan cuando se apague la pantalla del dispositivo debido al modo de suspensión.

El Generador de perfiles del sistema no informa la actividad de la GPU para juegos de OpenGL ES

Actualmente, solo se admiten los contadores de GPU cuando haces el seguimiento de una aplicación OpenGL ES. La información de actividad de la GPU para aplicaciones de OpenGL ES está en desarrollo activo.

El generador de perfiles de fotogramas falla en algunos juegos de Vulkan

Lo primero que debes verificar es que tu juego use Vulkan correctamente. Usa la capa de validación de Vulkan y asegúrate de que tu juego no genere errores ni advertencias.

Si se produce algún error de validación de Vulkan, no se espera que funcione el generador de perfiles de fotogramas AGI.

Error del juego cuando se crea un seguimiento del generador de perfiles de fotogramas

Si el juego se ejecuta correctamente sin AGI, pero no se ejecuta cuando se crea un seguimiento de perfil de fotogramas, es posible que bifurque un proceso diferente durante su secuencia de inicio. En ese caso, debes especificar el nombre del proceso al que se hará un seguimiento en el campo "Nombre del proceso" de las opciones de seguimiento.

Para identificar este problema, puedes comprobar el resultado del logcat mientras creas un seguimiento y debes verificar si se inicia un proceso diferente:

# 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 mayoría de los juegos tienen un solo proceso. En el ejemplo anterior, se muestra qué esperar de un juego que tiene más de un proceso.

El juego comienza en un proceso principal llamado com.example.mygame y, luego, bifurca un proceso nuevo llamado com.example.mygame:GameProcess. Si la renderización real del juego ocurre en el segundo proceso, debes indicarle a AGI que este es el proceso del que quieres hacer un seguimiento. Para ello, ingresa el nombre del proceso en el campo Process name del diálogo de opciones de seguimiento.

Falla del juego después de usar AGI

Si un registro no finaliza correctamente, AGI puede dejar algunas opciones de la configuración de Android en un estado que puede interrumpir las ejecuciones posteriores de la app. Esta configuración es la siguiente:

  • Parámetros de configuración relacionados con las capas de Vulkan:

    • enable_gpu_debug_layers

    • gpu_debug_app

    • gpu_debug_layers

    • gpu_debug_layer_app

  • Configuración relacionada con ANGLE:

    • angle_debug_package

    • angle_gl_driver_selection_values

    • angle_gl_driver_selection_pkgs

Si tu app tiene problemas después de usar AGI, puedes intentar borrar esta configuración con los siguientes comandos 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

El juego se ve diferente cuando se inicia mediante AGI mientras se crea un seguimiento de perfil de fotogramas

Para crear un seguimiento de perfil de fotogramas, AGI intercepta las llamadas a la API de gráficos que realiza el juego, lo que puede afectar las renderizaciones del juego.

AGI captura las llamadas de Vulkan. En los juegos con OpenGL ES, AGI se basa en ANGLE para traducir OpenGL ES a Vulkan. Si tu juego se ve diferente (p.ej., algunos colores no son los que esperas) cuando lo inicias a través de AGI, es probable que sea un error de AGI o ANGLE. Para ayudarnos a comprender mejor la causa raíz del problema, prueba las siguientes opciones.

Juegos de Vulkan: Haz un seguimiento con todas las extensiones de Vulkan compatibles

La opción de seguimiento Include Unknown Extensions controla si AGI debe incluir extensiones de Vulkan que no admite. (Consulta la lista de extensiones compatibles).

Si tu app usa una extensión que no es compatible con AGI, es posible que encuentres comportamientos no deseados, como fallas o errores sutiles, al reproducir el seguimiento.

Intenta habilitar esta opción y, a continuación, inicia otro seguimiento del generador de perfiles de fotogramas. Si el juego se muestra como se espera con la opción habilitada, es posible que use una extensión de Vulkan que no sea compatible con AGI.

Juegos de OpenGL ES: Se ejecutan solo con ANGLE

Puedes ejecutar tu juego de OpenGL ES con ANGLE, pero sin AGI para ver si la renderización incorrecta proviene de un problema en ANGLE.

Si ya intentaste crear un seguimiento de perfil de marcos de tu juego OpenGL ES, AGI ya instaló ANGLE en tu dispositivo. El paquete ANGLE que usa AGI se llama org.chromium.angle.agi.

Para forzar la ejecución de tu juego en ANGLE, usa los siguientes comandos:

# 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

Si el juego se ve diferente con esta configuración, es probable que sea un error de ANGLE y no AGI. Si el juego se ve correcto con esta configuración, pero se ve diferente mientras se crea un registro de AGI, es probable que se trate de un error de AGI.

Puedes informar errores de AGI si creas un problema de GitHub.