रीड-ओनली और रीड-राइट स्टोरेज टेक्सचर
स्टोरेज टेक्सचर बाइंडिंग टाइप, शेडर को स्टोरेज टेक्सचर से पढ़ने की अनुमति देता है. इसके लिए, उन्हें 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;
के साथ गैर-पोर्टेबिलिटी की संभावना का संकेत देने के लिए, ज़रूरी-निर्देश वाला का इस्तेमाल करें. यह उदाहरण देखें और 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 के बारे में अपडेट
Down 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
- सबग्रुप के साथ प्रयोग करना
- लाइनों और पॉइंट के लिए डेप्थ बायस की सेटिंग को बंद करना
- AllowDefault होने पर, कैप्चर नहीं की गई गड़बड़ी की चेतावनी को छिपाएं
- 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 टेक्सचर फ़ॉर्मैट
- डॉन से जुड़े अपडेट
Chrome 118
copyExternalImageToTexture()
में HTMLImageElement और ImageData सहायता- रीड-ओनली और रीड-ओनली स्टोरेज टेक्स्चर के लिए एक्सपेरिमेंट के तौर पर उपलब्ध सहायता
- Dawn से जुड़े अपडेट
Chrome 117
- वर्टिक्स बफ़र को अनसेट करना
- बाइंड किए गए ग्रुप को अनसेट करना
- डिवाइस खो जाने पर, एक साथ काम न करने वाली पाइपलाइन बनाने की वजह से होने वाली गड़बड़ियों की आवाज़ बंद करना
- SPIR-V शेडर मॉड्यूल बनाने से जुड़े अपडेट
- डेवलपर के अनुभव को बेहतर बनाना
- अपने-आप जनरेट हुए लेआउट की मदद से, पाइपलाइन को कैश मेमोरी में सेव करना
- Dawn से जुड़े अपडेट
Chrome 116
- WebCodecs इंटिग्रेशन
- GPAdapter
requestDevice()
से खोया हुआ डिवाइस लौटाया गया importExternalTexture()
को कॉल करने पर, वीडियो चलाने की सुविधा को बिना रुकावट के जारी रखना- स्पेसिफ़िकेशन के मुताबिक होना
- डेवलपर के अनुभव को बेहतर बनाना
- Dawn से जुड़े अपडेट
Chrome 115
- WGSL भाषा के इस्तेमाल किए जा सकने वाले एक्सटेंशन
- Direct3D 11 के लिए एक्सपेरिमेंट के तौर पर उपलब्ध सहायता
- AC पावर पर डिफ़ॉल्ट रूप से डिसक्रेट जीपीयू पाना
- डेवलपर के अनुभव को बेहतर बनाना
- Dawn से जुड़े अपडेट
Chrome 114
- JavaScript को ऑप्टिमाइज़ करना
- कॉन्फ़िगर नहीं किए गए कैनवस पर getCurrentTexture() से अमान्य स्थिति गड़बड़ी मिलती है
- WGSL से जुड़े अपडेट
- Dawn से जुड़े अपडेट