स्थानीय और मालिकाना इंजन

Android पर Vulkan का इस्तेमाल शुरू करना

Vulkan, Android पर मुख्य लो-लेवल ग्राफ़िक्स एपीआई है. Vulkan, उन गेम के लिए बेहतरीन परफ़ॉर्मेंस देता है जो अपने गेम इंजन और रेंडरर का इस्तेमाल करते हैं.

अपने गेम इंजन में Vulkan को लागू करने के लिए, आपको ये काम करने होंगे:

  • यह पहचान करना कि Vulkan के साथ किन Android डिवाइसों का इस्तेमाल करना है
  • पुराने Android डिवाइसों पर ऐप्लिकेशन उपलब्ध कराने के फ़ायदे और नुकसान समझना
  • अपने Android बिल्ड टारगेट में Vulkan जोड़ना
  • Vulkan के लिए SPIR-V बनाने के लिए, शेडर कंपाइलर चुनें
  • रनटाइम के दौरान, Vulkan एपीआई के उपलब्ध वर्शन का पता लगाना
  • Vulkan प्रोफ़ाइल, फ़्रेम पेसिंग, और प्री-रोटेशन की मदद से, Vulkan रेंडरिंग ऑपरेशन को ऑप्टिमाइज़ करने का तरीका जानें
  • डीबग करने और परफ़ॉर्मेंस का विश्लेषण करने के लिए, ग्राफ़िक्स टूल चुनें
    ध्यान दें: Unity या Unreal गेम इंजन के साथ Android पर Vulkan इस्तेमाल करने के बारे में जानकारी पाने के लिए, यहां जाएं:
  • Unity पर Vulkan
  • Unreal पर Vulkan

Vulkan के लिए, डिवाइस की कम से कम ज़रूरी शर्तें चुनना

Vulkan, Android 7.0 (एपीआई लेवल 24) और इसके बाद के वर्शन पर उपलब्ध है. Android 7.0 या इसके बाद के वर्शन वाले सभी Android डिवाइसों पर Vulkan काम नहीं करता. आपको यह तय करना होगा कि आपका गेम, Vulkan की सुविधा वाले किन Android डिवाइसों पर काम करता है.

सुझाव

Vulkan के साथ काम करने के लिए, कम से कम इन ज़रूरी शर्तों को पूरा करना होगा:

  • डिवाइस, Android 10.0 (एपीआई लेवल 29) या इसके बाद के वर्शन पर चल रहा हो
  • डिवाइस में Vulkan एपीआई का वर्शन 1.1 या इसके बाद का वर्शन काम करता हो
  • डिवाइस में ऐसी हार्डवेयर क्षमताएं और सुविधाएं हों जो 2022 की Android Baseline प्रोफ़ाइल के साथ काम करती हों

पुराने डिवाइसों के लिए सहायता

अगर आपका गेम, अलग-अलग लेवल की ग्राफ़िक क्षमताओं वाले कई डिवाइसों पर चलने के लिए डिज़ाइन किया गया है, तो हो सकता है कि आपको Vulkan के लिए डिवाइस की कम से कम ज़रूरी शर्तें चुनें में सुझाए गए डिवाइसों से पुराने डिवाइसों के साथ काम करने की सुविधा देनी पड़े. पुराने डिवाइसों के लिए Vulkan की सुविधा उपलब्ध कराने से पहले, यह जांच लें कि Vulkan से आपके गेम को फ़ायदा मिलेगा या नहीं. जिन गेम में ड्रॉ करने के लिए कई कॉल होते हैं और जो OpenGL ES का इस्तेमाल करते हैं उनमें ड्राइवर ओवरहेड की समस्या आ सकती है. ऐसा OpenGL ES में ड्रॉ करने के लिए कॉल करने की ज़्यादा लागत की वजह से होता है. ये गेम, ग्राफ़िक्स ड्राइवर में अपने फ़्रेम टाइम का ज़्यादा हिस्सा खर्च करने की वजह से, सीपीयू बाउंड हो सकते हैं. OpenGL ES से Vulkan पर स्विच करने से, गेम में सीपीयू और पावर के इस्तेमाल में भी काफ़ी कमी आ सकती है. यह खास तौर पर तब लागू होता है, जब आपके गेम में ऐसे जटिल सीन हों जो ड्रॉ करने के लिए कॉल को कम करने के लिए, इंस्टेंसिंग का असरदार तरीके से इस्तेमाल न कर सकें. पुराने डिवाइसों को टारगेट करते समय, फ़ॉलबैक के तौर पर OpenGL ES रेंडरिंग की सुविधा शामिल करें. ऐसा इसलिए, क्योंकि आपकी टारगेट डिवाइस सूची में शामिल कुछ डिवाइसों में Vulkan के ऐसे वर्शन हो सकते हैं जो आपके गेम को सही तरीके से न चला पाएं.

