रीड-ओनली और रीड-राइट स्टोरेज टेक्सचर
स्टोरेज टेक्सचर बाइंडिंग टाइप की मदद से, शेडर, स्टोरेज टेक्सचर से पढ़ सकते हैं. इसके लिए, TEXTURE_BINDING का इस्तेमाल करने की ज़रूरत नहीं होती. साथ ही, कुछ फ़ॉर्मैट पर रीड और राइट, दोनों तरह के ऑपरेशन किए जा सकते हैं. अगर navigator.gpu.wgslLanguageFeatures में "readonly_and_readwrite_storage_textures" WGSL भाषा एक्सटेंशन मौजूद है, तो अब बाइंड ग्रुप लेआउट बनाते समय, GPUStorageTexture ऐक्सेस को "read-write" या "read-only" पर सेट किया जा सकता है. पहले, यह सुविधा सिर्फ़ "write-only" के लिए उपलब्ध थी.
इसके बाद, आपका WGSL शेडर कोड, स्टोरेज टेक्सचर के लिए read_write और read ऐक्सेस क्वालिफ़ायर का इस्तेमाल कर सकता है. साथ ही, textureLoad() और textureStore() के बिल्ट-इन फ़ंक्शन भी उसी के मुताबिक काम करते हैं. इसके अलावा, वर्कग्रुप में टेक्सचर मेमोरी ऐक्सेस को सिंक करने के लिए, textureBarrier() नाम का नया बिल्ट-इन फ़ंक्शन उपलब्ध है.
हमारा सुझाव है कि अपने WGSL शेडर कोड में सबसे ऊपर, requires readonly_and_readwrite_storage_textures; के साथ requires-directive का इस्तेमाल करें. इससे, कोड को अलग-अलग प्लैटफ़ॉर्म पर पोर्ट करने में आने वाली संभावित समस्याओं के बारे में पता चलता है. यहां दिया गया उदाहरण और dawn:1972 से जुड़ी समस्या देखें.
if (!navigator.gpu.wgslLanguageFeatures.has("readonly_and_readwrite_storage_textures")) {
throw new Error("Read-only and read-write storage textures are not available");
}
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const bindGroupLayout = device.createBindGroupLayout({
entries: [{
binding: 0,
visibility: GPUShaderStage.COMPUTE,
storageTexture: {
access: "read-write", // <-- New!
format: "r32uint",
},
}],
});
const shaderModule = device.createShaderModule({ code: `
requires readonly_and_readwrite_storage_textures;
@group(0) @binding(0) var tex : texture_storage_2d<r32uint, read_write>;
@compute @workgroup_size(1, 1)
fn main(@builtin(local_invocation_id) local_id: vec3u) {
var data = textureLoad(tex, vec2i(local_id.xy));
data.x *= 2;
textureStore(tex, vec2i(local_id.xy), data);
}`
});
// You can now create a compute pipeline with this shader module and
// send the appropriate commands to the GPU.
सर्विस वर्कर और शेयर किए गए वर्कर की सुविधा
Chrome में WebGPU, वेब वर्कर की सुविधा को अगले लेवल पर ले जाता है. अब यह सर्विस वर्कर और शेयर किए गए वर्कर, दोनों के साथ काम करता है. बैकग्राउंड में होने वाले टास्क और ऑफ़लाइन सुविधाओं को बेहतर बनाने के लिए, सर्विस वर्कर का इस्तेमाल किया जा सकता है. वहीं, स्क्रिप्ट के बीच संसाधनों को बेहतर तरीके से शेयर करने के लिए, शेयर किए गए वर्कर का इस्तेमाल किया जा सकता है. chromium:41494731 से जुड़ी समस्या देखें.
एक्सटेंशन सर्विस वर्कर में WebGPU का इस्तेमाल करने का तरीका जानने के लिए, Chrome एक्सटेंशन का सैंपल और WebLLM Chrome एक्सटेंशन देखें.
ऐडैप्टर की जानकारी के नए एट्रिब्यूट
अगर उपयोगकर्ता ने chrome://flags/#enable-webgpu-developer-features पर जाकर, "WebGPU डेवलपर सुविधाएं" फ़्लैग चालू किया है, तो requestAdapterInfo() को कॉल करने पर, नॉन-स्टैंडर्ड d3dShaderModel और vkDriverVersion ऐडैप्टर की जानकारी के एट्रिब्यूट अब उपलब्ध हैं. अगर ये एट्रिब्यूट काम करते हैं, तो:
d3dShaderModel, D3D शेडर मॉडल का वह नंबर है जो ज़्यादा से ज़्यादा काम कर सकता है. उदाहरण के लिए, वैल्यू 62 से पता चलता है कि मौजूदा ड्राइवर, HLSL SM 6.2 के साथ काम करता है. दस्तावेज़ और dawn:1254 से जुड़ी समस्या देखें.vkDriverVersion, Vulkan ड्राइवर का वह वर्शन नंबर है जो वेंडर ने तय किया है. दस्तावेज़ और chromium:327457605 से जुड़ी समस्या देखें.
vkDriverVersion दिखाया गया है.गड़बड़ियां ठीक की गईं
layout: "auto" का इस्तेमाल करके, मैचिंग बाइंडग्रुप वाले दो पाइपलाइन बनाने पर, पहले पाइपलाइन के साथ बाइंडग्रुप बनाया जाता है. इसके बाद, दूसरे पाइपलाइन पर इसका इस्तेमाल करने पर, अब GPUValidationError दिखता है. पहले, ऐसा करने की अनुमति थी. हालांकि, यह एक गड़बड़ी थी. इसे अब ठीक कर दिया गया है. साथ ही, इसके लिए सही टेस्ट भी किए गए हैं. dawn:2402 से जुड़ी समस्या देखें.
Dawn से जुड़े अपडेट
Dawn API में, wgpuDeviceSetUncapturedErrorCallback के साथ सेट किया गया, अनकैप्चर की गई गड़बड़ी का कॉलबैक अब जीपीयू डिवाइस के बंद होने के बाद कॉल नहीं किया जाता. इस सुधार की मदद से, Dawn को JavaScript API की खास जानकारी और Blink के लागू करने के तरीके के मुताबिक बनाया गया है. dawn:2459 से जुड़ी समस्या देखें.
इसमें सिर्फ़ कुछ ज़रूरी हाइलाइट शामिल हैं. कमिट की पूरी सूची देखें.
WebGPU में नया क्या है
WebGPU में नया क्या है सीरीज़ में शामिल सभी चीज़ों की सूची.
Chrome का वर्शन 147-148
Chrome का वर्शन 146
- OpenGL ES 3.1 पर WebGPU कंपैटबिलटी मोड की सुविधा
- ट्रांज़िएंट अटैचमेंट
- WGSL texture_and_sampler_let एक्सटेंशन
- Dawn से जुड़े अपडेट
Chrome का वर्शन 145
- WGSL subgroup_uniformity एक्सटेंशन
- वर्कर में, सिंक्रोनस बफ़र मैपिंग की एक्सपेरिमेंटल सुविधा
- Dawn से जुड़े अपडेट
Chrome का वर्शन 144
- WGSL subgroup_id एक्सटेंशन
- WGSL uniform_buffer_standard_layout एक्सटेंशन
- Linux पर WebGPU
- writeBuffer और writeTexture की सुविधा पहले से ज़्यादा तेज़
- Dawn से जुड़े अपडेट
Chrome का वर्शन 143
- टेक्सचर कॉम्पोनेंट स्विज़ल
- bgra8unorm रीड-ओनली स्टोरेज टेक्सचर के इस्तेमाल की सुविधा हटाना
- Dawn से जुड़े अपडेट
Chrome का वर्शन 142
Chrome का वर्शन 141
- Tint IR पूरा हुआ
- WGSL कंपाइलर में इंटिजर रेंज का विश्लेषण
- Vulkan बैकएंड के लिए SPIR-V 1.4 अपडेट
- Dawn से जुड़े अपडेट
Chrome का वर्शन 140
- डिवाइस के अनुरोधों में ऐडैप्टर का इस्तेमाल
- टेक्सचर का इस्तेमाल करने के लिए शॉर्टहैंड, जहां टेक्सचर व्यू का इस्तेमाल किया जाता है
- WGSL textureSampleLevel, 1D टेक्सचर के साथ काम करता है
- bgra8unorm रीड-ओनली स्टोरेज टेक्सचर के इस्तेमाल की सुविधा बंद करना
- GPUAdapter isFallbackAdapter एट्रिब्यूट हटाना
- Dawn से जुड़े अपडेट
Chrome का वर्शन 139
- BC और ASTC कंप्रेस किए गए फ़ॉर्मैट के लिए, 3D टेक्सचर की सुविधा
- "कोर-फ़ीचर-एंड-लिमिट" नाम की नई सुविधा
- WebGPU कंपैटबिलटी मोड के लिए ऑरिजिन ट्रायल
- Dawn से जुड़े अपडेट
Chrome का वर्शन 138
- बफ़र को बाइंडिंग रिसोर्स के तौर पर इस्तेमाल करने के लिए शॉर्टहैंड
- बनाते समय मैप किए गए बफ़र के साइज़ की ज़रूरी शर्तों में बदलाव
- हाल ही में लॉन्च हुए जीपीयू के लिए आर्किटेक्चर रिपोर्ट
- GPUAdapter isFallbackAdapter एट्रिब्यूट बंद करना
- Dawn से जुड़े अपडेट
Chrome का वर्शन 137
- externalTexture बाइंडिंग के लिए टेक्सचर व्यू का इस्तेमाल करना
- ऑफ़सेट और साइज़ तय किए बिना बफ़र कॉपी करना
- एटॉमिक के लिए पॉइंटर का इस्तेमाल करके, WGSL workgroupUniformLoad
- GPUAdapterInfo powerPreference एट्रिब्यूट
- GPURequestAdapterOptions compatibilityMode एट्रिब्यूट हटाना
- Dawn से जुड़े अपडेट
Chrome का वर्शन 136
- GPUAdapterInfo isFallbackAdapter एट्रिब्यूट
- D3D12 पर शेडर कंपाइल करने में लगने वाले समय में सुधार
- कैनवस इमेज सेव और कॉपी करना
- कंपैटबिलटी मोड की पाबंदियां हटाना
- Dawn से जुड़े अपडेट
Chrome का वर्शन 135
- नल बाइंड ग्रुप लेआउट के साथ पाइपलाइन लेआउट बनाने की अनुमति देना
- व्यू पोर्ट को रेंडर टारगेट की सीमाओं से आगे बढ़ाने की अनुमति देना
- Android पर, कंपैटबिलटी मोड की एक्सपेरिमेंटल सुविधा को आसानी से ऐक्सेस करना
- maxInterStageShaderComponents की सीमा हटाना
- Dawn से जुड़े अपडेट
Chrome का वर्शन 134
- सबग्रुप की मदद से, मशीन लर्निंग के वर्कलोड को बेहतर बनाना
- फ़्लोट फ़िल्टर किए जा सकने वाले टेक्सचर टाइप की सुविधा हटाना
- Dawn से जुड़े अपडेट
Chrome का वर्शन 133
- unorm8x4-bgra और 1-कॉम्पोनेंट वर्टेक्स फ़ॉर्मैट की अतिरिक्त सुविधा
- अनडिफ़ाइंड वैल्यू के साथ, अज्ञात सीमाओं का अनुरोध करने की अनुमति देना
- WGSL अलाइनमेंट के नियमों में बदलाव
- WGSL में, डिस्कार्ड की मदद से परफ़ॉर्मेंस बेहतर करना
- बाहरी टेक्सचर के लिए, VideoFrame displaySize का इस्तेमाल करना
- copyExternalImageToTexture का इस्तेमाल करके, डिफ़ॉल्ट ओरिएंटेशन के अलावा अन्य ओरिएंटेशन वाली इमेज को मैनेज करना
- डेवलपर के लिए बेहतर अनुभव
- featureLevel के साथ कंपैटबिलटी मोड की सुविधा चालू करना
- एक्सपेरिमेंटल सबग्रुप की सुविधाओं को साफ़ करना
- maxInterStageShaderComponents की सीमा बंद करना
- Dawn से जुड़े अपडेट
Chrome का वर्शन 132
- टेक्सचर व्यू का इस्तेमाल
- 32-बिट फ़्लोट टेक्सचर ब्लेंड करना
- GPUDevice adapterInfo एट्रिब्यूट
- अमान्य फ़ॉर्मैट के साथ कैनवस कॉन्टेक्स्ट कॉन्फ़िगर करने पर, JavaScript से जुड़ी गड़बड़ी दिखना
- टेक्सचर पर फ़िल्टरिंग सैंपलर की पाबंदियां
- सबग्रुप के साथ एक्सपेरिमेंट की सुविधा का दायरा बढ़ाना
- डेवलपर के लिए बेहतर अनुभव
- 16-बिट नॉर्मलाइज़्ड टेक्सचर फ़ॉर्मैट के लिए एक्सपेरिमेंटल सुविधा
- Dawn से जुड़े अपडेट
Chrome का वर्शन 131
- WGSL में क्लिप डिस्टैंस
- GPUCanvasContext getConfiguration()
- पॉइंट और लाइन प्रिमिटिव में डेप्थ बायस नहीं होना चाहिए
- सबग्रुप के लिए, बिल्ट-इन फ़ंक्शन को शामिल करके स्कैन करना
- मल्टी-ड्रॉ इनडायरेक्ट के लिए एक्सपेरिमेंटल सुविधा
- शेयर मॉड्यूल कंपाइलेशन विकल्प, स्ट्रिक्ट मैथ
- GPUAdapter requestAdapterInfo() हटाना
- Dawn से जुड़े अपडेट
Chrome का वर्शन 130
- डुअल सोर्स ब्लेंडिंग
- Metal पर शेडर कंपाइल करने में लगने वाले समय में सुधार
- GPUAdapter requestAdapterInfo() की सुविधा बंद करना
- Dawn से जुड़े अपडेट
Chrome का वर्शन 129
Chrome का वर्शन 128
- सबग्रुप के साथ एक्सपेरिमेंट करना
- लाइनों और पॉइंट के लिए डेप्थ बायस सेट करने की सुविधा बंद करना
- preventDefault का इस्तेमाल करने पर, DevTools में अनकैप्चर की गई गड़बड़ी की चेतावनी न दिखाना
- WGSL इंटरपोलेट सैंपलिंग फ़र्स्ट और आइदर
- Dawn से जुड़े अपडेट
Chrome का वर्शन 127
- Android पर OpenGL ES के लिए एक्सपेरिमेंटल सुविधा
- GPUAdapter info एट्रिब्यूट
- WebAssembly इंटरऑप में सुधार
- कमांड एनकोडर की गड़बड़ियों में सुधार
- Dawn से जुड़े अपडेट
Chrome का वर्शन 126
- maxTextureArrayLayers की सीमा बढ़ाना
- Vulkan बैकएंड के लिए बफ़र अपलोड ऑप्टिमाइज़ेशन
- शेयर कंपाइल करने में लगने वाले समय में सुधार
- सबमिट किए गए कमांड बफ़र यूनीक होने चाहिए
- Dawn से जुड़े अपडेट
Chrome का वर्शन 125
Chrome का वर्शन 124
- रीड-ओनली और रीड-राइट स्टोरेज टेक्सचर
- सर्विस वर्कर और शेयर किए गए वर्कर की सुविधा
- ऐडैप्टर की जानकारी के नए एट्रिब्यूट
- गड़बड़ियां ठीक की गईं
- Dawn से जुड़े अपडेट
Chrome का वर्शन 123
- WGSL में DP4a बिल्ट-इन फ़ंक्शन की सुविधा
- WGSL में, पॉइंटर पैरामीटर पर कोई पाबंदी नहीं
- WGSL में, डीरेफ़रंसिंग कंपोज़िट के लिए सिंटैक्स शुगर
- स्टेंसिल और डेप्थ ऐस्पेक्ट के लिए, रीड-ओनली स्टेट अलग-अलग
- Dawn से जुड़े अपडेट
Chrome का वर्शन 122
- कंपैटबिलटी मोड की मदद से पहुंच बढ़ाना (डेवलपमेंट में मौजूद सुविधा)
- maxVertexAttributes की सीमा बढ़ाना
- Dawn से जुड़े अपडेट
Chrome का वर्शन 121
- Android पर WebGPU की सुविधा
- Windows पर शेडर कंपाइल करने के लिए, FXC के बजाय DXC का इस्तेमाल करना
- कंप्यूट और रेंडर पास में टाइमस्टैंप क्वेरी
- शेयर मॉड्यूल के लिए डिफ़ॉल्ट एंट्री पॉइंट
- GPUExternalTexture कलर स्पेस के तौर पर, display-p3 की सुविधा
- मेमोरी हीप की जानकारी
- Dawn से जुड़े अपडेट
Chrome का वर्शन 120
- WGSL में, 16-बिट फ़्लोटिंग-पॉइंट वैल्यू की सुविधा
- सीमाएं बढ़ाना
- डेप्थ-स्टेंसिल स्टेट में बदलाव
- ऐडैप्टर की जानकारी के अपडेट
- टाइमस्टैंप क्वेरी क्वॉन्टाइज़ेशन
- स्प्रिंग-क्लीनिंग की सुविधाएं
Chrome का वर्शन 119
- फ़िल्टर किए जा सकने वाले 32-बिट फ़्लोट टेक्सचर
- unorm10-10-10-2 वर्टेक्स फ़ॉर्मैट
- rgb10a2uint टेक्सचर फ़ॉर्मैट
- Dawn से जुड़े अपडेट
Chrome का वर्शन 118
- HTMLImageElement और ImageData की सुविधा
copyExternalImageToTexture()में - रीड-राइट और रीड-ओनली स्टोरेज टेक्सचर के लिए एक्सपेरिमेंटल सुविधा
- Dawn से जुड़े अपडेट
Chrome का वर्शन 117
- वर्टेक्स बफ़र को अनसेट करना
- बाइंड ग्रुप को अनसेट करना
- डिवाइस के बंद होने पर, एसिंक्रोनस पाइपलाइन बनाने से जुड़ी गड़बड़ियों को न दिखाना
- SPIR-V शेडर मॉड्यूल बनाने से जुड़े अपडेट
- डेवलपर के लिए बेहतर अनुभव
- अपने-आप जनरेट होने वाले लेआउट के साथ पाइपलाइन को कैश मेमोरी में सेव करना
- Dawn से जुड़े अपडेट
Chrome का वर्शन 116
- WebCodecs इंटिग्रेशन
- GPUAdapter
requestDevice()से बंद किया गया डिवाइस वापस मिलना importExternalTexture()को कॉल करने पर, वीडियो प्लेबैक को स्मूद रखना- खास जानकारी के मुताबिक काम करना
- डेवलपर के लिए बेहतर अनुभव
- Dawn से जुड़े अपडेट
Chrome का वर्शन 115
- WGSL भाषा के एक्सटेंशन की सुविधा
- Direct3D 11 के लिए एक्सपेरिमेंटल सुविधा
- एसी पावर पर, डिफ़ॉल्ट रूप से अलग जीपीयू पाना
- डेवलपर के लिए बेहतर अनुभव
- Dawn से जुड़े अपडेट
Chrome का वर्शन 114
- JavaScript को ऑप्टिमाइज़ करना
- कॉन्फ़िगर नहीं किए गए कैनवस पर getCurrentTexture() का इस्तेमाल करने पर, InvalidStateError दिखना
- WGSL से जुड़े अपडेट
- Dawn से जुड़े अपडेट