Solução de problemas no AGI

Este tópico descreve como corrigir problemas comuns ao usar o Android GPU Inspector (AGI) .

Redefinindo as configurações do AGI

O AGI armazena as configurações no arquivo ~/.agic. Se você remover este arquivo, todas as configurações do AGI serão excluídas, incluindo a lista de rastros abertos recentemente e resultados de validação de dispositivo.

O AGI falha em alguns dispositivos

Verifique se sua configuração atende a todos requisitos.

As orientações a seguir também podem ajudar:

  • Interrompa qualquer programa que possa interagir com o dispositivo pelo adb, como o Android. Estúdio.

  • Ative a opção Stay awake (em Opções do desenvolvedor no Android) para evitar problemas que surgem quando a tela do dispositivo é desligada devido ao modo de sono.

O criador de perfil do sistema não informa a atividade da GPU para jogos com OpenGL ES

Atualmente, apenas contadores de GPU têm suporte ao rastrear um OpenGL ES para o aplicativo. As informações de atividade da GPU para aplicativos OpenGL ES estão ativas no desenvolvimento de software.

O criador de perfil de frame falha em alguns jogos do Vulkan

A primeira coisa a verificar é se o jogo usa o Vulkan corretamente. Use o Camada de validação da Vulkan e garantir que o jogo não gere erros ou avisos.

Se houver algum erro de validação do Vulkan, o criador de perfil de frames do AGI não é esperado para funcionar.

Falha no jogo ao criar um rastro do criador de perfil de frame

Se o jogo é executado corretamente sem o AGI, mas não é executado durante a criação de um frame rastreamento de perfil, o jogo pode estar bifurcando um processo diferente durante a inicialização sequência. Nesse caso, é necessário especificar o nome do processo a ser rastreado o "Nome do processo" nas opções de trace.

Para identificar esse problema, você pode verificar a saída do logcat enquanto cria um trace e verifique se outro processo está começando:

# 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

A maioria dos jogos tem apenas um processo. O exemplo acima mostra o que esperar com mais de um processo.

O jogo começa em um processo principal chamado com.example.mygame e depois bifurca uma um novo processo chamado com.example.mygame:GameProcess. Se a renderização real do jogo ocorrer no segundo processo, informe AGI que esse é o processo que você quer rastrear. Para fazer isso, insira o nome do processo no campo Process name do a caixa de diálogo de opções de rastreamento.

Falha no jogo após usar o AGI

Se um rastro não for encerrado corretamente, o AGI poderá deixar algumas configurações do Android um estado que pode interromper as execuções subsequentes do app. Essas configurações são:

  • Configurações relacionadas às camadas do Vulkan:

    • enable_gpu_debug_layers

    • gpu_debug_app

    • gpu_debug_layers

    • gpu_debug_layer_app

  • Configurações relacionadas ao ANGLE:

    • angle_debug_package

    • angle_gl_driver_selection_values

    • angle_gl_driver_selection_pkgs

Se o app tiver algum problema após usar o AGI, tente limpar o com os seguintes 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

Seu jogo tem uma aparência diferente quando é iniciado pelo AGI ao criar um rastro de perfil de frame.

Para criar um rastreamento de perfil de frame, o AGI intercepta as chamadas da API gráfica feitas pelo o que pode afetar a renderização do jogo.

O AGI captura chamadas do Vulkan. Para jogos OpenGL ES, o AGI depende ANGLE para traduzir o OpenGL ES para o Vulkan. Se o jogo tiver uma aparência diferente (por exemplo, algumas cores não são as esperadas) quando iniciar pelo AGI, provavelmente é um bug no AGI ou no ANGLE. Você pode nos ajudar a entender melhor a causa raiz do problema tente o seguinte.

Jogos do Vulkan: rastrear com todas as extensões do Vulkan compatíveis

A opção de rastreamento Incluir extensões desconhecidas controla se o AGI deve incluir extensões do Vulkan incompatíveis. (Navegar uma lista de extensões compatíveis.

Caso seu app use uma extensão não compatível com o AGI, talvez você encontre comportamento indesejado, incluindo erros ou falhas sutis, ao reproduzir rastros.

Tente ativar essa opção e inicie outro rastro do criador de perfil de frame. Se o jogo for exibido conforme esperado com a opção ativada, o jogo poderá depender de um Vulkan não compatível com o AGI.

Jogos OpenGL ES: executar apenas com o ANGLE

Você pode executar seu jogo OpenGL ES com o ANGLE, mas sem o AGI para ver se a resposta renderização vem de um problema no ANGLE.

Se você já tentou criar um rastro de perfil de frame do OpenGL ES o AGI já instalou o ANGLE no seu dispositivo. O pacote ANGLE usado pelo O AGI é chamado de org.chromium.angle.agi.

Para forçar a execução do jogo no ANGLE, use os seguintes 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

Se o jogo estiver diferente com essas configurações, é provável que seja um bug no ANGLE, e não AGI. Se o jogo parece correto com essas configurações, mas parece diferente ao criar um trace do AGI, provavelmente é um bug no AGI.

É possível denunciar bugs do AGI criando um Problema no GitHub.