Устранение неполадок АГИ

В этом разделе описывается, как устранить распространенные проблемы при использовании Android GPU Inspector (AGI).

Сброс настроек AGI

AGI хранит свои настройки в файле ~/.agic . При удалении этого файла удаляются все настройки AGI, включая список недавно открытых трассировок и результаты проверки устройства.

AGI не работает на некоторых устройствах

Убедитесь, что ваша установка соответствует всем требованиям .

Также может помочь следующее:

  • Остановите любую программу, которая может взаимодействовать с устройством через ADB, например Android Studio.

  • Включите параметр Stay awake (в разделе «Параметры разработчика» на Android), чтобы предотвратить проблемы, возникающие при выключении экрана устройства из-за спящего режима.

Профилировщик системы не сообщает об активности графического процессора для игр OpenGL ES.

В настоящее время при трассировке приложения OpenGL ES поддерживаются только счетчики графического процессора. Информация об активности графического процессора для приложений OpenGL ES находится в стадии активной разработки.

Профилировщик кадров не работает в некоторых играх Vulkan

Первое, что нужно проверить, — правильно ли ваша игра использует Vulkan. Используйте уровень проверки Vulkan и убедитесь, что ваша игра не выдает ошибок или предупреждений.

Если есть какая-либо ошибка проверки Vulkan, то профилировщик кадров AGI не будет работать.

Сбой игры при создании трассировки профилировщика кадров

Если игра успешно запускается без AGI, но не запускается при создании трассировки профиля кадра, возможно, игра запускает другой процесс во время последовательности запуска. В этом случае вам необходимо указать имя процесса для отслеживания в поле «Имя процесса» в параметрах трассировки.

Чтобы выявить эту проблему, вы можете проверить вывод logcat во время создания трассировки и проверить, запускается ли другой процесс:

# 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

В большинстве игр есть только один процесс, приведенный выше пример показывает, чего ожидать от игры, имеющей более одного процесса.

Игра запускается в основном процессе с именем com.example.mygame , а затем разветвляется новый процесс с именем com.example.mygame:GameProcess . Если реальный рендеринг игры происходит во втором процессе, вы должны сообщить AGI, что именно этот процесс вы хотите отслеживать. Это можно сделать, введя имя процесса в поле Process name диалогового окна параметров трассировки.

Сбой игры после использования AGI

Если трассировка не завершается должным образом, AGI может оставить некоторые настройки Android в состоянии, которое может прервать последующие запуски приложения. Эти настройки:

  • Настройки слоев Vulkan:

    • enable_gpu_debug_layers

    • gpu_debug_app

    • gpu_debug_layers

    • gpu_debug_layer_app

  • Настройки, связанные с УГОЛОМ:

    • angle_debug_package

    • angle_gl_driver_selection_values

    • angle_gl_driver_selection_pkgs

Если в вашем приложении возникли проблемы после использования AGI, вы можете попробовать очистить эти настройки с помощью следующих команд 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

Ваша игра выглядит по-другому при запуске через AGI и создании трассировки профиля кадра.

Чтобы создать трассировку профиля кадра, AGI перехватывает вызовы графического API, выполняемые игрой, что может повлиять на рендеринг игры.

AGI перехватывает вызовы Vulkan. В играх OpenGL ES AGI использует ANGLE для трансляции OpenGL ES в Vulkan. Если ваша игра выглядит по-другому (например, некоторые цвета не те, которые вы ожидаете), когда вы запускаете ее через AGI, возможно, это ошибка в AGI или ANGLE. Вы можете помочь нам лучше понять основную причину проблемы, попробовав следующее.

Игры Vulkan: трассировка со всеми поддерживаемыми расширениями Vulkan.

Параметр трассировки «Включить неизвестные расширения» определяет, должен ли AGI включать расширения Vulkan, которые он не поддерживает. (Просмотрите список поддерживаемых расширений .)

Если ваше приложение использует расширение, не поддерживаемое AGI, вы можете столкнуться с нежелательным поведением, включая незначительные ошибки или сбои, при воспроизведении трассировки.

Попробуйте включить эту опцию, а затем запустите другую трассировку профилировщика кадров. Если игра отображается так, как ожидалось, с включенной опцией, игра может использовать расширение Vulkan, которое не поддерживается AGI.

Игры OpenGL ES: запускаются только с ANGLE

Вы можете запустить игру OpenGL ES с ANGLE, но без AGI, чтобы проверить, не является ли неправильный рендеринг результатом проблемы в ANGLE.

Если вы уже пытались создать трассировку профиля кадра вашей игры OpenGL ES, значит, AGI уже установила ANGLE на ваше устройство. Пакет ANGLE, используемый AGI, называется org.chromium.angle.agi .

Чтобы заставить вашу игру работать на ANGLE, используйте следующие команды:

# 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

Если с этими настройками игра выглядит по-другому, то, вероятно, это ошибка ANGLE, а не AGI. Если с этими настройками игра выглядит правильно, но при создании трассировки AGI выглядит по-другому, то, вероятно, это ошибка в AGI.

Вы можете сообщить об ошибках AGI, создав задачу на GitHub .