المحرّكات الأصلية والخاصة

بدء استخدام Vulkan على Android

Vulkan هي واجهة برمجة التطبيقات الأساسية المنخفضة المستوى للرسومات على Android. يوفر Vulkan المستوى الأمثل أداء الألعاب التي تستخدم محركها وعارضها الخاصَّين بها.

لاستخدام Vulkan بنجاح في محرّك لعبتك، عليك:

  • تحديد أجهزة Android التي يجب استخدامها مع Vulkan
  • التعرّف على المفاضلات بين إتاحة استخدام أجهزة Android القديمة
  • إضافة Vulkan إلى استهداف إصدار Android
  • اختَر برنامج التحويل البرمجي للتظليل لإنشاء SPIR-V في Vulkan
  • تحديد إصدار Vulkan API المتاح في وقت التشغيل
  • تعرَّف على كيفية تحسين عمليات عرض Vulkan باستخدام ملفات Vulkan الشخصية سرعة عرض اللقطة والتدوير المسبق
  • حدد أدوات الرسومات لتصحيح الأخطاء وتحليل الأداء
    ملاحظة: للحصول على معلومات حول استخدام Vulkan على Android مع Unity أو Unreal محركات الألعاب، انظر:
  • Vulkan على Unity
  • Vulkan على Unreal

اختيار الحد الأدنى من مواصفات جهاز Vulkan

يتوفّر Vulkan على نظام Android بدءًا من الإصدار 7.0 (المستوى 24 من واجهة برمجة التطبيقات). لا تدعم جميع أجهزة Android التي تعمل بالإصدار 7.0 من نظام التشغيل Android أو الإصدارات الأحدث Vulkan. عليك إجراء ما يلي: تحديد أجهزة Android المتوافقة مع Vulkan والمتوافقة مع لعبتك.

الاقتراحات

استخدِم المواصفات التالية للحدّ الأدنى من متطلبات دعم Vulkan:

  • يعمل الجهاز بالإصدار 10.0 من نظام التشغيل Android (المستوى 29 من واجهة برمجة التطبيقات) أو الإصدارات الأحدث.
  • يتوافق الجهاز مع الإصدار 1.1 من واجهة Vulkan API أو الإصدارات الأحدث.
  • يتضمّن الجهاز إمكانات وميزات متوافقة مع عام 2022. الملف الشخصي على Android Baseline

دعم الأجهزة الأقدم

إذا تم تصميم لعبتك للعمل على مجموعة كبيرة من الأجهزة بمستويات مختلفة من إمكانات الرسومات، فقد تحتاج إلى دعم الأجهزة الأقدم من تلك الأجهزة يُنصح باستخدامها في مقالة اختيار الحد الأدنى من مواصفات أجهزة Vulkan. قبل تقديم الدعم للأجهزة القديمة، عليك تقييم ما إذا كان Vulkan يوفّر والمزايا الجديدة للعبتك. الألعاب التي تتطلب عددًا كبيرًا من طلبات السحب وتستخدم OpenGL ES يمكن أن يحققوا زيادة كبيرة في النفقات العامة للسائق؛ بسبب التكلفة العالية لإجراء مكالمات سحب داخل OpenGL ES. يمكن أن تصبح هذه الألعاب وحدة معالجة مركزية (CPU) مشروطة بإنفاق مبالغ كبيرة. لوقت عرض اللقطة في برنامج تشغيل الرسومات. يمكن للألعاب أيضًا أن تشهد تطورات كبيرة انخفاض في وحدة المعالجة المركزية (CPU) واستخدام الطاقة عن طريق التبديل من OpenGL ES إلى Vulkan. هذا هو لا سيما إذا كانت لعبتك تتضمّن مشاهد معقّدة لا يمكنها استخدامها بفعالية للمساعدة في تقليل طلبات السحب. عند استهداف الأجهزة الأقدم، ننصحك بتضمين OpenGL ES. عرض الدعم كإجراء احتياطي، لأنّ بعض الأجهزة المدرَجة في قائمة الأجهزة المستهدَفة قد عمليات تنفيذ Vulkan لا يمكنها تشغيل لعبتك بشكل موثوق.

