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

François Beaufort
François Beaufort

पब्लिश किया गया: 25 फ़रवरी, 2026

OpenGL ES 3.1 पर WebGPU कंपैटबिलटी मोड की सुविधा

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

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

कई वेब ऐप्लिकेशन के लिए, कंपैटबिलटी मोड चालू किया जा सकता है. इसके लिए, featureLevel: "compatibility" को कॉल करते समय, requestAdapter() पास करें. अगर आपका डिवाइस, Core WebGPU के साथ काम करता है, तो Chrome, Core के साथ काम करने वाला अडैप्टर दिखाएगा. हालांकि, आपका वेब ऐप्लिकेशन, कंपैटबिलटी की सीमाओं में ही काम करेगा. ऐसा तब तक होगा, जब तक वह "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 फ़्लैग का इस्तेमाल किया जा सकता है. इससे, रेंडर पास के ऑपरेशन, टाइल मेमोरी में ही रहते हैं. इससे VRAM ट्रैफ़िक से बचा जा सकता है और टेक्सचर के लिए VRAM के ऐलोकेशन से भी बचा जा सकता है.

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

यहां दिए गए उदाहरण में, ट्रांज़िएंट टेक्सचर बनाने का तरीका बताया गया है.

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 और शिप करने के इरादे के बारे में पढ़ें.

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);
}

Dawn से जुड़े अपडेट

यहां नई सीमाएं उपलब्ध हैं:

  • maxStorageBuffersPerShaderStage में ज़्यादा से ज़्यादा 16 बफ़र इस्तेमाल किए जा सकते हैं. समस्या 366151398 देखें.

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

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

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

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

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

Chrome का वर्शन 147-148

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