หัวข้อนี้จะอธิบายวิธีแก้ไขปัญหาที่พบได้ทั่วไปเมื่อใช้เครื่องมือตรวจสอบ GPU ของ Android (AGI)
กำลังรีเซ็ตการตั้งค่า AGI
AGI จะจัดเก็บการตั้งค่าในไฟล์ ~/.agic
การนำไฟล์นี้ออกจะลบการตั้งค่า AGI ทั้งหมด ซึ่งรวมถึงรายการ
การติดตามที่เปิดล่าสุดและผลการตรวจสอบอุปกรณ์
AGI ไม่ทำงานในอุปกรณ์บางเครื่อง
โปรดตรวจสอบว่าการตั้งค่าของคุณเป็นไปตาม ข้อกำหนด
วิธีการต่อไปนี้ยังช่วยได้
หยุดโปรแกรมที่อาจโต้ตอบกับอุปกรณ์ผ่าน ADB เช่น Android Studio
เปิดใช้ตัวเลือก
Stay awake
(ในส่วนตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์บน Android) เพื่อ ป้องกันปัญหาที่อาจเกิดขึ้นเมื่อหน้าจอของอุปกรณ์ดับลงเนื่องจากสลีปโหมด
เครื่องมือสร้างโปรไฟล์ระบบไม่รายงานกิจกรรม GPU สำหรับเกม OpenGL ES
ปัจจุบัน ระบบจะรองรับเฉพาะตัวนับ GPU เท่านั้นเมื่อคุณติดตาม OpenGL ES แอปพลิเคชัน ข้อมูลกิจกรรม GPU สำหรับแอปพลิเคชัน 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
เกมส่วนใหญ่มีเพียงกระบวนการเดียว ตัวอย่างด้านบนแสดงถึงสิ่งที่จะเกิดขึ้นสำหรับ เกมที่มีมากกว่า 1 กระบวนการ
เกมจะเริ่มต้นในกระบวนการหลักที่ชื่อ com.example.mygame
จากนั้นแยก
กระบวนการใหม่ชื่อ com.example.mygame:GameProcess
หากการแสดงภาพเกมจริงเกิดขึ้นในกระบวนการที่ 2 คุณต้องบอก
AGIว่านี่คือกระบวนการที่คุณต้องการติดตาม
โดยป้อนชื่อกระบวนการในช่อง Process name
ของ
กล่องโต้ตอบตัวเลือกการติดตาม
เกมล้มเหลวหลังจากใช้ AGI
หากการติดตามไม่สิ้นสุดอย่างเหมาะสม AGI อาจปล่อยการตั้งค่า Android บางอย่างไว้ สถานะที่อาจรบกวนการเรียกใช้แอปครั้งต่อๆ ไป การตั้งค่าเหล่านี้ ได้แก่
การตั้งค่าที่เกี่ยวข้องกับเลเยอร์ Vulkan
enable_gpu_debug_layers
gpu_debug_app
gpu_debug_layers
gpu_debug_layer_app
การตั้งค่าเกี่ยวกับ ANGLE
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