सिर्फ एक महीने में M1 पर Vulkan 1.3 सपोर्ट
(rosenzweig.io)- Honeykrisp अभी अंतिम उपयोगकर्ताओं के लिए जारी नहीं हुआ है, और फिलहाल डेवलपर्स के लिए केवल source code ही सार्वजनिक किया गया है
- M1 के लिए Honeykrisp, Apple hardware पर पहला conformant Vulkan implementation है, और यह
portabilitywaiver के बिना Vulkan 1.3 की पूरी specification लागू करता है - Honeykrisp, M1 के लिए पहले से चल रहे Vulkan कार्य पर आधारित नहीं है, बल्कि NVIDIA GPU के लिए ओपन सोर्स NVK driver पर आधारित है, और इसकी शुरुआत M1 code जोड़कर तथा NVIDIA-संबंधित हिस्से हटाकर की गई
- Vulkan 1.3 conformance test suite का अंतिम परिणाम Pass 686930, Fail 0 दर्ज किया गया
- सभी state को dynamic state के रूप में संभालते हुए, prolog और epilog को build·compile·cache करने वाला code जोड़ा गया, जिससे इसे full dynamic state और
EXT_shader_objectदिशा में लागू किया गया - zero-copy rendering के लिए
EXT_image_drm_format_modifierलागू किया गया - Direct3D compatibility के लिए DXVK और vkd3d-proton द्वारा आवश्यक
EXT_custom_border_colorको सपोर्ट किया गया है, और border colour correction को shader में code inject करके emulate किया गया - custom border colour emulation को “simple, correct, and slow” बताया गया है, और आगे driver tricks से इसकी गति बढ़ाने की योजना है
- अगला काम DXVK और vkd3d-proton द्वारा Direct3D layering के लिए आवश्यक items को लागू करना है, जिनमें उदाहरण के तौर पर transform feedback दिया गया है
1 टिप्पणियां
Hacker News की राय
वाकई प्रभावशाली काम है, और साझा व लगातार सुधारे जाने वाले open components की अहमियत साफ दिखती है
सोच रहा हूं Proton को port होने में कितना समय लगेगा, लेकिन Vulkan implementation कितना भी optimal हो, GPU architecture के अंतर, ARM translation overhead और Proton की अपनी लागत की वजह से कई games की performance खराब हो सकती है
फिर भी Snapdragon जैसे SoC desktop पर ज्यादा आम हो जाएं, तो आगे और games unified memory और ARM को target करेंगे—इसको लेकर आशावादी हूं
यह दिखाता है कि पिछले 10 सालों में Apple का Vulkan को ignore करना कितनी बड़ी गलती थी, लेकिन लगता नहीं कि बहुत देर होने से पहले वे इसे कभी मानेंगे
Alyssa हाल में FEX performance improvements पर भी काम कर रही हैं
Linux में Vulkan जोड़ने और Asahi Linux पर DirectX को translate करने का यह काम Apple Silicon पर AAA games लाने के Apple के सपने को प्रभावित करेगा या नहीं, यह सोचने वाली बात है
Apple शायद चाहता होगा कि AAA developers अपने games को Metal पर port करें, ताकि वे iPhone, iPad, Mac और Vision Pro पर एक ही codebase से चलें
हो सकता है Mac gamers AAA PC titles खेलने के लिए Asahi Linux install करने लगें
असल चाहत यह है कि AAA games Steam या Epic Games Store पर नहीं, बल्कि App Store में आएं; इसलिए मेरे हिसाब से GPTK आधा-अधूरा है और इसकी license भी Valve को इसे सीधे Steam में integrate करने से रोकती है
मैंने M1 पर Whiskey से Diablo II Resurrected खेला था, और Windows native game का यूं सीधे चल जाना काफी impressive था। अभी बस बेवकूफी भरा Blizzard launcher update crash कर रहा है और game launch होने से रोक रहा है
यह पुराना DX9 game है, लेकिन EverQuest II भी M1 Mac mini पर 1440p में बहुत अच्छा चला, और Asahi Linux Guild Wars जैसे पुराने 32-bit titles में भी मदद कर सकता है
अगर Vulkan 1.3 के बारे में ज्यादा नहीं जानते, लेकिन low-level graphics API work में दिलचस्पी है, तो इसे जरूर देखना चाहिए। यह Vulkan 1.0 से बिल्कुल अलग स्तर पर है और game-changer है
शुरुआती barrier पार कर लें तो इस पर काम करना मजेदार है, और सभी dynamic state व pre-render pass setup हटने से यह कहीं ज्यादा manageable हो गया है। 20 साल से इस्तेमाल किए जा रहे OpenGL से भी आसान हो गया है, और graphics programming फिर से मजेदार लगने लगी है
अगर modern drivers हैं, तो लगभग पिछले 10 साल के भीतर बने GPU वाले सभी desktop platforms पर ज्यादातर features इस्तेमाल किए जा सकते हैं
अफसोस कि तुरंत शुरू कराने वाला “reasonable defaults” framework नहीं है, लेकिन कई languages के लिए उपयोगी helper libraries काफी हैं
Vulkan पर जाने का समय नहीं मिला, पर लगता है आखिरकार बस initialization और setup barrier पार करना होगा। उसके बाद शायद OpenGL पर वापस नहीं जाऊंगा
इस लेख ने थोड़ा push दिया है कि सच में इसे आजमाना चाहिए
OpenGL भी मूल रूप से ऐसा ही था, तो शायद बहुत अलग नहीं है, लेकिन लगता है Khronos ने वाकई कमाल कर दिया
ES 3.2 support की वजह से अभी update किया और पहले से ही हैरान हूं। मेरा M1 तो जैसे Asahi के लिए ही बना लगता है
सच कहूं तो macOS शायद सिर्फ install करते समय या गलती से एक बार boot हुआ होगा। ऐसी detailed updates मिलना अच्छा है
सोच रहा हूं कि browsers में कोई zero-copy rendering support करता है या अभी भी compositor layers की कई परतें बीच में हैं। याद है WebGL2 transform feedback readback trigger कर रहा था और उसी में अटक गया था
जब कुछ crash होता था तो मैं सोचता था कि यह compiler bug तो बिल्कुल हो ही नहीं सकता, लेकिन 16 अप्रैल को सच में compiler bug निकला
मैं confidently कह सकता हूं कि अपने career में ऐसा कभी नहीं देखा, लेकिन abstraction level जितना नीचे जाता है, यह उतना कम दुर्लभ भी हो सकता है
बशर्ते आप low-level kernel developer हों—तब दोनों सही हो सकते हैं
मजाक अलग, असल में ज्यादातर बार ऐसा नहीं होता, लेकिन यह सचमुच होता है
अगर यह आपका अपना in-progress compiler है जिसे test किया जा रहा है, तो “compiler bug नहीं हो सकता” वाली कहावत बहुत लागू नहीं होती
शेडर में एक अजीब स्ट्रक्चर है:
if (condition) { while (true) { } }conditionहमेशा false है, लेकिन compiler को यह पता नहीं हैstandards-compliant shader compiler लिखने वालों को परेशान करने वाले ज़हर के अलावा, मुझे जिज्ञासा है कि इस स्ट्रक्चर का उद्देश्य क्या है
वह code खुद practical work में उपयोगी है, ऐसा नहीं; लेकिन अगर shader का कोई हिस्सा किसी खास स्थिति में functionally इस रूप में simplify हो सकता है, तो compiler को उसे सही तरह handle करना चाहिए
अगर यह concept परिचित नहीं है, तो C++, LLVM, Rust की ये capabilities देखें:
https://en.cppreference.com/w/cpp/utility/unreachable
https://en.cppreference.com/w/cpp/language/attributes/assume
https://en.cppreference.com/w/cpp/memory/assume_aligned
https://llvm.org/docs/LangRef.html#unreachable-instruction
https://llvm.org/docs/LangRef.html#llvm-assume-intrinsic
https://doc.rust-lang.org/std/hint/fn.unreachable_unchecked....
https://doc.rust-lang.org/std/hint/fn.assert_unchecked.html
infinite loop असल में unreachable instruction है, और branch के बाद की unreachable instruction असल में assume instruction बन जाती है
जिज्ञासा है कि क्या इसे VM के अंदर इस्तेमाल किया जा सकता है। मैं macOS पर develop करता हूं और कुल मिलाकर संतुष्ट हूं, लेकिन testing के लिए VMware का Ubuntu image चलाता हूं
मैं 3D graphics app बना रहा हूं, इसलिए पता नहीं VMware का passthrough कितना अच्छा है। जानना चाहता हूं कि VM में Apple Silicon GPU virtualize होता है या नहीं, और क्या इस distro को चलाने से graphics performance बेहतर हो सकती है
क्या कोई समझा सकता है कि इसका MoltenVK से क्या संबंध है? क्या native driver होने की वजह से MoltenVK की जरूरत खत्म हो जाती है?
Asahi Linux Apple M series processors पर Linux compatible बनाने की कोशिश में विकसित हो रहा distro है, और यह लेख Asahi में GPU-accelerated Vulkan चलाने के बारे में है
लेख में भी यही कहा गया है। यह OS X पर directly चल नहीं सकता, इसलिए MoltenVK की जरूरत को खत्म नहीं करता