قد لا ترغب في دعم الأجهزة القديمة المتوافقة مع Vulkan لأنها تفتقر إلى أدائه وميزاته أو يتضمن مشكلات في ثبات النظام.

الأداء والميزات

قد لا تتميز أجهزة Android القديمة التي تدعم Vulkan بأداء العرض دعم الأجهزة للميزات اللازمة لتشغيل لعبتك. من المحتمل بشكل خاص إذا كانت لعبتك تتضمّن رسومات عالية الدقة وكان Vulkan هو واجهة برمجة التطبيقات الوحيدة الاستهداف على Android. تقتصر العديد من الأجهزة القديمة على الإصدار 1.0.3 من Vulkan API وغالبًا ما تفتقد إلى إضافات Vulkan المستخدمة على نطاق واسع المتاحة على المزيد الأجهزة الحديثة.

الثبات

قد تستخدم أجهزة Android القديمة برامج تشغيل Vulkan قديمة. برامج التشغيل هذه في الإصدارات قد يحتوي على أخطاء يمكن أن تؤثر في ثبات لعبتك. عمل حول أخطاء السائقين يمكن أن تتضمن قدرًا كبيرًا من الاختبار والهندسة الوقت.

إضافة Vulkan إلى مشروعك

لإضافة Vulkan إلى مشروعك، عليك تنفيذ ما يلي:

  • تضمين عناوين Vulkan API
  • تجميع رمز أداة التظليل على SPIR-V
  • طلب واجهة برمجة تطبيقات Vulkan في وقت التشغيل

تضمين عناوين Vulkan API

يجب أن تتضمن لعبتك ملفات عناوين Vulkan API لتجميع الرموز البرمجية التي تستخدمها. Vulkan. يمكنك العثور على نسخة من عناوين Vulkan في Android NDK أو مضمَّنة في إصدارات حزمة تطوير البرامج Vulkan. أي إصدار معيّن من NDK سوى رؤوس Vulkan المتاحة في وقت إصدار NDK. إذا كنت استخدام عناوين Vulkan من NDK، واستخدام الإصدار 25 من NDK أو إصدار أعلى، والذي يتضمن التي تدعم الإصدار 1.3 من Vulkan. تمتلك Vulkan SDK أكبر الإصدار الحالي من العناوين.

تجميع رمز أداة التظليل على SPIR-V

تتوقع واجهة برمجة تطبيقات Vulkan توفير برامج تظليل في برنامج ثنائي SPIR-V تنسيق متوسط. يختلف هذا الاصطلاح عن OpenGL ES، حيث يمكنك إرسال رمز المصدر المكتوب في OpenGL Shading Language (GLSL) كنص السلاسل. استخدام برنامج التحويل البرمجي للتظليل لأخذ رمز مكتوب في أداة التظليل لغة مثل GLSL أو لغة Shader عالية المستوى (HLSL) وتجميعها في وحدات SPIR-V للاستخدام مع Vulkan.

يمكن استخدام المحول البرمجي shaderc لتجميع برامج التظليل. المكتوبة في GLSL إلى SPIR-V. إذا كانت لعبتك تستخدم بروتوكول HLSL، سيتم تطبيق يتوافق DirectXShaderCompiler مع مخرجات SPIR-V. عادةً، برامج تظليل التجميع بلا اتصال بالإنترنت كجزء من عملية إنشاء مواد العرض لعبتك وتضمين وحدات SPIR-V كجزء من مواد عرض بيئة التشغيل.

طلب واجهة برمجة تطبيقات Vulkan في وقت التشغيل

لاستدعاء واجهة برمجة تطبيقات Vulkan، يجب أن تحصل لعبتك على أدوات توجيه وظائف إلى Vulkan. طلبات بيانات من واجهة برمجة التطبيقات وتتمثل أسهل طريقة للقيام بذلك في الربط مكتبة مشتركة واحدة (libvulkan.so) مضمّنة في Android NDK جارٍ الربط على المكتبة من أوجه القصور: توفير وظيفة إضافية لتوفير النفقات العامة والقيود المفروضة على مؤشرات دالة Vulkan API التي يتم تلقائيًا تم حلها.