ऐसा हो सकता है कि आपको Vulkan की सुविधा वाले पुराने डिवाइसों के लिए सहायता न देनी हो. ऐसा इसलिए, क्योंकि उनमें परफ़ॉर्मेंस और सुविधाओं की कमी होती है या उनमें स्थिरता से जुड़ी समस्याएं होती हैं.

परफ़ॉर्मेंस और सुविधाएं

ऐसा हो सकता है कि Vulkan की सुविधा वाले पुराने Android डिवाइसों में, रेंडरिंग की परफ़ॉर्मेंस या हार्डवेयर से जुड़ी सहायता न मिले. यह सहायता, आपके गेम को चलाने के लिए ज़रूरी सुविधाओं के लिए होती है. ऐसा खास तौर पर तब होता है, जब आपके गेम में हाई-फ़िडेलिटी ग्राफ़िक्स हों और Vulkan ही एकमात्र ऐसा एपीआई हो जिसे Android पर टारगेट किया जा रहा हो. कई पुराने डिवाइसों पर, Vulkan API का 1.0.3 वर्शन ही इस्तेमाल किया जा सकता है. साथ ही, इनमें Vulkan के ऐसे एक्सटेंशन अक्सर मौजूद नहीं होते हैं जिनका इस्तेमाल ज़्यादातर लोग करते हैं. ये एक्सटेंशन, नए हार्डवेयर पर उपलब्ध होते हैं.

ऐप्लिकेशन को क्रैश या फ़्रीज़ होने जैसी समस्याओं से बचाना

ऐसा हो सकता है कि पुराने Android डिवाइसों में, Vulkan के पुराने ड्राइवर इस्तेमाल किए जा रहे हों. ड्राइवर के इन वर्शन में गड़बड़ियां हो सकती हैं. इनसे आपके गेम की परफ़ॉर्मेंस पर असर पड़ सकता है. ड्राइवर की गड़बड़ियों को ठीक करने के लिए, टेस्टिंग और इंजीनियरिंग में काफ़ी समय लग सकता है.

अपने प्रोजेक्ट में Vulkan जोड़ना

अपने प्रोजेक्ट में Vulkan जोड़ने के लिए, आपको ये काम करने होंगे:

  • Vulkan API हेडर शामिल करना
  • शेडर कोड को SPIR-V में कंपाइल करना
  • रनटाइम के दौरान Vulkan API को कॉल करना

Vulkan API हेडर शामिल करना

Vulkan का इस्तेमाल करने वाले कोड को कंपाइल करने के लिए, आपके गेम में Vulkan API की हेडर फ़ाइलें शामिल होनी चाहिए. Vulkan हेडर की कॉपी, Android NDK में या Vulkan SDK टूल की रिलीज़ में पैकेज की गई कॉपी में मिल सकती है. एनडीके के किसी भी वर्शन में, सिर्फ़ वे Vulkan हेडर शामिल होते हैं जो एनडीके के रिलीज़ होने के समय उपलब्ध होते हैं. अगर एनडीके से Vulkan हेडर का इस्तेमाल किया जाता है, तो एनडीके के वर्शन 25 या इसके बाद के वर्शन का इस्तेमाल करें. इसमें Vulkan के वर्शन 1.3 के साथ काम करने वाली हेडर फ़ाइलें शामिल होती हैं. Vulkan SDK टूल में, हेडर का सबसे नया वर्शन होता है.

शेडर कोड को SPIR-V में कंपाइल करना

Vulkan API के लिए, शेडर प्रोग्राम को SPIR-V बाइनरी इंटरमीडिएट फ़ॉर्मैट में उपलब्ध कराना ज़रूरी है. यह तरीका OpenGL ES से अलग है. इसमें OpenGL शेडिंग लैंग्वेज (GLSL) में लिखे गए सोर्स कोड को टेक्स्ट स्ट्रिंग के तौर पर सबमिट किया जा सकता है. शेडर कंपाइलर का इस्तेमाल करके, GLSL या हाई-लेवल शेडर लैंग्वेज (एचएलएसएल) जैसी शेडर लैंग्वेज में लिखे गए कोड को SPIR-V मॉड्यूल में कंपाइल करें, ताकि उसे Vulkan के साथ इस्तेमाल किया जा सके.

