रीड-ओनली और रीड-राइट स्टोरेज टेक्सचर
स्टोरेज टेक्सचर बाइंडिंग टाइप की मदद से, शेडर 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 का इस्तेमाल करें. इससे, कोड को पोर्ट न किए जाने की संभावना के बारे में पता चलता है. यह उदाहरण देखें और issue 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, वेब वर्कर्स की सुविधा को अगले लेवल पर ले जाता है. अब यह सेवा वर्कर्स और शेयर किए गए वर्कर्स, दोनों के लिए काम करता है. बैकग्राउंड टास्क और ऑफ़लाइन सुविधाओं को बेहतर बनाने के लिए, सर्विस वर्कर का इस्तेमाल किया जा सकता है. साथ ही, सभी स्क्रिप्ट में संसाधनों को बेहतर तरीके से शेयर करने के लिए, शेयर किए गए वर्कर का इस्तेमाल किया जा सकता है. issue chromium:41494731 देखें.
एक्सटेंशन सेवा वर्कर में WebGPU का इस्तेमाल करने का तरीका जानने के लिए, Chrome एक्सटेंशन का सैंपल और WebLLM Chrome एक्सटेंशन देखें.
अडैप्टर की जानकारी देने वाले नए एट्रिब्यूट
अगर उपयोगकर्ता ने chrome://flags/#enable-webgpu-developer-features
पर "WebGPU डेवलपर सुविधाएं" फ़्लैग चालू किया है, तो अब requestAdapterInfo()
को कॉल करने पर, अडैप्टर की जानकारी वाले नॉन-स्टैंडर्ड d3dShaderModel
और vkDriverVersion
एट्रिब्यूट उपलब्ध होंगे. यह सुविधा कब काम करती है:
d3dShaderModel
, D3D शेडर मॉडल का ज़्यादा से ज़्यादा नंबर है. उदाहरण के लिए, 62 की वैल्यू से पता चलता है कि मौजूदा ड्राइवर, HLSL SM 6.2 के साथ काम करता है. दस्तावेज़ और समस्या का आईडी:1254 देखें.vkDriverVersion
, Vulkan ड्राइवर का वेंडर तय किया गया वर्शन नंबर है. दस्तावेज़ और समस्या chromium:327457605 देखें.
गड़बड़ी ठीक की गई
layout: "auto"
का इस्तेमाल करके, मैच करने वाले बंड ग्रुप वाली दो पाइपलाइन बनाना. इसके बाद, पहली पाइपलाइन के साथ बंड ग्रुप बनाना और दूसरी पाइपलाइन पर उसका इस्तेमाल करना. इससे, अब GPUValidationError दिखता है. इसे अनुमति देने की सुविधा लागू करने में एक गड़बड़ी थी. इसे अब सही टेस्ट की मदद से ठीक कर दिया गया है. issue dawn:2402 देखें.
Dawn के बारे में अपडेट
Dawn API में, wgpuDeviceSetUncapturedErrorCallback
के साथ सेट किया गया गड़बड़ी का वह कॉलबैक जो कैप्चर नहीं किया गया है उसे अब जीपीयू डिवाइस के खो जाने के बाद नहीं बुलाया जाता. इस सुधार से, Dawn को JavaScript एपीआई स्पेसिफ़िकेशन और Blink के लागू होने के साथ अलाइन किया जाता है. issue dawn:2459 देखें.
इसमें सिर्फ़ कुछ खास हाइलाइट शामिल हैं. कमिट की पूरी सूची देखें.
WebGPU में नया क्या है
WebGPU में नया क्या है सीरीज़ में शामिल सभी चीज़ों की सूची.
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
copyExternalImageToTexture()
में HTMLImageElement और ImageData की सुविधा- रीड-राइट और रीड-ओनली स्टोरेज टेक्स्चर के लिए, एक्सपेरिमेंट के तौर पर उपलब्ध सहायता
- Dawn से जुड़े अपडेट
Chrome 117
- वर्टिक्स बफ़र को अनसेट करना
- बाइंड किए गए ग्रुप को अनसेट करना
- डिवाइस खो जाने पर, असाइनमेंट के लिए असाइनमेंट पाइपलाइन बनाने से जुड़ी गड़बड़ियों को रोकना
- SPIR-V शेडर मॉड्यूल बनाने से जुड़े अपडेट
- डेवलपर के अनुभव को बेहतर बनाना
- अपने-आप जनरेट हुए लेआउट की मदद से, पाइपलाइन को कैश मेमोरी में सेव करना
- Dawn से जुड़े अपडेट
Chrome 116
- WebCodecs इंटिग्रेशन
- GPUAdapter
requestDevice()
से खोया हुआ डिवाइस वापस मिलना importExternalTexture()
को कॉल करने पर, वीडियो चलाने की सुविधा को बिना रुकावट के जारी रखना- स्पेसिफ़िकेशन के मुताबिक होना
- डेवलपर के अनुभव को बेहतर बनाना
- Dawn से जुड़े अपडेट
Chrome 115
- WGSL भाषा के इस्तेमाल किए जा सकने वाले एक्सटेंशन
- Direct3D 11 के लिए एक्सपेरिमेंटल सपोर्ट
- AC पावर पर डिफ़ॉल्ट रूप से डिसक्रेट जीपीयू पाना
- डेवलपर के अनुभव को बेहतर बनाना
- Dawn से जुड़े अपडेट
Chrome 114
- Optimize JavaScript
- बिना कॉन्फ़िगर किए गए कैनवस पर getCurrentTexture() से InvalidStateError मिलता है
- WGSL से जुड़े अपडेट
- Dawn से जुड़े अपडेट