Android पर Vulkan का इस्तेमाल शुरू करना
Vulkan, Android पर लो-लेवल ग्राफ़िक्स एपीआई है. Vulkan, उन गेम के लिए बेहतरीन परफ़ॉर्मेंस देता है जो अपना गेम इंजन और रेंडरर इस्तेमाल करते हैं.
अपने गेम इंजन में Vulkan को लागू करने के लिए, आपको ये काम करने होंगे:
- यह तय करना होगा कि Vulkan के साथ किन Android डिवाइसों का इस्तेमाल किया जाए
- Android के पुराने डिवाइसों के साथ काम करने की सुविधा देने के नुकसानों को समझना होगा
- Android के टारगेट डिवाइसों की सूची में Vulkan को जोड़ना होगा
- Vulkan के लिए SPIR-V बनाने के लिए, शेडर कंपाइलर चुनना होगा
- रनटाइम के दौरान, Vulkan API के उपलब्ध वर्शन का पता लगाना होगा
- Vulkan प्रोफ़ाइल, फ़्रेम पेसिंग, और प्री-रोटेशन की मदद से, Vulkan रेंडरिंग कार्रवाइयों को ऑप्टिमाइज़ करने का तरीका जानना होगा
- डीबग करने और परफ़ॉर्मेंस का विश्लेषण करने के लिए, ग्राफ़िक्स टूल चुनने होंगे
- ध्यान दें: Unity या Unreal गेम इंजन के साथ Android पर Vulkan का इस्तेमाल करने के बारे में जानकारी पाने के लिए, ये लेख देखें:
- Unity पर Vulkan
- Unreal पर Vulkan
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 प्रोफ़ाइल के साथ काम करने वाली हार्डवेयर क्षमताएं और सुविधाएं हों
पुराने डिवाइसों के साथ काम करने की सुविधा
अगर आपका गेम, अलग-अलग लेवल की ग्राफ़िक्स क्षमताओं वाले कई डिवाइसों पर काम करने के लिए डिज़ाइन किया गया है, तो हो सकता है कि आपको 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 की हेडर फ़ाइलें शामिल होनी चाहिए. Vulkan के हेडर की कॉपी, Android NDK में या Vulkan SDK की रिलीज़ में पैकेज के तौर पर मिल सकती है. NDK के किसी भी वर्शन में, NDK रिलीज़ के समय उपलब्ध Vulkan के हेडर ही शामिल होते हैं. अगर NDK से Vulkan के हेडर का इस्तेमाल किया जाता है, तो NDK के वर्शन 25 या इसके बाद के वर्शन का इस्तेमाल करें. इनमें, Vulkan के वर्शन 1.3 के साथ काम करने वाली हेडर फ़ाइलें शामिल होती हैं. Vulkan SDK में, हेडर का सबसे नया वर्शन होता है.
शेयर कोड को SPIR-V में कंपाइल करना
Vulkan API को, SPIR-V बाइनरी इंटरमीडिएट फ़ॉर्मैट में शेडर प्रोग्राम उपलब्ध कराने की ज़रूरत होती है. यह तरीका, OpenGL ES से अलग है. OpenGL ES में, OpenGL Shading Language (GLSL) में लिखे गए सोर्स कोड को टेक्स्ट स्ट्रिंग के तौर पर सबमिट किया जा सकता है. GLSL या High-level Shader Language (HLSL) जैसी शेडर लैंग्वेज में लिखे गए कोड को, Vulkan के साथ इस्तेमाल करने के लिए, SPIR-V मॉड्यूल में कंपाइल करने के लिए, शेडर कंपाइलर का इस्तेमाल करें.
GLSL में लिखे गए शेडर प्रोग्राम को SPIR-V में कंपाइल करने के लिए, shaderc कंपाइलर का इस्तेमाल किया जा सकता है. अगर आपका गेम HLSL का इस्तेमाल करता है, तो DirectXShaderCompiler, SPIR-V आउटपुट के साथ काम करता है. आम तौर पर, शेडर प्रोग्राम को ऑफ़लाइन कंपाइल किया जाता है. यह आपके गेम के लिए, ऐसेट बनाने की प्रोसेस का हिस्सा होता है. साथ ही, SPIR-V मॉड्यूल को, रनटाइम ऐसेट के तौर पर शामिल किया जाता है.
रनटाइम के दौरान, Vulkan API को कॉल करना
Vulkan API को कॉल करने के लिए, आपके गेम को Vulkan API कॉल के लिए फ़ंक्शन पॉइंटर हासिल करने होंगे. ऐसा करने का सबसे आसान तरीका है कि libvulkan.so शेयर की गई लाइब्रेरी को लिंक किया जाए. यह लाइब्रेरी, Android NDK में शामिल होती है. लाइब्रेरी को लिंक करने के दो नुकसान हैं: फ़ंक्शन डिस्पैच ओवरहेड और Vulkan API के किन फ़ंक्शन पॉइंटर को अपने-आप हल किया जाता है, इस पर पाबंदियां.
Vulkan API के किसी फ़ंक्शन को कॉल करने पर, कंट्रोल, Vulkan लोडर नाम के कंस्ट्रक्ट से मैनेज की जाने वाली डिस्पैच टेबल से होकर गुज़रता है. Android Vulkan लोडर के अपने वर्शन का इस्तेमाल करता है. यह LunarG लोडर का इस्तेमाल नहीं करता. यह लोडर सिस्टम, Vulkan API के लेयर आर्किटेक्चर का हिस्सा है. बिल्ड के समय, सिस्टम लाइब्रेरी से लिंक करने पर, किसी दिए गए एपीआई कॉल के लिए, डिस्पैच का एक और लेवल जुड़ जाता है. हालांकि, ओवरहेड कम होता है, लेकिन Vulkan कॉल की संख्या ज़्यादा करने वाले गेम के लिए, यह ध्यान देने लायक हो सकता है.
आम तौर पर, सिस्टम लाइब्रेरी सिर्फ़ 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 की किसी खास प्रोफ़ाइल के साथ काम करता है या नहीं. जैसे, 2022 Android Baseline प्रोफ़ाइल, ओपन सोर्स Vulkan Profiles API लाइब्रेरीका इस्तेमाल करें. प्रोफ़ाइल के साथ काम करने की सुविधा का पता लगाने के लिए, प्रोफ़ाइल की JSON फ़ाइल को खुद पार्स किया जा सकता है. साथ ही, डिवाइस की क्षमताओं के बारे में क्वेरी करने के लिए, Vulkan के काम के एपीआई का इस्तेमाल किया जा सकता है.
Vulkan प्रोफ़ाइल
Android, Vulkan प्रोफ़ाइल का इस्तेमाल कर रहा है. इससे यह तय होता है कि Android पर चलने वाले हर डिवाइस के लिए, कौनसी सुविधाएं और एक्सटेंशन उपलब्ध हैं.
Android Baseline Profile (ABP), Vulkan प्रोफ़ाइल बनाने की पहली कोशिश है. ABP2021 और ABP2022 पुराने वर्शन के साथ काम करने वाली प्रोफ़ाइल हैं. इनका मकसद, उस समय इस्तेमाल हो रहे 85% से ज़्यादा डिवाइसों को कवर करना है. आगे से कोई नया ABP नहीं होगा.
Vulkan Profiles for Android (VPA), नई प्रोफ़ाइल है. इसका मकसद, सॉफ़्टवेयर डेवलपर की ज़रूरतों को पूरा करना और हार्डवेयर डेवलपर की ओर से सुविधाएं उपलब्ध कराने के बाद, उन्हें तुरंत लागू करना है. VPA15_minimums Android 15 के लिए पहली प्रोफ़ाइल है. Android के हर बड़े वर्शन के लिए, हर साल एक नया VPA होगा.
फ़्रेम पेसिंग लागू करना
बेहतरीन क्वालिटी वाला गेमप्ले अनुभव देने के लिए, फ़्रेम पेसिंग ज़रूरी है. Android Game Development Kit में, Frame Pacing लाइब्रेरी शामिल है. इससे आपके गेम को बेहतरीन फ़्रेम पेसिंग हासिल करने में मदद मिलती है. लागू करने के बारे में ज़्यादा जानकारी के लिए, देखें अपने Vulkan रेंडरर में Android Frame Pacing को इंटिग्रेट करना.
इंप्लिसिट सिंक्रनाइज़ेशन और फ़्रेम पेसिंग पर भरोसा न करें
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, दोनों के फ़्रेम कैप्चर करने की सुविधा के साथ काम करता है.
Vulkan के फ़्रेम कैप्चर करने के लिए, Android GPU Inspector (AGI) का भी इस्तेमाल किया जा सकता है.
परफ़ॉर्मेंस का विश्लेषण करने वाले टूल
अपने गेम में रेंडरिंग से जुड़ी उन समस्याओं की जांच करने के लिए, परफ़ॉर्मेंस का विश्लेषण करने वाले टूल का इस्तेमाल करें जिनकी वजह से फ़्रेम रेट कम होता है. जीपीयू के अलग-अलग वेंडर, आपके गेम की प्रोफ़ाइल बनाने और अपने जीपीयू आर्किटेक्चर के हिसाब से परफ़ॉर्मेंस डेटा उपलब्ध कराने के लिए डिज़ाइन किए गए टूल उपलब्ध कराते हैं. अलग-अलग वेंडर के जीपीयू या एक ही वेंडर के अलग-अलग जनरेशन के जीपीयू पर रेंडरिंग करने पर, आपके गेम की परफ़ॉर्मेंस की खासियतें और बॉटलनेक में काफ़ी अंतर हो सकता है.
परफ़ॉर्मेंस डेटा इकट्ठा करने और उसका विश्लेषण करने के लिए, Android GPU Inspector का भी इस्तेमाल किया जा सकता है. वेंडर के टूल के उलट, Android GPU Inspector, अलग-अलग वेंडर के कई जीपीयू के साथ काम करता है. हालांकि, Android GPU Inspector, Android के पुराने डिवाइसों के साथ काम नहीं करता. साथ ही, ऐसा हो सकता है कि यह सभी नए डिवाइसों के साथ काम न करे.
CTS-D की मदद से, Vulkan की बेहतर टेस्टिंग करना
Android पर चलने वाले डिवाइस बनाने वाली कंपनियां, Compatibility Test Suite (CTS) का इस्तेमाल करती हैं. इससे यह पक्का करने में मदद मिलती है कि उनके डिवाइस, Android के साथ काम करते हैं. डेवलपर-पावर्ड सीटीएस (CTS-D) Android ऐप्लिकेशन डेवलपर की ओर से सबमिट किए गए टेस्ट होते हैं. इनसे यह पक्का किया जाता है कि Android के आने वाले डिवाइस, उनके इस्तेमाल के मामलों के मुताबिक हों. साथ ही, उनके ऐप्लिकेशन को बिना किसी गड़बड़ी के और आसानी से चला सकें.
अगर Vulkan ऐप्लिकेशन में कोई नई गड़बड़ी होती है और इससे Android पर चलने वाले किसी खास डिवाइस पर असर पड़ता है, तो नया टेस्ट प्रपोज़ल सबमिट किया जा सकता है. इसमें, अपनी समस्या और उसकी जांच करने के तरीकों के बारे में बताया जा सकता है. इससे यह पक्का होता है कि डिवाइस के लिए आने वाले अपडेट में, समस्या को ठीक कर दिया जाए. साथ ही, यह भी पक्का होता है कि किसी अन्य डिवाइस में वही गड़बड़ी न हो.
टेस्ट प्रपोज़ल सबमिट करने के तरीके के बारे में चरण-दर-चरण निर्देश पाने के लिए, सीटीएस सबमिट करने की प्रोसेस देखें.