shaderc कंपाइलर का इस्तेमाल, GLSL में लिखे गए शेडर प्रोग्राम को SPIR-V में कंपाइल करने के लिए किया जा सकता है. अगर आपका गेम HLSL का इस्तेमाल करता है, तो DirectXShaderCompiler, SPIR-V आउटपुट के साथ काम करता है. आम तौर पर, शेडर प्रोग्राम को ऑफ़लाइन कंपाइल किया जाता है. यह आपके गेम के लिए ऐसेट बिल्ड प्रोसेस का हिस्सा होता है. साथ ही, SPIR-V मॉड्यूल को रनटाइम ऐसेट के तौर पर शामिल किया जाता है.

रनटाइम के दौरान Vulkan API को कॉल करना

Vulkan API को कॉल करने के लिए, आपके गेम को Vulkan API कॉल के लिए फ़ंक्शन पॉइंटर पाने होंगे. ऐसा करने का सबसे आसान तरीका है कि libvulkan.so शेयर की गई लाइब्रेरी से लिंक किया जाए. यह लाइब्रेरी, Android NDK में शामिल होती है. लाइब्रेरी से लिंक करने की दो कमियां हैं: अतिरिक्त फ़ंक्शन डिस्पैच ओवरहेड और Vulkan API के फ़ंक्शन पॉइंटर अपने-आप रिज़ॉल्व होने की सीमाएं.

जब किसी Vulkan API फ़ंक्शन को कॉल किया जाता है, तो कंट्रोल डिस्पैच टेबल से होकर गुज़रता है. इसे Vulkan लोडर नाम के कंस्ट्रक्ट से मैनेज किया जाता है. Android, LunarG लोडर के बजाय अपने Vulkan लोडर का इस्तेमाल करता है. यह लोडर सिस्टम, Vulkan API के लेयर आर्किटेक्चर का हिस्सा है. बिल्ड के समय सिस्टम लाइब्रेरी से लिंक करने पर, किसी एपीआई कॉल के लिए एक अतिरिक्त डिस्पैच लेवल बनता है. हालांकि, ओवरहेड छोटा होता है, लेकिन Vulkan कॉल की ज़्यादा संख्या वाले गेम के लिए, इस पर ध्यान दिया जा सकता है.

सिस्टम लाइब्रेरी आम तौर पर, Vulkan के उन फ़ंक्शन के पॉइंटर को ही रिज़ॉल्व करती है जिन्हें कोर एपीआई का हिस्सा माना जाता है. Vulkan में कई एक्सटेंशन होते हैं. ये Vulkan के अन्य फ़ंक्शन तय करते हैं. इनमें से कई फ़ंक्शन, सिस्टम लाइब्रेरी से अपने-आप ठीक नहीं होते. Vulkan के इन फ़ंक्शन का इस्तेमाल करने से पहले, आपको इनके पॉइंटर मैन्युअल तरीके से रिज़ॉल्व करने होंगे.

इन समस्याओं को कम करने के लिए, रनटाइम के दौरान इस्तेमाल किए जाने वाले सभी Vulkan फ़ंक्शन के पॉइंटर को डाइनैमिक तरीके से रिज़ॉल्व करें. ऐसा करने का एक तरीका यह है कि volk जैसी ओपन सोर्स मेटा-लोडर लाइब्रेरी का इस्तेमाल किया जाए. AGDKTunnel सैंपल गेम, इस काम के लिए volk को इंटिग्रेट करता है. अगर मेटा-लोडर लाइब्रेरी का इस्तेमाल किया जा रहा है, तो अपनी बिल्ड स्क्रिप्ट में libvulkan.so शेयर की गई लाइब्रेरी से लिंक न करें.

Vulkan API के उपलब्ध वर्शन का पता लगाना

Android पर Vulkan एपीआई के ये वर्शन काम करते हैं:

  • 1.0.3
  • 1.1
  • 1.3

