WebGPU (Chrome 136) में नया क्या है

François Beaufort
François Beaufort

पब्लिश करने की तारीख: 23 अप्रैल, 2025

GPUAdapterInfo isFallbackAdapter एट्रिब्यूट

GPUAdapterInfo isFallbackAdapter बूलियन एट्रिब्यूट से पता चलता है कि किसी GPUAdapter की परफ़ॉर्मेंस पर कोई असर पड़ता है या नहीं. ऐसा, ज़्यादा डिवाइसों के साथ काम करने, बेहतर तरीके से काम करने या निजता को बेहतर बनाने के लिए किया जाता है. यह बदलाव करना ज़रूरी था, क्योंकि उपयोगकर्ता से मिले GPUDevice ऑब्जेक्ट का इस्तेमाल करने वाली लाइब्रेरी, GPUDevice पर मौजूद adapterInfo एट्रिब्यूट की मदद से यह जानकारी ऐक्सेस नहीं कर सकती थीं. यहां दिया गया उदाहरण और समस्या 403172841 देखें.

const adapter = await navigator.gpu.requestAdapter();

if (adapter?.info.isFallbackAdapter) {
  // The returned adapter is a software-backed fallback adapter, which
  // may have significantly lower performance and fewer features.
}

Chrome ने फ़ॉलबैक अडैप्टर के लिए, अब तक सहायता उपलब्ध नहीं कराई है. इसलिए, फ़िलहाल उपयोगकर्ताओं के डिवाइसों पर isFallbackAdapter हमेशा गलत होता है. हम इस बात की जांच कर रहे हैं कि GPUAdapter isFallbackAdapter एट्रिब्यूट को बंद किया जा सकता है या नहीं. शिप करने का इंटेंट देखें.

D3D12 पर शेडर कंपाइल करने में लगने वाले समय में सुधार

Chrome की टीम, WebGPU शेडर लैंग्वेज कंपाइलर Tint को लगातार बेहतर बना रही है. इसके लिए, D3D12 बैकएंड के साथ WebGPU की सुविधा वाले डिवाइसों के लिए, इंटरमीडिएट रिप्रज़ेंटेशन (आईआर) जोड़ा जा रहा है. यह IR, Tint के एब्स्ट्रैक्ट सिंटैक्स ट्री (AST) और HLSL बैकएंड लेखक के बीच में होता है. इससे कंपाइलर ज़्यादा बेहतर और मैनेज करने लायक बन जाएगा. इससे डेवलपर और उपयोगकर्ता, दोनों को फ़ायदा मिलेगा. शुरुआती टेस्ट से पता चलता है कि Unity के WGSL शेडर को HLSL में ट्रांसलेट करने के दौरान, Tint के नए वर्शन की परफ़ॉर्मेंस 10 गुना बेहतर है.

इस फ़्लोचार्ट में, WGSL शेडर कोड को लो-लेवल जीपीयू निर्देशों में बदलने की प्रोसेस दिखाई गई है.
Windows में रेंडर पाइपलाइन बनाने का तरीका.

ये सुधार, Android, ChromeOS, और macOS पर पहले से ही उपलब्ध हैं. अब इन्हें D3D12 बैकएंड के साथ WebGPU की सुविधा वाले Windows डिवाइसों पर भी उपलब्ध कराया जा रहा है. समस्या 42251045 देखें.

कैनवस इमेज सेव करना और कॉपी करना

Chrome के उपयोगकर्ता अब WebGPU कैनवस पर दायां क्लिक करके, कॉन्टेक्स्ट मेन्यू के विकल्प इमेज को इस तरह सेव करें… या इमेज कॉपी करें को ऐक्सेस कर सकते हैं. समस्या 40902474 देखें.

कॉन्टेंट
उपयोगकर्ता ने "इमेज को इस नाम से सेव करें…" कॉन्टेक्स्ट मेन्यू चुना.

Compatibility Mode की पाबंदियां हटाना

अगर GPUDevice पर एक्सपेरिमेंट के तौर पर उपलब्ध "core-features-and-limits" सुविधा उपलब्ध है, तो chrome://flags/#enable-unsafe-webgpu फ़्लैग चालू होने पर, कंपैटबिलिटी मोड की सभी पाबंदियां (सुविधाएं और सीमाएं) हट जाती हैं. समस्या 395855517 देखें.

