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

François Beaufort
François Beaufort

पब्लिश करने की तारीख: 25 फ़रवरी, 2026

OpenGL ES 3.1 पर WebGPU के साथ काम करने वाले मोड को सपोर्ट करना

WebGPU को Vulkan, Metal, और D3D12 जैसे आधुनिक ग्राफ़िक्स एपीआई के साथ काम करने के लिए डिज़ाइन किया गया है. हालांकि, कई उपयोगकर्ताओं के पास ऐसा पुराना हार्डवेयर है जो इन मानकों के साथ काम नहीं करता. इस समस्या को हल करने और यह पक्का करने के लिए कि Chrome का इस्तेमाल ज़्यादा से ज़्यादा लोग कर पाएं, Chrome ने ऑप्ट-इन करने की एक नई सुविधा लॉन्च की है. इसे कंपैटिबिलिटी मोड कहा जाता है.

इस मोड की मदद से, WebGPU को OpenGL ES 3.1 जैसे पुराने ग्राफ़िक्स एपीआई पर चलाया जा सकता है. WebGPU स्पेसिफ़िकेशन के कुछ सबसेट को टारगेट करके, यह पक्का किया जा सकता है कि आपका वेब ऐप्लिकेशन सभी लोगों के लिए उपलब्ध हो. चाहे उनके पास गेमिंग के लिए सबसे नया डिवाइस हो या पुराना लैपटॉप और मोबाइल डिवाइस. फ़िलहाल, यह सुविधा Android पर उपलब्ध है. हालांकि, टीम अन्य डिवाइसों पर भी इसे उपलब्ध कराने के लिए काम कर रही है. जैसे, OpenGL ES 3.1 के साथ ChromeOS और Direct3D 11 के साथ Windows.

कई वेब ऐप्लिकेशन के लिए, featureLevel: "compatibility" को कॉल करते समय featureLevel: "compatibility" पास करके, कंपैटिबिलिटी मोड चालू किया जा सकता है.requestAdapter() अगर आपका डिवाइस Core WebGPU के साथ काम करता है, तो Chrome, Core WebGPU के साथ काम करने वाला अडैप्टर दिखाएगा. हालांकि, आपका वेब ऐप्लिकेशन, कंपैटिबिलिटी की सीमाओं के अंदर ही काम करेगा. ऐसा तब तक होगा, जब तक वह "core-features-and-limits" सुविधा चालू नहीं करता या सभी उपलब्ध सुविधाएं चालू नहीं करता. ज़्यादा जटिल ऐप्लिकेशन को मोड की पाबंदियों के मुताबिक बनाने के लिए, कुछ बदलाव करने पड़ सकते हैं.

// Request a GPUAdapter in compatibility mode.
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
const device = await adapter.requestDevice();

इस मोड की आर्किटेक्चर से जुड़ी पाबंदियों के बारे में ज़्यादा जानने के लिए, WebGPU की बुनियादी बातों से जुड़ी गाइड देखें. इसके अलावा, सभी WebGPU सैंपल अब कंपैटिबिलिटी मोड के साथ काम करते हैं. शिपिंग के लिए मंज़ूरी भी पढ़ी जा सकती है.

कुछ समय के लिए उपलब्ध अटैचमेंट

मेमोरी का कम इस्तेमाल करने वाले अटैचमेंट बनाने के लिए, नए TRANSIENT_ATTACHMENT GPUTextureUsage फ़्लैग का इस्तेमाल किया जा सकता है. इससे रेंडर पास ऑपरेशन, टाइल मेमोरी में बने रहते हैं. इससे वीआरएएम ट्रैफ़िक कम होता है और टेक्सचर के लिए वीआरएएम का इस्तेमाल नहीं होता.

किसी टेक्सचर को ट्रांज़िएंट (या "मेमोरीलेस") के तौर पर एलान करने से, जीपीयू को पता चलता है कि उसे टेक्सचर के कॉन्टेंट की ज़रूरत सिर्फ़ कुछ समय के लिए होती है. खास तौर पर, सिर्फ़ मौजूदा रेंडर पास के दौरान. इसके अलावा, रेंडर पास के बाद टेक्सचर का कॉन्टेंट हटा दिया जाता है. इसलिए, ड्राइवर को इसके लिए वीआरएएम आवंटित करने की ज़रूरत नहीं पड़ सकती.

यहां दिए गए उदाहरण में, कुछ समय के लिए दिखने वाली टेक्सचर बनाने का तरीका बताया गया है.

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

if ('TRANSIENT_ATTACHMENT' in GPUTextureUsage) {

  const transientTexture = device.createTexture({
    size: [42, 42],
    // The TRANSIENT_ATTACHMENT flag indicates the texture content is temporary,
    // potentially keeping it in fast on-chip memory.
    usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TRANSIENT_ATTACHMENT,
    format: 'rgba8unorm',
  });
}

Hello Triangle MSAA - WebGPU Sample और intent to ship देखें.

WGSL texture_and_sampler_let एक्सटेंशन

WGSL भाषा एक्सटेंशन texture_and_sampler_let की मदद से, WGSL शेडर में मौजूद let को टेक्सचर या सैंपलर वैरिएबल असाइन किए जा सकते हैं. फ़िलहाल, यह सुविधा नाम देने का एक दूसरा तरीका उपलब्ध कराती है. साथ ही, यह बिना बाइंडिंग के काम करने की सुविधा के लिए तैयार करती है. इस सुविधा में, टेक्सचर या सैंपलर दिखाने वाले तरीकों को सीधे तौर पर लोकल वैरिएबल में सेव किया जा सकता है.

यहां दिया गया उदाहरण और शिपिंग का इरादा देखें.

@group(0) @binding(0) var tex: texture_2d<f32>;
@group(1) @binding(0) var store : texture_storage_2d<r32float, read_write>;

@fragment fn main() {
    let a = tex;
    var res: vec4f = textureLoad(a, vec2i(1i), 0);

    textureStore(store, vec2i(0i), res);
}

सुबह के अपडेट

सीमा के ये नए टियर उपलब्ध हैं:

  • maxStorageBuffersPerShaderStage में 16 तक की वैल्यू इस्तेमाल की जा सकती है. समस्या 366151398 देखें.

  • maxSampledTexturesPerShaderStage में ज़्यादा से ज़्यादा 48 वर्ण इस्तेमाल किए जा सकते हैं. समस्या 475255737 देखें.

Android पर SPIR-V की पुष्टि करने की सुविधा डिफ़ॉल्ट रूप से चालू होती है. इससे सुरक्षा की एक अतिरिक्त लेयर मिलती है. साथ ही, गलत तरीके से दिए गए इनपुट की वजह से ड्राइवर के काम न करने की समस्या को रोका जा सकता है. समस्या 473526182 देखें.

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

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

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

Chrome 146

Chrome 145

Chrome का वर्शन 144

Chrome 143

Chrome 142

Chrome 141

Chrome 140

Chrome 139

Chrome 138

Chrome 137

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