عند استدعاء دالة Vulkan API، يمر عنصر التحكّم عبر وحدة إرسال الجدول الذي تديره بنية تُعرف باسم "أداة تحميل Vulkan". جهاز Android يستخدم تنفيذ أداة تحميل Vulkan الخاصة به وليس دالة LunarG القائم بالتحميل. يشكّل نظام التحميل هذا جزءًا من بنية الطبقات في واجهة برمجة تطبيقات Vulkan. ينتج عن الربط بمكتبة النظام في وقت الإصدار إرسال إضافي. مستوى لطلب بيانات من واجهة برمجة التطبيقات. في حين أن النفقات العامة صغيرة، يمكن ملاحظتها للألعاب التي تُجري عددًا كبيرًا من طلبات Vulkan

تقوم مكتبة النظام بشكل عام بتحليل المؤشرات إلى دوال Vulkan فقط التي تعتبر جزءًا من واجهة برمجة التطبيقات الأساسية. يمتلك Vulkan عددًا كبيرًا من الإضافات، التي تحديد دوال Vulkan الإضافية، والتي لا يتم حل العديد منها تلقائيًا من مكتبة النظام. يجب حل المؤشرات التي توجّهها إلى Vulkan يدويًا الدوال قبل استخدامها.

للحدّ من هذه المشاكل، عليك حلّ المؤشرات ديناميكيًا لجميع دوال Vulkan التي تنوي استخدامها في وقت التشغيل. تتمثل إحدى طرق تحقيق ذلك في استخدام مكتبة برنامج التحميل الوصفي مفتوحة المصدر مثل volk. تشير رسالة الأشكال البيانية تتضمن AGDKTunnel النموذجية لعبة فولك لهذا الغرض. في حال حذف تستخدم مكتبة برنامج تحميل بيانات التعريف، لا تربط مع libvulkan.so مكتبة مشتركة في نصوص الإصدار.

تحديد إصدار واجهة Vulkan API المتاح

يتوافق Android مع إصدارات واجهة Vulkan API التالية:

  • 1.0.3
  • 1.1
  • 1.3

يتم تحديد أعلى رقم إصدار لواجهة Vulkan API متاح على جهاز معيّن. حسب إصدار Android ودعم برنامج التشغيل Vulkan.

إصدار Android

يعتمد توافق النظام الأساسي لإصدار Vulkan API على حد أدنى من نظام التشغيل Android الإصدار (مستوى واجهة برمجة التطبيقات):

  • الإصدار 1.3: نظام التشغيل Android 13.0 (المستوى 33 لواجهة برمجة التطبيقات) والإصدارات الأحدث
  • من 1.1 إلى Android 10.0 (المستوى 29 من واجهة برمجة التطبيقات) والإصدارات الأحدث
  • الإصدار 1.0.3 — Android 7.0 (المستوى 24 من واجهة برمجة التطبيقات) والإصدارات الأحدث

دعم سائق Vulkan

لا يضمن التوافق مع نظام Android الأساسي لإصدار Vulkan API واجهة برمجة التطبيقات. يدعم برنامج تشغيل Vulkan للجهاز. جهاز يعمل بنظام التشغيل Android 13 قد تتوافق فقط مع الإصدار 1.1 من Vulkan API.

عند إعداد Vulkan، لا تطلب إصدار واجهة برمجة تطبيقات أكبر من:

  • الحد الأقصى لإصدار واجهة برمجة تطبيقات Vulkan لإصدار Android الذي يعمل على جهاز
  • إصدار واجهة برمجة تطبيقات Vulkan الذي تم الإبلاغ عنه من قِبل vkEnumerateInstanceVersion
  • إصدار Vulkan API الذي تم الإبلاغ عنه من خلال الموقع الإلكتروني apiVersion على بنية VkFinancialDeviceProperties

في ما يلي مثال على تحديد أعلى إصدار متوافق لواجهة Vulkan API:

// Minimum Android API levels for Vulkan 1.3/1.1 version support
static constexpr int kMinimum_vk13_api_level = 33;
static constexpr int kMinimum_vk11_api_level = 29;