किसी डिवाइस पर उपलब्ध Vulkan एपीआई का सबसे नया वर्शन नंबर, 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 एपीआई के किसी वर्शन के काम करने का मतलब यह नहीं है कि वह वर्शन, डिवाइस के Vulkan ड्राइवर पर भी काम करेगा. ऐसा हो सकता है कि Android 13 वाले किसी डिवाइस पर, Vulkan एपीआई का सिर्फ़ 1.1 वर्शन काम करे.

Vulkan को शुरू करते समय, इससे ज़्यादा एपीआई वर्शन का अनुरोध न करें:

  • डिवाइस पर चल रहे Android के वर्शन के लिए, Vulkan एपीआई का ज़्यादा से ज़्यादा वर्शन
  • vkEnumerateInstanceVersion से रिपोर्ट किया गया Vulkan API वर्शन
  • VkPhysicalDeviceProperties स्ट्रक्चर की apiVersion प्रॉपर्टी से रिपोर्ट किया गया Vulkan API वर्शन

यहां डिवाइस पर काम करने वाले Vulkan एपीआई के सबसे नए वर्शन का पता लगाने का उदाहरण दिया गया है:

// 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 प्रोफ़ाइलें, JSON फ़ाइलें होती हैं. इनमें ज़रूरी सुविधाओं, एक्सटेंशन, क्षमताओं, और पैरामीटर की कम से कम सीमाओं का सेट तय किया जाता है. Vulkan डिवाइस को प्रोफ़ाइल के साथ काम करने के लिए, इन सुविधाओं, एक्सटेंशन, क्षमताओं, और पैरामीटर की कम से कम सीमाओं को पूरा करना ज़रूरी है. यह पता लगाने के लिए कि कोई डिवाइस, Vulkan की किसी खास प्रोफ़ाइल के साथ काम करता है या नहीं, ओपन सोर्स Vulkan Profiles API लाइब्रेरी का इस्तेमाल करें. जैसे, 2022 की Android Baseline प्रोफ़ाइल. प्रोफ़ाइल की JSON फ़ाइल को खुद भी पार्स किया जा सकता है. साथ ही, डिवाइस की क्षमताओं के बारे में क्वेरी की जा सकती है. इसके लिए, Vulkan एपीआई का इस्तेमाल करके यह पता लगाया जा सकता है कि प्रोफ़ाइल, डिवाइस के साथ काम करती है या नहीं.

Vulkan प्रोफ़ाइलें

Android, Vulkan प्रोफ़ाइल का इस्तेमाल करता है. इससे यह तय होता है कि Android पर चलने वाले हर डिवाइस के लिए, कौनसी सुविधाएं और एक्सटेंशन उपलब्ध हैं.

Android बेसलाइन प्रोफ़ाइल (एबीपी), Vulkan प्रोफ़ाइल बनाने की पहली कोशिश है. ABP2021 और ABP2022, बैकवर्ड लुकिंग प्रोफ़ाइल हैं. इनका मकसद, उस समय के 85% से ज़्यादा चालू डिवाइसों को कवर करना है. आने वाले समय में, कोई नया एबीपी नहीं बनाया जाएगा.

Vulkan Profiles for Android (VPA), आने वाले समय को ध्यान में रखकर बनाई गई नई प्रोफ़ाइल है. इसका मकसद, सॉफ़्टवेयर डेवलपर की ज़रूरतों को पूरा करना और हार्डवेयर डेवलपर की ओर से उपलब्ध कराई जाने वाली सुविधाओं को लगातार उपलब्ध कराना है. VPA15_minimums, Android 15 के लिए पहली प्रोफ़ाइल है. Android के हर मुख्य वर्शन के लिए, हर साल एक नया वीपीए उपलब्ध होगा.

फ़्रेम पेसिंग लागू करना

गेमप्ले का बेहतरीन अनुभव देने के लिए, सही फ़्रेम पेसिंग ज़रूरी है. Android Game Development Kit में फ़्रेम पेसिंग लाइब्रेरी शामिल है. इससे आपके गेम को सही फ़्रेम पेसिंग हासिल करने में मदद मिलती है. लागू करने के बारे में ज़्यादा जानकारी के लिए, Android Frame Pacing को अपने Vulkan रेंडरर में इंटिग्रेट करना लेख पढ़ें.

इंप्लिसिट सिंक्रनाइज़ेशन और फ़्रेम पेसिंग पर भरोसा न करें

स्वैपचेन को मैनेज करने के लिए, vkAcquireNextImageKHR और vkQueuePresentKHR का इस्तेमाल किया जाता है. सामान्य ऐप्लिकेशन या जीपीयू सिंक्रनाइज़ेशन के लिए, उनके संभावित ब्लॉकिंग व्यवहार पर भरोसा करने से बचें.

