การแก้ปัญหา AGI

หัวข้อนี้จะอธิบายวิธีแก้ไขปัญหาที่พบได้ทั่วไปเมื่อใช้เครื่องมือตรวจสอบ 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