uint32_t GetHighestSupportedVulkanVersion(VkPhysicalDevice physical_device) {
  uint32_t instance_api_version = 0;
  vkEnumerateInstanceVersion(&instance_api_version);

  VkPhysicalDeviceProperties device_properties;
  vkGetPhysicalDeviceProperties(physical_device, &device_properties);

  // Instance and device versions don't have to match, use the lowest version
  // number for API support if they don't.
  const uint32_t driver_api_version =
      (instance_api_version < device_properties.apiVersion) ?
      instance_api_version : device_properties.apiVersion;

  const int device_api_level = android_get_device_api_level();
  if (device_api_level >= kMinimum_vk13_api_level &&
      driver_api_version >= VK_API_VERSION_1_3) {
    return VK_API_VERSION_1_3;
  } else if (device_api_level >= kMinimum_vk11_api_level &&
             driver_api_version >= VK_API_VERSION_1_1) {
    return VK_API_VERSION_1_1;
  }
  return VK_API_VERSION_1_0;
}

تحديد توافق ملف Vulkan الشخصي

ملفات Vulkan الشخصية هي ملفات جسون تحدد مجموعة من الميزات المطلوبة، الإضافات والإمكانات والحد الأدنى من حدود المعلَمات التي يجب أن يستوفيها جهاز Vulkan أن يكون متوافقًا مع الملف الشخصي. لتحديد ما إذا كان الجهاز متوافقة مع ملف شخصي محدد Vulkan مثل الإصدار Android Baseline لعام 2022 الخاصة بك، أو استخدِم مكتبة Vulkan Personal API المفتوحة المصدر. يمكنك أيضًا تحليل ملف JSON للملف الشخصي بنفسك والاستعلام عن إمكانات الجهاز. استخدام واجهات برمجة تطبيقات Vulkan ذات الصلة لتحديد توافق الملف الشخصي.

ملفات Vulkan الشخصية

يستخدم Android ميزة Vulkan Profiles. التي تحدّد الميزات والإضافات المتاحة لكل من التي تعمل بنظام التشغيل Android.

إنّ الملف الشخصي الأساسي على Android (ABP) هو المحاولة الأولى لإنشاء ملف Vulkan Profile. ABP2021 وABP2022 ملفات شخصية ذات مظهر خلفي تهدف إلى تناولها > 85% من الأجهزة النشطة على ذلك الوقت. لن يكون هناك سياسة ABP جديدة من الآن فصاعدًا.

Vulkan profile for Android (VPA) هو الملف الشخصي الجديد الذي يهدف إلى تعكس احتياجات مطوري البرامج وتجذب ميزات متسقة في أقرب وقت ممكن حيث يمكن لمطوّري الأجهزة تسليمها. VPA15_الحدّ الأدنى هو أول ملف شخصي لنظام Android 15 وسيتم تخصيص VPA جديد كل عام تتناول كل إصدار رئيسي من إصدارات Android.

تنفيذ وتيرة ضبط الإطار

اعتماد وتيرة مناسبة لإطار الفيديو هو جزء أساسي من تقديم أسلوب لعب عالي الجودة المستخدم. تشتمل "مجموعة أدوات تطوير ألعاب Android" على وتيرة الإطارات المكتبة لمساعدة لعبتك في تحقيق السرعة المثالية لعرض اللقطة. لمزيد من المعلومات، تفاصيل التنفيذ، راجع دمج نظام Android Frame Pacing في عارض Vulkan

تنفيذ التبديل المسبق

يمكن أن تظهر أجهزة Android في اتّجاهات متعدّدة. يمكن لاتجاه الجهاز مختلفة عن اتجاه سطح العرض على عكس OpenGL ES على Android، لا يتعامل Vulkan مع الاختلافات بين الاثنين. لفهم كيف آلية عمل عملية الاتجاه والطريقة المثلى للتعامل مع الاتجاه الاختلافات عند استخدام Vulkan، راجِع التعامل مع دوران الجهاز باستخدام Vulkan. ما قبل التغيير.

تحديد المشاكل وحلّها وعرض الملف الشخصي Vulkan

تتوفر أدوات متعددة لمساعدتك في تشخيص مشاكل العرض في الأداء مع رمز عرض Vulkan.

لمزيد من المعلومات حول أدوات تصحيح الأخطاء وإنشاء الملفات الشخصية في Vulkan، اطلع على الأدوات الميزات المتقدّمة .

طبقات التحقق من Vulkan