इन फ़ंक्शन के ब्लॉक करने का तरीका, इनमें काफ़ी अलग हो सकता है:

  • Android डिवाइस
  • जीपीयू ड्राइवर
  • प्रज़ेंटेशन इंजन के स्टेटस (VkPresentModeKHR)

vkAcquireNextImageKHR का एकमात्र मकसद, उपलब्ध प्रज़ेंटेबल इमेज को हासिल करना है. यह ब्लॉक हो भी सकता है और नहीं भी. इसी तरह, vkQueuePresentKHR किसी इमेज को दिखाने के अनुरोध को सूची में जोड़ता है. साथ ही, यह ब्लॉक कर भी सकता है और नहीं भी.

दोनों में से कोई भी फ़ंक्शन, सीपीयू के अलग-अलग टास्क या जीपीयू के ऑपरेशन को सिंक करने की भरोसेमंद गारंटी नहीं देता.

बेहतर सिंक्रनाइज़ेशन के लिए, हमेशा Vulkan प्रिमिटिव का इस्तेमाल करें. जैसे, जीपीयू-जीपीयू डिपेंडेंसी (जैसे, रेंडर-टू-प्रज़ेंट) के लिए सेमाफ़ोर, जीपीयू-सीपीयू सिंक्रनाइज़ेशन (जैसे, यह जानना कि सीपीयू पर रेंडरिंग कब पूरी हुई) के लिए फ़ेंस, और जीपीयू के बेहतर तरीके से काम करने और मेमोरी डिपेंडेंसी के लिए पाइपलाइन बैरियर या इवेंट. एक्सप्लिसिट सिंक्रनाइज़ेशन का इस्तेमाल करने से, अनुमानित व्यवहार पक्का होता है. साथ ही, Android के अलग-अलग हार्डवेयर नेटवर्क में मौजूद, लागू करने से जुड़ी समयसीमा में होने वाले बदलावों की वजह से होने वाली गड़बड़ियों से बचा जा सकता है.

प्री-रोटेशन लागू करना

Android डिवाइसों पर, कॉन्टेंट को अलग-अलग ओरिएंटेशन में दिखाया जा सकता है. डिवाइस का ओरिएंटेशन, रेंडर सरफ़ेस के ओरिएंटेशन से अलग हो सकता है. Android पर OpenGL ES के उलट, Vulkan इन दोनों के बीच के अंतर को मैनेज नहीं करता. ओरिएंटेशन की प्रोसेस कैसे काम करती है और Vulkan का इस्तेमाल करते समय ओरिएंटेशन में अंतर को मैनेज करने का सबसे सही तरीका क्या है, यह जानने के लिए Vulkan के प्री-रोटेशन की मदद से डिवाइस के रोटेशन को मैनेज करना लेख पढ़ें.

Vulkan रेंडरिंग से जुड़ी समस्या हल करना और प्रोफ़ाइल बनाना

Vulkan रेंडरिंग कोड की मदद से, रेंडरिंग और परफ़ॉर्मेंस से जुड़ी समस्याओं का पता लगाने के लिए कई टूल उपलब्ध हैं.

Vulkan के डीबग करने और प्रोफ़ाइल बनाने वाले टूल के बारे में ज़्यादा जानने के लिए, टूल और ऐडवांस सुविधाएं सेक्शन देखें.

Vulkan की पुष्टि करने वाली लेयर

Vulkan की पुष्टि करने वाली लेयर, रनटाइम लाइब्रेरी होती हैं. इन्हें चालू करके, Vulkan API को किए गए कॉल की जांच की जा सकती है. साथ ही, गलत या सही तरीके से इस्तेमाल न किए जाने पर, चेतावनियां या गड़बड़ियां दी जा सकती हैं. पुष्टि करने वाली ये लेयर, डिफ़ॉल्ट रूप से चालू नहीं होती हैं. ऐसा इसलिए, क्योंकि पुष्टि करने की प्रोसेस से रनटाइम ओवरहेड जुड़ता है और आपके गेम की परफ़ॉर्मेंस पर असर पड़ता है. अपने गेम के साथ पुष्टि करने वाली लेयर इस्तेमाल करने के तरीके के बारे में जानने के लिए, पुष्टि करने वाली लेयर की मदद से डीबग करना लेख पढ़ें.

