Memecahkan masalah AGI

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

Mereset setelan AGI

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

AGI gagal di beberapa perangkat

Pastikan penyiapan Anda memenuhi semua persyaratan.

Hal berikut juga dapat membantu:

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

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

Profiler sistem tidak melaporkan aktivitas GPU untuk game OpenGL ES

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

Frame profiler gagal pada beberapa game Vulkan

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

Jika ada error validasi Vulkan, profiler frame AGI tidak akan berfungsi.

Kegagalan game saat membuat rekaman aktivitas frame profiler

Jika game berhasil berjalan tanpa AGI, tetapi gagal dijalankan saat membuat rekaman aktivitas profil frame, game mungkin melakukan proses yang berbeda selama urutan startupnya. Dalam hal ini, Anda perlu menentukan nama proses yang akan dilacak di kolom "Nama proses" pada opsi rekaman aktivitas.

Untuk mengidentifikasi masalah ini, Anda dapat memeriksa output logcat saat membuat rekaman aktivitas dan memverifikasi 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

Sebagian besar game hanya memiliki satu proses, contoh di atas menunjukkan hal yang diharapkan untuk game yang memiliki lebih dari satu proses.

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

Kegagalan game setelah menggunakan AGI

Jika perekaman aktivitas tidak dihentikan dengan benar, AGI dapat membiarkan beberapa setelan Android dalam keadaan yang dapat mengganggu jalannya aplikasi selanjutnya. Setelan ini 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 mengalami masalah setelah menggunakan AGI, Anda dapat mencoba menghapus setelan ini 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 diluncurkan melalui AGI saat membuat rekaman aktivitas profil frame

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

AGI menangkap 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 di AGI atau ANGLE. Anda dapat membantu kami lebih memahami penyebab utama masalah ini dengan mencoba langkah-langkah berikut.

Game Vulkan: lacak dengan semua ekstensi Vulkan yang didukung

Opsi pelacakan Include Unknown Extensions mengontrol apakah AGI harus menyertakan ekstensi Vulkan yang tidak didukungnya. (Jelajahi daftar ekstensi yang didukung.)

Jika aplikasi Anda menggunakan ekstensi yang tidak didukung oleh AGI, Anda mungkin mengalami perilaku yang tidak diinginkan, termasuk error kecil atau error, saat memutar ulang rekaman.

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

Game OpenGL ES: dijalankan hanya dengan ANGLE

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

Jika Anda sudah mencoba membuat rekaman aktivitas profil frame game OpenGL ES, berarti AGI telah menginstal ANGLE di perangkat. Paket ANGLE yang digunakan oleh AGI diberi nama 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 adalah bug di ANGLE, bukan AGI. Jika game sudah benar dengan setelan ini, tetapi tampak berbeda saat membuat rekaman aktivitas AGI, mungkin itu adalah bug di AGI.

Anda dapat melaporkan bug AGI dengan membuat masalah GitHub.