डीबगर
पुष्टि करने वाली लेयर की मदद से डीबग करना
Vulkan को बेहतर परफ़ॉर्मेंस और कम ड्राइवर ओवरहेड के लिए डिज़ाइन किया गया है. ऐसा करने के लिए, इसमें डिफ़ॉल्ट रूप से गड़बड़ी की जांच करने और डीबग करने की बहुत कम सुविधाएं शामिल होती हैं. अगर कोई गड़बड़ी होती है, तो ड्राइवर अक्सर गड़बड़ी का कोड दिखाने के बजाय क्रैश हो जाएगा. इससे भी बुरी बात यह है कि यह आपके ग्राफ़िक्स कार्ड पर काम करता हुआ दिखेगा, लेकिन दूसरों पर पूरी तरह से काम नहीं करेगा.
डेवलपमेंट के दौरान ज़्यादा जांच करने के लिए, Vulkan पुष्टि करने वाली लेयर उपलब्ध कराता है. ये कोड के ऐसे हिस्से होते हैं जिन्हें एपीआई और ग्राफ़िक्स ड्राइवर के बीच डाला जा सकता है. इससे फ़ंक्शन पैरामीटर की अतिरिक्त जांच करने और मेमोरी मैनेजमेंट की समस्याओं को ट्रैक करने जैसे काम किए जा सकते हैं. डेवलपमेंट के दौरान, पुष्टि करने वाली लेयर चालू की जा सकती हैं. साथ ही, ऐप्लिकेशन को बिना किसी अतिरिक्त खर्च के रिलीज़ करते समय, इन्हें पूरी तरह से बंद किया जा सकता है.
पुष्टि करने वाली लेयर को कोई भी लिख सकता है. हालांकि, Khronos एक स्टैंडर्ड सेट उपलब्ध कराता है, जिसे VK_LAYER_KHRONOS_validation
कहा जाता है. अपने ऐप्लिकेशन में पुष्टि करने वाली लेयर को चालू करने के लिए, Android NDK पेज पर जाकर Android पर Vulkan की पुष्टि करने वाली लेयर देखें.
RenderDoc
RenderDoc एक और बेहतरीन ओपन सोर्स टूल है. इसकी मदद से, जांच और विश्लेषण के लिए फ़्रेम कैप्चर किया जा सकता है. यह एक बहुत ही बेहतरीन टूल है. इसका इस्तेमाल ग्राफ़िक्स प्रोग्रामर, रेंडर किए गए सीन को डीबग करने के लिए करते हैं. यह Android पर Vulkan के साथ अच्छी तरह से काम करता है. हालांकि, इसके लिए आपके ऐप्लिकेशन को debuggable के तौर पर सेट करना होगा.
Android ऐप्लिकेशन पर इसे सेट अप और इस्तेमाल करने के बारे में जानकारी के लिए, Android पर RenderDoc का इस्तेमाल कैसे करें लेख पढ़ें.
कैप्चर / रीप्ले लाइब्रेरी
GFXReconstruct
GFXReconstruct एक ओपन सोर्स प्रोजेक्ट है. यह ऐसे टूल उपलब्ध कराता है जिनकी मदद से, किसी ऐप्लिकेशन के ज़रिए किए गए ग्राफ़िक्स एपीआई कॉल को कैप्चर और रीप्ले किया जा सकता है. रिकॉर्ड किए गए ट्रेस को बाद में फिर से चलाया जा सकता है. इससे, कैप्चर किए गए ऐप्लिकेशन के ग्राफ़िक्स से जुड़े व्यवहार को फिर से बनाया जा सकता है. GFXReconstruct का एक मुख्य फ़ायदा यह है कि इसे रिलीज़ किए गए ऐप्लिकेशन पर इस्तेमाल किया जा सकता है. ऐसा तब किया जा सकता है, जब आपने android:debuggable को बंद कर दिया हो.
ज़्यादा जानकारी के लिए, प्रोजेक्ट की रिपॉज़िटरी पर जाएं. Android पर Vulkan को सेट अप करने और इस्तेमाल करने के बारे में जानकारी, Android के लिए GFXReconstruct API Capture and Replay में उपलब्ध है.
ध्यान दें कि ट्रेस फ़ाइलें पोर्टेबल नहीं होती हैं. इसका मतलब है कि किसी एक डिवाइस पर फ़ाइल को कैप्चर करके, उसे दूसरे डिवाइस पर नहीं चलाया जा सकता. ऐसा इसलिए, क्योंकि दूसरे डिवाइस का ओएस वर्शन, चिपसेट या ड्राइवर वर्शन अलग हो सकता है.
प्रोफ़ाइलर
Android GPU Inspector (AGI)
Android GPU Inspector (AGI), Android के लिए बनाया गया एक ग्राफ़िक्स प्रोफ़ाइलर है. इसमें सिस्टम प्रोफ़ाइल और फ़्रेम प्रोफ़ाइलर शामिल हैं. इससे आपको प्रोफ़ाइलिंग की अहम जानकारी मिलती है. इससे आपको अपने गेम की परफ़ॉर्मेंस प्रोफ़ाइल को समझने और परफ़ॉर्मेंस में आने वाली समस्याओं का पता लगाने में मदद मिलती है.
AGI को डाउनलोड करने और इसे इस्तेमाल करने का तरीका जानने के लिए, Android GPU Inspector की वेबसाइट पर जाएं.
Android Studio Profiler
Android Studio Profiler, आपके ऐप्लिकेशन की परफ़ॉर्मेंस की प्रोफ़ाइलिंग करने के लिए एक काम का टूल है. हालांकि, यह खास तौर पर ग्राफ़िक्स प्रोफ़ाइलिंग के लिए नहीं है. इसमें सीपीयू प्रोफ़ाइलर, मेमोरी प्रोफ़ाइलर, नेटवर्क प्रोफ़ाइलर, एनर्जी प्रोफ़ाइलर, पावर प्रोफ़ाइलर, और इवेंट मॉनिटर शामिल हैं.
Android Studio Profiler को सेट अप और इस्तेमाल करने के तरीके के बारे में ज़्यादा जानने के लिए, अपने ऐप्लिकेशन की परफ़ॉर्मेंस की प्रोफ़ाइल बनाएं सेक्शन देखें.
ओईएम प्रोफ़ाइलर
इस सेक्शन में मौजूद टूल, OEM के हिसाब से बनाए गए हैं. ऐसा हो सकता है कि ये टूल, अन्य चिप पर काम न करें.
ARM Performance Studio for Mobile
Arm Performance Studio for Mobile, Arm Mobile Studio का नया नाम है. यह टूल का एक ऐसा सुइट है जिसमें ARM GPU पर परफ़ॉर्मेंस से जुड़ी समस्याओं का पता लगाने और उन्हें ठीक करने के लिए, Graphics Analyzer और Frame Advisor शामिल हैं.
ज़्यादा जानकारी के लिए, Arm Performance Studio for Mobile वेबसाइट देखें.
Mali GPU के लिए ARM PerfDoc
PerfDoc, Vulkan लेयर है. इसे ARM के Mali GPU के सबसे सही तरीकों के हिसाब से ऐप्लिकेशन की पुष्टि करने के लिए बनाया गया है. इसके बाद, इसे VK_LAYER_KHRONOS_validation में मर्ज कर दिया गया. यह स्टैंडर्ड Vulkan की पुष्टि करने वाली लेयर का हिस्सा है.
इसे इस्तेमाल करने के तरीके के बारे में जानने के लिए, मान्य लेयर की मदद से डीबग करना सेक्शन देखें.
Qualcomm Snapdragon Profiler
Qualcomm Snapdragon Profiler, Qualcomm का बनाया गया एक प्रोफ़ाइलिंग सॉफ़्टवेयर है. इसे ऐप्लिकेशन डेवलपर के लिए बनाया गया है. इसकी मदद से, वे सीपीयू, जीपीयू, डीएसपी, मेमोरी, पावर, थर्मल, और नेटवर्क की परफ़ॉर्मेंस का विश्लेषण कर सकते हैं. इससे उन्हें अपने चिपसेट में आने वाली समस्याओं का पता लगाने में मदद मिलती है.
ज़्यादा जानकारी के लिए, Qualcomm Developer Network पर Snapdragon Profiler देखें.
Samsung GPUWatch
Samsung का GPUWatch, Samsung डिवाइसों पर जीपीयू की गतिविधि को मॉनिटर करने वाला टूल है. अन्य टूल के उलट, इस टूल का इस्तेमाल सीधे अपने फ़ोन या टैबलेट से किया जा सकता है. इसलिए, अगर आपके पास किसी दूसरे होस्ट कंप्यूटर का ऐक्सेस नहीं है, तो भी ऐप्लिकेशन की परफ़ॉर्मेंस तुरंत देखने के लिए यह टूल बहुत काम का है.
इसे चालू करने के तरीके के बारे में ज़्यादा जानने के लिए, उपयोग के लिए गाइड देखें.
PVRTune
Imagination Technologies का PVRTune, डेवलपर को PowerVR हार्डवेयर पर ऐप्लिकेशन की रीयल-टाइम में प्रोफ़ाइल बनाने की सुविधा देता है. इसमें कई तरह के काउंटर और मेट्रिक शामिल होती हैं. यह कुकी, सेशन को सेव करने की अनुमति भी देती है, ताकि परफ़ॉर्मेंस से जुड़ी समस्याओं का पता लगाने के लिए, ज़्यादा बारीकी से विश्लेषण किया जा सके.
PVRTune का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, मैन्युअल देखें.
माइग्रेशन टूल
शेडर को GLSL से SPIR-V में बदलना
Vulkan API को, SPIR-V बाइनरी इंटरमीडिएट फ़ॉर्मैट में शेडर प्रोग्राम की ज़रूरत होती है. यह तरीका OpenGL ES से अलग है. इसमें, OpenGL Shading Language (GLSL) में लिखे गए सोर्स कोड को टेक्स्ट स्ट्रिंग के तौर पर सबमिट किया जा सकता है.
एनडीके r12 और इसके बाद के वर्शन में, GLSL शेडर को SPIR-V में कंपाइल करने के लिए रनटाइम लाइब्रेरी शामिल होती है. इसका इस्तेमाल Vulkan कर सकता है. shaderc कंपाइलर का इस्तेमाल, GLSL में लिखे गए शेडर प्रोग्राम को SPIR-V में कंपाइल करने के लिए किया जा सकता है. अगर आपका गेम HLSL का इस्तेमाल करता है, तो DirectXShaderCompiler SPIR-V आउटपुट के साथ काम करता है.
आम तौर पर, आपको अपने गेम के लिए ऐसेट बनाने की प्रोसेस के तहत, ऑफ़लाइन मोड में शेडर प्रोग्राम कंपाइल करने होंगे. साथ ही, आपको SPIR-V मॉड्यूल को रनटाइम ऐसेट के तौर पर शामिल करना होगा.
अपने Vulkan ऐप्लिकेशन के लिए, शेडर कंपाइलेशन प्रोसेस के बारे में ज़्यादा जानने के लिए, Android NDK सेक्शन में Android पर Vulkan शेडर कंपाइलर लेख पढ़ें.
बेहतर सुविधाएं
Android फ़्रेम पेसिंग को अपने Vulkan रेंडरर में इंटिग्रेट करना
Android फ़्रेम पेसिंग लाइब्रेरी (इसे Swappy भी कहा जाता है) की मदद से, Vulkan गेम को स्मूद रेंडरिंग और सही पेसिंग मिलती है. इससे गेम रेंडरिंग लूप को ओएस के डिसप्ले सबसिस्टम और डिसप्ले हार्डवेयर के साथ सिंक किया जा सकता है.
सही पेसिंग से, विज़ुअल आर्टफ़ैक्ट (स्क्रीन पर दिखने वाली गड़बड़ियां) को ठीक किया जा सकता है. साथ ही, डिसप्ले रीफ़्रेश और फ़्रेम प्रज़ेंटेशन के बीच सिंक्रनाइज़ेशन करके, बैटरी की खपत को ऑप्टिमाइज़ किया जा सकता है. इसके अलावा, फ़्रेम रेट को स्थिर करके, जंक को भी हटाया जा सकता है. फ़्रेम पेसिंग की अहमियत के बारे में ज़्यादा जानने के लिए, AGDK के फ़्रेम पेसिंग लाइब्रेरी सेक्शन पर जाएं.
अपने गेम में फ़्रेम पेसिंग को इंटिग्रेट करने के तरीके के बारे में ज़्यादा जानने के लिए, अपने Vulkan रेंडरर में Android फ़्रेम पेसिंग को इंटिग्रेट करना लेख पढ़ें.
Vulkan प्री-रोटेशन की मदद से डिवाइस के ओरिएंटेशन को मैनेज करना
ऐप्लिकेशन के बाहर Surface को घुमाने की सुविधा का इस्तेमाल करने के लिए, शुल्क देना पड़ सकता है. कुछ महंगे डिवाइसों में, डिसप्ले प्रोसेसिंग यूनिट (डीपीयू) मौजूद होती है. हालांकि, इन डिवाइसों में भी परफ़ॉर्मेंस पर असर पड़ सकता है. साथ ही, यह असर इस बात पर निर्भर करेगा कि आपका ऐप्लिकेशन सीपीयू पर काम करता है या जीपीयू पर.
Vulkan, डेवलपर को OpenGL की तुलना में, डिवाइसों को रेंडरिंग की स्थिति के बारे में ज़्यादा जानकारी देने की सुविधा देता है. ऐसी ही एक जानकारी, डिवाइस ओरिएंटेशन और रेंडर सर्फ़ेस ओरिएंटेशन के बीच का संबंध है. इस सुविधा की मदद से, Android पर Vulkan का ज़्यादा से ज़्यादा फ़ायदा पाने के लिए, प्री-रोटेशन लागू किया जा सकता है.
अपने Vulkan ऐप्लिकेशन पर डिवाइस रोटेशन को असरदार तरीके से हैंडल करने के बारे में ज़्यादा जानने के लिए, Vulkan प्री-रोटेशन की मदद से डिवाइस ओरिएंटेशन को हैंडल करना और साथ में दिया गया डेमो ऐप्लिकेशन देखें.
कम सटीक जानकारी के साथ ऑप्टिमाइज़ करना
ग्राफ़िक्स डेटा और शेडर कैलकुलेशन के संख्यात्मक फ़ॉर्मैट का, आपके गेम की परफ़ॉर्मेंस पर काफ़ी असर पड़ सकता है. मॉडर्न 3D ग्राफ़िक्स में ज़्यादातर कैलकुलेशन और डेटा के लिए, फ़्लोटिंग पॉइंट नंबर का इस्तेमाल किया जाता है. Android पर Vulkan, 32 या 16 बिट के फ़्लोटिंग पॉइंट नंबर का इस्तेमाल करता है. 32-बिट वाले फ़्लोटिंग पॉइंट नंबर को आम तौर पर सिंगल प्रिसिशन या फ़ुल प्रिसिशन कहा जाता है. हालांकि, Vulkan में 64-बिट फ़्लोटिंग पॉइंट टाइप को तय किया गया है, लेकिन यह आम तौर पर काम नहीं करता. इसलिए, इसका इस्तेमाल करने का सुझाव नहीं दिया जाता.
अपने अंकगणित के लिए, Vulkan ऐप्लिकेशन को सबसे अच्छी परफ़ॉर्मेंस के लिए ऑप्टिमाइज़ करने के तरीके के बारे में जानकारी पाने के लिए, कम सटीक जानकारी के साथ ऑप्टिमाइज़ करें देखें.