featureLevel: "compatibility" विकल्प के साथ GPUAdapter का अनुरोध करने से, ब्राउज़र को एक्सपेरिमेंट के तौर पर उपलब्ध WebGPU के साथ काम करने वाले मोड को चुनने का संकेत मिलता है. अगर यह प्रोसेस पूरी हो जाती है, तो एडैप्टर "काम करने की सुविधा के लिए डिफ़ॉल्ट रूप से सेट" हो जाता है. ऐसा न होने पर, यह "कोर-डिफ़ॉल्ट" है, जो featureLevel: "core" विकल्प का इस्तेमाल करने जैसा ही है. इसके अलावा, requiredFeatures और requiredLimits के बिना requestDevice() को कॉल करने पर, GPUAdapter की डिफ़ॉल्ट सुविधाओं के साथ GPUDevice का अनुरोध किया जाता है.

डिफ़ॉल्ट रूप से कोर के तौर पर काम करने वाले अडैप्टर, हमेशा "core-features-and-limits" सुविधा के साथ काम करते हैं. साथ ही, इनसे बनाए गए GPUDevices पर यह सुविधा अपने-आप चालू हो जाती है. डिफ़ॉल्ट रूप से काम करने वाले अडैप्टर के लिए, "core-features-and-limits" सुविधा काम कर सकती है. साथ ही, इनसे बनाए गए GPUDevices के लिए अनुरोध किया जा सकता है. दोनों तरह के अडैप्टर में "float32-blendable" जैसी सुविधाएं भी काम कर सकती हैं. यह सुविधा, कोर और कम्पैटबिलिटी मोड, दोनों में उपलब्ध है. हालांकि, इसका इस्तेमाल करना ज़रूरी नहीं है.

यहां दिया गया उदाहरण, ऐसे ऐप्लिकेशन के लिए है जिसे "float32-blendable" की ज़रूरत है. साथ ही, अगर मुख्य सुविधाएं उपलब्ध हैं, तो उनका इस्तेमाल करता है. हालांकि, मुख्य सुविधाएं उपलब्ध न होने पर, सिर्फ़ काम करने की सुविधाओं का इस्तेमाल करता है.

const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });

if (!adapter || !adapter.features.has("float32-blendable")) {
  throw new Error("32-bit float textures blending support is not available");
}

const requiredFeatures = [];
if (adapter.features.has("core-features-and-limits")) {
  requiredFeatures.push("core-features-and-limits");
}

const device = await adapter.requestDevice({ requiredFeatures });

if (!device.features.has("core-features-and-limits")) {
  // Compatibility mode restrictions validation rules will apply.
}

"core-features-and-limits" सुविधा के लिए, एक्सपेरिमेंटल GPUAdapter featureLevelऔर isCompatibilityMode एट्रिब्यूट हटा दिए गए हैं. समस्या 395855516 देखें.

Dawn के बारे में अपडेट

कॉलबैक स्टेटस एनम InstanceDropped का नाम बदलकर CallbackCancelled कर दिया गया है. इससे यह पता चलता है कि कॉलबैक रद्द कर दिया गया है, लेकिन इवेंट से जुड़ी बैकग्राउंड प्रोसेसिंग, जैसे कि पाइपलाइन कंपाइलेशन अब भी चल रही हो सकती है. अगर बाद में सदस्यता रद्द करने का कोई दूसरा तरीका जोड़ा जाता है, तो नया नाम ज़्यादा काम का होगा. समस्या 520 देखें.

wgpu::PopErrorScopeStatus::EmptyStack एनम, जो बताता है कि गड़बड़ी के स्कोप स्टैक को पॉप नहीं किया जा सका, उसका नाम बदलकर wgpu::PopErrorScopeStatus::Error कर दिया गया है. यह एनम, आम तौर पर ज़्यादा लागू होता है. डीबग करने में मदद करने के लिए, कॉलबैक में अब गड़बड़ी की जानकारी देने वाला मैसेज भी शामिल होता है. समस्या 369 देखें.

इसमें सिर्फ़ कुछ खास हाइलाइट शामिल हैं. कमिट की पूरी सूची देखें.

WebGPU में नया क्या है

WebGPU में नया क्या है सीरीज़ में शामिल सभी चीज़ों की सूची.

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

Chrome 131

Chrome 130

Chrome 129

Chrome 128

Chrome 127

Chrome 126

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113