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.