फ़्रेम कैप्चर करने वाले टूल

गेम फ़्रेम के दौरान किए गए Vulkan API कॉल को रिकॉर्ड करने और फिर से चलाने के लिए, फ़्रेम कैप्चर टूल का इस्तेमाल करें. इन टूल की मदद से ये काम किए जा सकते हैं:

  • ऐक्टिव ग्राफ़िक संसाधनों की जानकारी और विज़ुअलाइज़ेशन देखना
  • अपने गेम से किए गए एपीआई कॉल का क्रम और एपीआई पैरामीटर देखना
  • ड्रॉ करने के लिए कॉल के समय, ग्राफ़िक्स पाइपलाइन की स्थिति को एक्सप्लोर करना
  • फ़्रेम में, ड्रॉ करने के लिए किसी खास कॉल तक रेंडर करने के नतीजे देखना

Android पर चल रहे गेम से फ़्रेम कैप्चर करने के लिए, ओपन सोर्स RenderDoc टूल का इस्तेमाल करें. RenderDoc, Vulkan और OpenGL ES, दोनों के फ़्रेम कैप्चर करने की सुविधा देता है.

Android GPU Inspector (AGI) का इस्तेमाल करके भी Vulkan फ़्रेम कैप्चर किए जा सकते हैं.

परफ़ॉर्मेंस का विश्लेषण करने वाले टूल

परफ़ॉर्मेंस का विश्लेषण करने वाले टूल का इस्तेमाल करके, अपने गेम में रेंडरिंग से जुड़ी उन समस्याओं का पता लगाएं जिनकी वजह से फ़्रेम रेट कम हो जाते हैं. जीपीयू वेंडर, आपके गेम की प्रोफ़ाइल बनाने और उनके जीपीयू आर्किटेक्चर के हिसाब से परफ़ॉर्मेंस डेटा देने के लिए डिज़ाइन किए गए टूल उपलब्ध कराते हैं. अलग-अलग वेंडर के जीपीयू पर रेंडर करने पर, आपके गेम की परफ़ॉर्मेंस की विशेषताएं और रुकावटें काफ़ी अलग हो सकती हैं. इसके अलावा, एक ही वेंडर की अलग-अलग जीपीयू जनरेशन पर भी ऐसा हो सकता है.

परफ़ॉर्मेंस डेटा इकट्ठा करने और उसका विश्लेषण करने के लिए, Android GPU Inspector का भी इस्तेमाल किया जा सकता है. वेंडर टूल के उलट, Android GPU Inspector अलग-अलग वेंडर के कई जीपीयू के साथ काम करता है. हालांकि, Android GPU Inspector, पुराने Android डिवाइसों पर काम नहीं करता. ऐसा भी हो सकता है कि यह सभी नए डिवाइसों के साथ काम न करे.

सीटीएस-डी की मदद से, Vulkan की टेस्टिंग को बेहतर बनाना

Android डिवाइस बनाने वाली कंपनियां, Compatibility Test Suite (सीटीएस) का इस्तेमाल करती हैं. इससे यह पक्का किया जाता है कि उनके डिवाइस, Android के साथ काम करते हैं. डेवलपर-पावर्ड सीटीएस (सीटीएस-डी), Android ऐप्लिकेशन डेवलपर की ओर से सबमिट किए गए टेस्ट होते हैं. इनसे यह पक्का किया जाता है कि आने वाले समय में Android डिवाइस, उनके इस्तेमाल के उदाहरणों को पूरा करें. साथ ही, उनके ऐप्लिकेशन बिना किसी गड़बड़ी के आसानी से चल सकें.

अगर आपको अपने Vulkan ऐप्लिकेशन में कोई नई गड़बड़ी मिलती है, जो Android की मदद से काम करने वाले किसी डिवाइस पर असर डालती है, तो टेस्ट का नया प्रस्ताव सबमिट किया जा सकता है. इसमें अपनी समस्या और उसकी जांच करने के तरीकों के बारे में बताएं. इससे यह पक्का होता है कि डिवाइस के लिए आने वाले अपडेट में समस्या को ठीक कर दिया जाए. साथ ही, यह भी पक्का होता है कि किसी अन्य डिवाइस में वही गड़बड़ी न हो.

टेस्ट प्रपोज़ल सबमिट करने के सिलसिलेवार निर्देशों के लिए, सीटीएस सबमिट करने की प्रोसेस देखें.