تحديد مشاكل واجهة برمجة التطبيقات (AGI) وحلّها

يوضِّح هذا الموضوع طريقة حلّ المشاكل الشائعة عند استخدام أداة فحص وحدة معالجة الرسومات في Android. (AGI) .

إعادة ضبط إعدادات AGI

تخزِّن أداة AGI إعداداتها في ملف ~/.agic. تؤدي إزالة هذا الملف إلى حذف جميع إعدادات AGI، بما في ذلك قائمة نتائج التحقق من الأجهزة التي تم فتحها مؤخرًا ونتائج التحقق من الأجهزة.

إخفاق AGI على بعض الأجهزة

يُرجى التأكّد من أنّ إعداداتك تستوفي جميع المتطلبات.

يمكن أن تساعدك الخطوات التالية أيضًا:

  • إيقاف أي برنامج قد يتفاعل مع الجهاز عبر ADB، مثل Android استوديو YouTube.

  • فعِّل الخيار Stay awake (ضمن "خيارات المطوّرين" على Android) من أجل وتمنع المشاكل التي قد تظهر عند إطفاء شاشة الجهاز بسبب وضع السكون.

لا يعرض محلّل النظام نشاط وحدة معالجة الرسومات في ألعاب OpenGL ES.

في الوقت الحالي، لا يتم توفير سوى عدّادات وحدة معالجة الرسومات عند تتبُّع OpenGL ES. التطبيق. معلومات نشاط وحدة معالجة الرسومات الخاصة بتطبيقات 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

تتضمن معظم الألعاب عملية واحدة فقط، ويوضح المثال أعلاه ما يمكن توقعه لعبة تتضمن أكثر من عملية واحدة.

تبدأ اللعبة في عملية رئيسية تُسمّى "com.example.mygame"، ثم تبدأ في عملية جديدة باسم com.example.mygame:GameProcess. إذا تم عرض اللعبة في العملية الثانية، يجب تحديد ما يلي: 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 مع طلبات البيانات من واجهة برمجة التطبيقات للرسومات التي يتم إجراؤها من خلال ما قد يؤثّر على عرض اللعبة.

يسجّل 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.