Résoudre les problèmes d'AGI

Cet article explique comment résoudre les problèmes courants lors de l'utilisation d'Android GPU Inspector (AGI) .

Réinitialisation des paramètres AGI

AGI stocke ses paramètres dans le fichier ~/.agic. La suppression de ce fichier entraîne la suppression de tous les paramètres AGI, y compris la liste les traces récemment ouvertes et les résultats de validation des appareils.

Échec d'AGI sur certains appareils

Veuillez vous assurer que votre configuration respecte toutes les exigences.

Les éléments suivants peuvent également vous aider:

  • Arrêter tout programme susceptible d'interagir avec l'appareil via ADB, tel qu'Android dans Google Marketing Platform Studio.

  • Activez l'option Stay awake (sous "Options pour les développeurs sur Android") pour éviter les problèmes qui surviennent lorsque l'écran de l'appareil s'éteint en raison du mode Sommeil.

Le profileur système ne signale pas l'activité du GPU pour les jeux OpenGL ES

Actuellement, seuls les compteurs GPU sont pris en charge lorsque vous tracez une carte OpenGL ES application. Les informations sur l'activité du GPU pour les applications OpenGL ES sont activées développement d'applications.

Échec du profileur de frames sur certains jeux Vulkan

La première chose à vérifier est que votre jeu utilise Vulkan correctement. Utilisez le Couche de validation Vulkan et assurez-vous que votre jeu ne génère pas d'erreurs ni d'avertissements.

En cas d'erreur de validation Vulkan, le Profileur de trame AGI n'est pas attendu. au travail.

Échec du jeu lors de la création d'une trace de profileur de frames

Si le jeu s'exécute correctement sans AGI, mais ne parvient pas à s'exécuter lors de la création d'un frame trace du profil, le jeu peut dupliquer un processus différent lors de son démarrage séquence. Dans ce cas, vous devez spécifier le nom du processus à tracer dans "Nom du processus" dans les options de trace.

Pour identifier ce problème, vous pouvez consulter la sortie logcat pendant que vous créez une trace et vérifiez si un autre processus démarre:

# 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 plupart des jeux ne comportent qu'un seul processus. L'exemple ci-dessus montre à quoi s'attendre qui comporte plusieurs processus.

Le jeu démarre dans un processus principal nommé com.example.mygame, puis duplique nouveau processus nommé com.example.mygame:GameProcess. Si le rendu réel du jeu se produit lors du deuxième processus, vous devez indiquer AGI qu'il s'agit du processus que vous souhaitez tracer. Pour ce faire, saisissez le nom du processus dans le champ Process name de la boîte de dialogue de l'option de trace.

Échec du jeu après utilisation d'AGI

Si une trace ne se termine pas correctement, AGI peut laisser certains paramètres Android dans un état susceptible d'interrompre les exécutions ultérieures de l'application. Ces paramètres sont les suivants:

  • Paramètres liés aux couches Vulkan:

    • enable_gpu_debug_layers

    • gpu_debug_app

    • gpu_debug_layers

    • gpu_debug_layer_app

  • Paramètres liés à ANGLE:

    • angle_debug_package

    • angle_gl_driver_selection_values

    • angle_gl_driver_selection_pkgs

Si votre application rencontre des problèmes après avoir utilisé AGI, vous pouvez essayer d'effacer ces avec les commandes adb suivantes:

# 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

Votre jeu se présente différemment lorsque vous le lancez via AGI tout en créant une trace de profil de frame

Pour créer une trace de profil de frame, AGI intercepte les appels d'API graphiques effectués par ce qui peut affecter son rendu.

AGI capture les appels Vulkan. Pour les jeux OpenGL ES, AGI s'appuie sur ANGLE pour traduire OpenGL ES à Vulkan. Si l'apparence de votre jeu est différente (par exemple, certaines couleurs ne sont pas celles que vous attendiez) lorsque vous le lancez via AGI, il s'agit probablement d'un bug dans AGI ou ANGLE. Vous pouvez nous aider à mieux comprendre l'origine du problème en essayez ce qui suit.

Jeux Vulkan: trace avec toutes les extensions Vulkan compatibles

L'option de traçage Include Unknown Extensions (Inclure les extensions inconnues) détermine si AGI doit inclure des extensions Vulkan qu'il n'est pas compatible. (Parcourir la liste des extensions compatibles.

Si votre application utilise une extension non compatible avec AGI, vous pouvez rencontrer un comportement indésirable, y compris des erreurs ou des plantages subtils, lors de la relecture de la traceur.

Essayez d'activer cette option, puis lancez une autre trace du profileur de frames. Si le jeu s'affiche comme prévu avec l'option activée, le jeu peut s'appuyer sur un Vulkan qui n'est pas compatible avec AGI.

Jeux OpenGL ES: exécutés avec ANGLE uniquement

Vous pouvez exécuter votre jeu OpenGL ES avec ANGLE, mais sans AGI pour voir si les erreurs le rendu provient d'un problème dans ANGLE.

Si vous avez déjà essayé de créer une trace de profil de frame de votre OpenGL ES , cela signifie qu'AGI a déjà installé ANGLE sur votre appareil. Le paquet ANGLE utilisé par L'AGI s'appelle org.chromium.angle.agi.

Pour forcer l'exécution de votre jeu sur ANGLE, utilisez les commandes suivantes:

# 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 le jeu semble différent avec ces paramètres, il s'agit probablement d'un bug dans ANGLE, et non AGI. Si le jeu semble correct avec ces paramètres, mais différent lors de la création d'une trace AGI, il s'agit probablement d'un bug dans AGI.

Vous pouvez signaler des bugs AGI en créant un Problème GitHub.