M1 पर सिर्फ एक महीने में Vulkan 1.3 लागू
Honeykrisp ड्राइवर का परिचय
- Honeykrisp ड्राइवर: Apple हार्डवेयर पर पहली बार पूरा Vulkan 1.3 स्पेसिफिकेशन लागू करने वाला ड्राइवर।
- विकास स्थिति: अभी अंतिम उपयोगकर्ताओं के लिए जारी नहीं किया गया है, और इसमें फीचर जोड़ने व performance सुधारने का काम चल रहा है। सोर्स कोड डेवलपर्स के लिए उपलब्ध है।
विकास प्रक्रिया
2 अप्रैल
- शुरुआत: NVK ड्राइवर के आधार पर M1 के लिए Vulkan ड्राइवर का विकास शुरू।
3 अप्रैल
- Descriptor set: NVIDIA से अलग M1 के descriptor set को NVK के अनुरूप समायोजित किया गया।
4 अप्रैल
- Compute shader: Compute shader को compile किया गया और Vulkan commands का उपयोग करके buffer और image copy करने की सुविधा लागू की गई।
6 अप्रैल
- Graphics state handling: Graphics state को संभालने वाला कोड लिखा गया, OpenGL ड्राइवर से कोड लेकर उसे NVK के साथ जोड़ा गया।
7 अप्रैल
- Dynamic state: सभी state को dynamic रूप से संभालने की रणनीति अपनाई गई, prologue और epilogue को compile और cache करने वाला कोड जोड़ा गया।
8 अप्रैल
- टेस्ट परिणाम: शुरुआती टेस्ट में 149,770 पास, 7,741 फेल, 2,396 crash।
9 अप्रैल
- Vulkan 1.3: Vulkan 1.1 में 99.6% pass rate हासिल करने के बाद, Vulkan 1.3 पर स्विच किया गया और 98.3% pass rate हासिल हुआ।
10 अप्रैल~12 अप्रैल
- अतिरिक्त परीक्षण: SuperTuxKart और Zink में Vulkan renderer के काम करने की पुष्टि हुई, और test bugs ठीक किए गए।
16 अप्रैल~17 अप्रैल
- Compiler bug fix: Descriptor indexing tests में मिले compiler bugs को ठीक किया गया, और infinite loop की समस्या सुलझाई गई।
18 अप्रैल
- Zero-copy rendering: अधिक efficient surface layout के लिए EXT_image_drm_format_modifier extension लागू किया गया।
22 अप्रैल
- ड्राइवर आर्किटेक्चर समीक्षा: ड्राइवर architecture की समीक्षा के बाद optimization किया गया, और vkoverhead test में प्रति सेकंड 100 million draw calls हासिल किए गए।
24 अप्रैल~25 अप्रैल
- YCbCr सपोर्ट: YCbCr फीचर जोड़ा गया, Mohamed Ahmed के NVK कोड का उपयोग किया गया।
- Query copy: GPU query copy फीचर लागू किया गया।
26 अप्रैल
- Border color: Direct3D compatibility के लिए EXT_custom_border_color extension लागू किया गया, और border color समस्या हल की गई।
27 अप्रैल
- अंतिम परीक्षण: सभी टेस्ट पास, 686,930 पास, 0 फेल।
भविष्य की योजनाएँ
- DXVK और vkd3d-proton सपोर्ट: Direct3D layering के लिए अतिरिक्त फीचर लागू किए जाएंगे।
- Windows गेम चलाना: Wine और open source x86 emulator का उपयोग करके Asahi Linux पर Windows गेम चलाने की योजना।
GN⁺ की राय
- तकनीकी चुनौती: M1 पर Vulkan 1.3 लागू करना तकनीकी रूप से बेहद चुनौतीपूर्ण काम है। इसकी वजह Apple हार्डवेयर की अनोखी architecture है।
- गेम डेवलपर्स के लिए उपयोगी: Vulkan ड्राइवर पूरा होने पर, गेम डेवलपर्स अपने गेम्स को अधिक platforms पर चला सकेंगे।
- Performance optimization की ज़रूरत: शुरुआती चरण में performance optimization की ज़रूरत हो सकती है। खासकर dynamic state handling से होने वाले CPU overhead को हल करना होगा।
- कम्युनिटी योगदान: एक open source project होने के नाते community का योगदान महत्वपूर्ण है। अलग-अलग हार्डवेयर और सॉफ्टवेयर environments में testing और feedback की ज़रूरत है।
- प्रतिस्पर्धी उत्पाद: DXVK और vkd3d-proton के अलावा Wine जैसे अन्य compatibility layers भी हैं। हर उत्पाद के फायदे और नुकसान की तुलना करके चुनना महत्वपूर्ण है।
1 टिप्पणियां
Hacker News राय
शेयर किए जा सकने वाले, दोहराए जा सकने वाले, ओपन कंपोनेंट्स की वैल्यू साबित करने वाला प्रभावशाली काम है। सोच रहा हूँ Proton को port होने में कितना समय लगेगा। GPU architecture के अंतर और ARM translation overhead की वजह से कई games शायद ठीक से न चलें। फिर भी, जैसे-जैसे SoC अधिक आम होंगे, यह आशावादी दृष्टिकोण है कि ज़्यादा games unified memory और ARM को target करेंगे.
Vulkan को Linux में जोड़ने और DirectX को Asahi Linux पर translate करने की कोशिश Apple के उस सपने को प्रभावित करेगी या नहीं, यह जानने की उत्सुकता है जिसमें वह AAA games को Apple Silicon पर लाना चाहता है। Apple चाहता है कि AAA developers अपने games को Metal पर port करें ताकि वे iPhone, iPad, Mac, Vision Pro पर चल सकें। यह भी संभव है कि Mac gamers AAA PC titles खेलने के लिए Asahi Linux install करें.
अगर आप Vulkan 1.3 से परिचित नहीं हैं लेकिन low-level graphics API के काम में रुचि रखते हैं, तो इसे देखना फायदेमंद है। शुरुआती बाधाएँ पार करने के बाद इस पर काम करना मज़ेदार हो जाता है। सभी dynamic state और preset-रहित render pass की वजह से काम काफी आसान हो जाता है। यह 10 साल से कम पुराने GPU वाले सभी desktop platforms पर उपलब्ध है। हाँ, कोई "reasonable defaults" framework नहीं है, लेकिन कई भाषाओं के लिए उपयोगी helper libraries बहुत हैं.
काश programming skill उसकी आधी भी मेरी होती। वाकई कमाल है.
Alyssa का कमाल का coding magic। पता नहीं वह यह कैसे करती है, लेकिन खुशी है कि वह यह अच्छी लड़ाई लड़ रही है.
compiler bugs कभी नहीं होते। लेकिन इस मामले में सचमुच compiler bug ही था। अपने करियर में मैंने ऐसा कभी नहीं देखा, लेकिन abstraction के इस स्तर पर यह शायद उतना दुर्लभ नहीं है.
अभी-अभी ES 3.2 support update किया है, और M1 तो जैसे Asahi के लिए ही बना हो। macOS को install करते समय सिर्फ एक बार boot किया था। सोच रहा हूँ कि browser 'zero copy rendering' support करता है या नहीं। याद है कि WebGL2 transform feedback एक ऐसी समस्या में फँस गया था जो read operation trigger करती थी.
एक अजीब shader structure है। condition हमेशा false है, लेकिन compiler यह नहीं जानता। सोच रहा हूँ इस structure का उद्देश्य क्या है.
VM के अंदर इस्तेमाल हो सकता है या नहीं। मैं macOS पर develop करता हूँ और Ubuntu test करने के लिए VMware image इस्तेमाल करता हूँ। मैं 3D graphics apps बनाता हूँ, लेकिन नहीं जानता कि VMware का passthrough कितना अच्छा है। यह जानने की उत्सुकता है कि Apple Silicon GPU VM में virtualize होता है या नहीं, और क्या इस distro को चलाकर बेहतर graphics performance मिल सकती है.
MoltenVK के साथ संबंध कोई समझा सकता है क्या। यह जानने की जिज्ञासा है कि क्या यह काम MoltenVK की ज़रूरत खत्म कर देता है, और क्या यह native driver है।