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) .

Restablece la configuración de AGI

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

AGI falla en algunos dispositivos

Asegúrate de que tu configuración cumpla con todos 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 a Looker Studio.

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

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

Actualmente, solo se admiten contadores de GPU cuando se realiza un seguimiento de OpenGL ES y mantener la integridad de su aplicación. La información de actividad de la GPU para aplicaciones de OpenGL ES está activa en el desarrollo de software.

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 el Capa de validación de Vulkan y asegúrate de que el juego no genere errores ni advertencias.

Si hay algún error de validación de Vulkan, no se espera el generador de perfiles de fotogramas AGI. al trabajo.

Error del juego al crear un seguimiento del generador de perfiles de fotogramas

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

Para identificar este problema, puedes consultar el resultado de Logcat mientras creas un seguimiento. y verifica si se está iniciando otro proceso:

# 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 que tiene más de un proceso.

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

Falla del juego después de usar AGI

Si un seguimiento no finaliza correctamente, es posible que AGI deje algunos parámetros de configuración de Android en un estado que puede interrumpir las ejecuciones posteriores de la app. Estos parámetros de configuración son los siguientes:

  • Configuración relacionada con las capas de Vulkan:

    • enable_gpu_debug_layers

    • gpu_debug_app

    • gpu_debug_layers

    • gpu_debug_layer_app

  • Parámetros de configuración relacionados 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 borrarlos 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

Tu juego se verá diferente si lo inicias a través de AGI mientras creas un seguimiento de perfil de fotogramas

Para crear un seguimiento del perfil de fotogramas, AGI intercepta las llamadas a la API de gráficos que realiza el el juego, lo que podría afectar la renderización del juego.

AGI captura las llamadas de Vulkan. Para los juegos de 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, probablemente sea un error en AGI o ANGLE. Puedes ayudarnos a comprender mejor la causa raíz del problema si haces lo siguiente: prueba lo siguiente.

Juegos de Vulkan: Realiza seguimientos con todas las extensiones de Vulkan compatibles

La opción de seguimiento Incluir extensiones desconocidas controla si AGI debería incluyen extensiones de Vulkan que no admite. (Explorar una lista de extensiones compatibles).

Si tu app usa una extensión que no es compatible con AGI, es posible que encuentres comportamiento no deseado, incluidos errores sutiles o fallas, al reproducir la seguimiento.

Intenta habilitar esta opción y, luego, inicia otro seguimiento del generador de perfiles de fotogramas. Si el juego se muestra como se espera con la opción habilitada, el juego puede depender de una interfaz que no es compatible con AGI.

Juegos de OpenGL ES: ejecutar solo con ANGLE

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

Si ya intentaste crear un seguimiento de perfil de fotogramas de OpenGL ES después, AGI ya instaló ANGLE en tu dispositivo. El paquete ANGLE utilizado por El AGI se llama org.chromium.angle.agi.

Para forzar la ejecución del 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 se trate de un error en ANGLE y no AGI. Si el juego parece correcto con esta configuración, pero parece es diferente mientras se crea un seguimiento de AGI, es probable que se trate de un error en AGI.

Para informar errores de AGI, crea un Problema de GitHub.