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

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

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

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

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

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

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

सुझाव

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Vulkan API को, SPIR-V बाइनरी इंटरमीडिएट फ़ॉर्मैट में शेडर प्रोग्राम की ज़रूरत होती है. यह तरीका OpenGL ES से अलग है. इसमें, OpenGL Shading Language (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 API का इस्तेमाल करने वाले गेम पर इसका असर दिख सकता है.

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

इन समस्याओं को कम करने के लिए, रनटाइम में इस्तेमाल किए जाने वाले सभी Vulkan फ़ंक्शन के पॉइंटर को डाइनैमिक तरीके से हल करें. इसके लिए, ओपन सोर्स मेटा-लोडर लाइब्रेरी का इस्तेमाल किया जा सकता है. जैसे, volk. AGDKTunnel सैंपल गेम में, इस मकसद के लिए volk को इंटिग्रेट किया गया है. अगर मेटा-लोडर लाइब्रेरी का इस्तेमाल किया जा रहा है, तो अपनी बिल्ड स्क्रिप्ट में 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 पर काम करने वाले डिवाइस पर, Vulkan API का सिर्फ़ 1.1 वर्शन काम कर सकता है.

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

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

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

Vulkan Profiles

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

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

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

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

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

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

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

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

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

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

इनमें से कोई भी फ़ंक्शन, सीपीयू के ऐसे टास्क या जीपीयू के ऐसे ऑपरेशन को सिंक करने की भरोसेमंद गारंटी नहीं देता जो एक-दूसरे से जुड़े नहीं हैं.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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