Memecahkan masalah AGI

Topik ini menjelaskan cara memperbaiki masalah umum saat menggunakan Android GPU Inspector (AGI) .

Mereset setelan AGI

AGI menyimpan setelannya dalam file ~/.agic. Menghapus file ini akan menghapus semua setelan AGI, termasuk daftar rekaman aktivitas yang baru dibuka dan hasil validasi perangkat.

AGI gagal di beberapa perangkat

Pastikan konfigurasi Anda memenuhi semua persyaratan.

Hal berikut juga dapat membantu:

  • Hentikan program apa pun yang dapat berinteraksi dengan perangkat melalui ADB, seperti Android di Studio.

  • Aktifkan opsi Stay awake (di bagian Opsi developer di Android) untuk mencegah masalah yang timbul saat layar perangkat mati karena mode tidur.

Profiler sistem tidak melaporkan aktivitas GPU untuk game OpenGL ES

Saat ini, hanya penghitung GPU yang didukung saat Anda melacak OpenGL ES aplikasi. Informasi aktivitas GPU untuk aplikasi OpenGL ES sedang aktif pengembangan produk.

Profiler frame gagal pada beberapa game Vulkan

Hal pertama yang harus diverifikasi adalah game Anda menggunakan Vulkan dengan benar. Gunakan Lapisan validasi Vulkan dan pastikan game Anda tidak memunculkan error atau peringatan.

Jika ada error validasi Vulkan, profiler frame AGI tidak diharapkan ke tempat kerja.

Kegagalan game saat membuat rekaman aktivitas frame profiler

Jika game berhasil berjalan tanpa AGI, tetapi gagal dijalankan saat membuat frame pelacakan profil, game mungkin akan melakukan proses yang berbeda selama startup-nya . Dalam hal ini, Anda perlu menentukan nama proses yang akan dilacak "Nama proses" di opsi trace.

Untuk mengidentifikasi masalah ini, Anda dapat memeriksa output logcat saat membuat rekaman aktivitas dan pastikan apakah proses yang berbeda dimulai:

# 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

Kebanyakan {i>game<i} hanya memiliki satu proses, contoh di atas menunjukkan apa yang diharapkan {i>game<i} yang memiliki lebih dari satu proses.

Game dimulai dalam proses utama bernama com.example.mygame, lalu fork proses baru bernama com.example.mygame:GameProcess. Jika rendering game sebenarnya terjadi di proses kedua, Anda harus memberi tahu AGI bahwa ini adalah proses yang ingin Anda lacak. Anda dapat melakukannya dengan memasukkan nama proses di {i>field<i} Process name pada dialog opsi rekaman aktivitas.

Kegagalan game setelah menggunakan AGI

Jika rekaman aktivitas tidak dihentikan dengan benar, AGI dapat membiarkan beberapa setelan Android di status yang dapat menginterupsi jalan aplikasi berikutnya. Setelan tersebut adalah:

  • Setelan terkait lapisan Vulkan:

    • enable_gpu_debug_layers

    • gpu_debug_app

    • gpu_debug_layers

    • gpu_debug_layer_app

  • Setelan terkait ANGLE:

    • angle_debug_package

    • angle_gl_driver_selection_values

    • angle_gl_driver_selection_pkgs

Jika aplikasi Anda mengalami masalah setelah menggunakan AGI, Anda dapat mencoba menghapus informasi berikut setelan dengan perintah adb berikut:

# 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

Game Anda terlihat berbeda saat meluncurkannya melalui AGI saat membuat rekaman aktivitas profil frame

Untuk membuat rekaman aktivitas profil frame, AGI mencegat panggilan API grafis yang dilakukan oleh game, yang dapat memengaruhi rendering game.

AGI merekam panggilan Vulkan. Untuk game OpenGL ES, AGI bergantung pada ANGLE untuk menerjemahkan OpenGL ES ke Vulkan. Jika game Anda terlihat berbeda (misalnya, beberapa warna tidak sesuai dengan yang Anda harapkan) saat Anda meluncurkannya melalui AGI, mungkin itu adalah bug dalam AGI atau ANGLE. Anda dapat membantu kami mendapatkan pemahaman yang lebih baik tentang akar masalah dengan mencoba hal berikut.

Game Vulkan: rekaman aktivitas dengan semua ekstensi Vulkan yang didukung

Opsi pelacakan Sertakan Ekstensi Tidak Dikenal mengontrol apakah AGI harus menyertakan ekstensi Vulkan yang tidak didukung. (Jelajahi daftar ekstensi yang didukung.)

Jika aplikasi Anda menggunakan ekstensi yang tidak didukung oleh AGI, Anda mungkin mengalami perilaku yang tidak diinginkan, termasuk kesalahan kecil atau {i>crash<i}, saat memutar ulang rekaman aktivitas.

Coba aktifkan opsi ini, lalu luncurkan rekaman aktivitas profiler frame lainnya. Jika pertandingan ditampilkan seperti yang diharapkan dengan opsi diaktifkan, game dapat mengandalkan komponen yang tidak didukung oleh AGI.

Game OpenGL ES: dijalankan dengan ANGLE saja

Anda dapat menjalankan game OpenGL ES dengan ANGLE, tetapi tanpa AGI untuk melihat apakah kesalahan rendering berasal dari masalah pada ANGLE.

Jika Anda sudah mencoba membuat rekaman aktivitas profil frame OpenGL ES maka AGI sudah menginstal ANGLE di perangkat Anda. Paket ANGLE yang digunakan oleh AGI bernama org.chromium.angle.agi.

Untuk memaksa game agar berjalan di ANGLE, gunakan perintah berikut:

# 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

Jika game terlihat berbeda dengan setelan ini, mungkin itu bug di ANGLE, dan bukan AGI. Jika game terlihat benar dengan setelan ini, tetapi terlihat berbeda saat membuat rekaman aktivitas AGI, kemungkinan itu adalah bug dalam AGI.

Anda dapat melaporkan bug AGI dengan membuat Masalah GitHub.