طبقات التحقق من Vulkan هي مكتبات وقت تشغيل يمكن تفعيلها لفحصها طلبات البيانات إلى Vulkan API وتقديم تحذيرات أو أخطاء عن القيم غير الصحيحة أو الاستخدام غير الأمثل. ولا تكون طبقات التحقق هذه نشطة بشكل افتراضي، حيث إن تضيف عملية التحقق من الصحة النفقات العامة لوقت التشغيل وتؤثر على أداء في اللعبة. للحصول على معلومات حول طريقة استخدام طبقات التحقّق في لعبتك، يمكنك الاطّلاع على تصحيح الأخطاء باستخدام طبقة التحقق من الصحة:

أدوات التقاط الإطارات

استخدِم أدوات التقاط الإطارات لتسجيل وإعادة تشغيل طلبات البيانات من واجهة Vulkan API التي تم إجراؤها أثناء إطار اللعبة. تتيح لك هذه الأدوات ما يلي:

  • عرض معلومات حول الموارد الرسومية النشطة وعمليات التمثيل البياني لها
  • يمكنك الاطّلاع على تسلسل طلبات البيانات من واجهة برمجة التطبيقات التي تجريها لعبتك والاطّلاع على مَعلمات واجهة برمجة التطبيقات.
  • استكشاف حالة مسار الرسومات في وقت إجراء استدعاء الرسم
  • تصور نتائج العرض حتى طلب رسم محدد في الإطار

استخدام أداة RenderDoc المفتوحة المصدر لالتقاط الإطارات من الألعاب التي تعمل على Android. يدعم RenderDoc التقاط الإطارات لكل من Vulkan OpenGL ES.

يمكن أيضًا استخدام أداة فحص وحدة معالجة الرسومات Android (AGI) لالتقاط إطارات Vulkan.

أدوات تحليل الأداء

استخدِم أدوات تحليل الأداء للتحقيق في مشاكل العرض في لعبتك إلى انخفاض معدلات عرض الإطارات. يوفر موردو وحدة معالجة الرسومات الفرديين أدوات مصممة لإعداد لعبتك وتقديم بيانات الأداء الخاصة بوحدة معالجة الرسومات البُنى الهندسية. يمكن لخصائص الأداء والجوانب السلبية للعبتك أن تختلف بشكل كبير عند العرض باستخدام وحدات معالجة الرسومات من مورِّدين مختلفين أو حتى أجيال مختلفة من وحدات معالجة الرسومات من المورّد نفسه.

كما يمكنك استخدام Android GPU Inspector (أداة فحص وحدة معالجة الرسومات في Android) لجمع وتحليل بيانات الأداء. على عكس أدوات الموردين، تتوافق أداة فحص وحدة معالجة الرسومات من Android باستخدام وحدات معالجة رسومات متعددة من مورِّدين مختلفين. ولكن أداة فحص وحدة معالجة الرسومات في Android لا تتوافق مع أجهزة Android القديمة وقد لا تتوافق مع جميع أجهزة الأجهزة.

تحسين اختبار Vulkan باستخدام CTS-D

تستخدم الشركات المصنّعة للأجهزة التي تعمل بنظام التشغيل Android مجموعة اختبار التوافق (CTS) للمساعدة في التأكد من توافق أجهزتهم. مجموعة أدوات اختبار الأداء (CTS-D) التي يديرها المطوّر هي التي يرسلها مطورو تطبيقات Android للتأكد من أن تلبي أجهزة Android حالات الاستخدام ويمكنها تشغيل تطبيقاتها بسلاسة وبدون أخطاء.

إذا تمكّنت من تشغيل خطأ جديد في تطبيق Vulkan يؤثر في أي أي جهاز Android معين، يمكنك إرسال اقتراح اختبار جديد، مع وصف مشكلتك وطرق التحقق منها. يضمن ذلك إصلاح المشكلة في تحديثًا مستقبليًا للجهاز، وتضمن أيضًا عدم حدوث الخطأ نفسه على أي أجهزة أخرى.

يمكنك الاطّلاع على عملية إرسال مجموعة أدوات اختبار التوافق (CTS). للحصول على تعليمات مفصَّلة حول كيفية إرسال على اقتراح الاختبار.