सबग्रुप के साथ प्रयोग करना
सबग्रुप की सुविधा से, SIMD-लेवल पर पैरललिज़्म की सुविधा मिलती है. इससे, किसी ग्रुप में मौजूद थ्रेड एक-दूसरे से कम्यूनिकेट कर सकते हैं और एक साथ मिलकर गणित की कार्रवाइयां कर सकते हैं. जैसे, 16 नंबरों का योग निकालना. इससे, थ्रेड के बीच डेटा शेयर करने का एक बहुत ही असरदार तरीका मिलता है.
ऑरिजिन ट्रायल के लिए साइन अप करके, अपनी साइट पर असली उपयोगकर्ताओं के साथ सबग्रुप आज़माए जा सकते हैं. ऑरिजिन ट्रायल का इस्तेमाल करने के लिए, अपनी साइट को तैयार करने के निर्देशों के लिए, ऑरिजिन ट्रायल का इस्तेमाल शुरू करना लेख पढ़ें. ऑरिजिन ट्रायल, Chrome के वर्शन 128 से 131 तक चलेगा. यह 19 फ़रवरी, 2025 को खत्म होगा. एक्सपेरिमेंट करने के इरादे के बारे में जानकारी देखें.
जब "subgroups" सुविधा GPUAdapter में उपलब्ध हो, तो WGSL में सबग्रुप की सुविधा पाने के लिए इस सुविधा के साथ GPUDevice का अनुरोध करें. साथ ही, इसकी minSubgroupSize और maxSubgroupSize की सीमाओं की जांच करें.
आपको enable subgroups; के साथ, अपने WGSL कोड में इस एक्सटेंशन को साफ़ तौर पर चालू भी करना होगा. इसे चालू करने पर, आपको ये सुविधाएं मिलती हैं:
subgroup_invocation_id: यह सबग्रुप में मौजूद थ्रेड के इंडेक्स के लिए, पहले से मौजूद वैल्यू है.subgroup_size: यह सबग्रुप के साइज़ को ऐक्सेस करने के लिए, पहले से मौजूद वैल्यू है.subgroupBallot(value): यह बिट फ़ील्ड का एक सेट दिखाता है. इसमें,subgroup_invocation_idसे जुड़ी बिट की वैल्यू 1 होती है. ऐसा तब होता है, जब उस ऐक्टिव इनवोकेशन के लिएvalueसही हो. इसके अलावा, इसकी वैल्यू 0 होती है.subgroupBroadcast(value, id): यहsubgroup_invocation_idके साथ इनवोकेशन सेvalueको ब्रॉडकास्ट करता है. यहidसे मेल खाता है. साथ ही, इसे सबग्रुप में मौजूद सभी इनवोकेशन पर ब्रॉडकास्ट करता है. ध्यान दें:idको कंपाइल-टाइम कॉन्स्टैंट होना चाहिए.
भविष्य में, subgroupAdd, subgroupAll, subgroupElect, subgroupShuffle जैसे और भी पहले से मौजूद फ़ंक्शन जोड़े जाएंगे. समस्या 354738715 देखें.
सबग्रुप की कार्रवाइयों में f16 की अनुमति देने के लिए, GPUDevice को "subgroups", "subgroups-f16", और "shader-f16" सुविधाओं के साथ अनुरोध करें. इसके बाद, अपने WGSL कोड में enable f16, subgroups, subgroups_f16; के साथ इसे चालू करें.
नीचे दिया गया कोड स्निपेट, सबग्रुप की संभावनाओं को समझने और उनके साथ एक्सपेरिमेंट करने के लिए एक बेस उपलब्ध कराता है.
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("subgroups")) {
throw new Error("Subgroups support is not available");
}
// Explicitly request subgroups support.
const device = await adapter.requestDevice({
requiredFeatures: ["subgroups"],
});
const shaderModule = device.createShaderModule({ code: `
enable subgroups;
var<workgroup> wgmem : u32;
@group(0) @binding(0)
var<storage, read> inputs : array<u32>;
@group(0) @binding(1)
var<storage, read_write> output : array<u32>;
@compute @workgroup_size(64)
fn main(@builtin(subgroup_size) subgroupSize : u32,
@builtin(subgroup_invocation_id) id : u32,
@builtin(local_invocation_index) lid : u32) {
// One thread per workgroup writes the value to workgroup memory.
if (lid == 0) {
wgmem = inputs[lid];
}
workgroupBarrier();
var v = 0u;
// One thread per subgroup reads the value from workgroup memory
// and shares that value with every other thread in the subgroup
// to reduce local memory bandwidth.
if (id == 0) {
v = wgmem;
}
v = subgroupBroadcast(v, 0);
output[lid] = v;
}`,
});
// Send the appropriate commands to the GPU...
लाइनों और पॉइंट के लिए, डेप्थ बायस सेट करने की सुविधा को बंद करना
WebGPU की खास जानकारी में किए गए बदलाव के मुताबिक, रेंडर पाइपलाइन के लिए टोपोलॉजी, लाइन या पॉइंट टाइप होने पर, depthBias, depthBiasSlopeScale, और depthBiasClamp को नॉन-ज़ीरो वैल्यू पर सेट करना, पुष्टि करने में गड़बड़ी मानी जाती है. डेवलपर को अपना कोड अपडेट करने के लिए, DevTools कंसोल में इस आने वाली पुष्टि के बारे में एक चेतावनी दिखाई जाती है. साथ ही, इन स्थितियों में वैल्यू को 0 पर सेट किया जाता है. समस्या 352567424 देखें.
preventDefault का इस्तेमाल करने पर, DevTools में कैप्चर न की गई गड़बड़ी की चेतावनी न दिखाएं
अगर uncapturederror के लिए कोई इवेंट लिसनर रजिस्टर किया गया है और इवेंट लिसनर कॉलबैक में, इवेंट preventDefault() तरीके को कॉल किया गया है, तो DevTools कंसोल में uncapturederror इवेंट के लिए चेतावनियां नहीं दिखेंगी. यह व्यवहार, JavaScript में इवेंट हैंडलिंग से मेल खाता है. यहां दिया गया उदाहरण और समस्या 40263619 देखें.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
device.addEventListener("uncapturederror", (event) => {
// Prevents browser warning to show up in the DevTools Console.
event.preventDefault();
// TODO: Handle event.error
});
WGSL में इंटरपोलेट सैंपलिंग, फ़र्स्ट और आइदर
WGSL का interpolate एट्रिब्यूट, उपयोगकर्ता के तय किए गए आईओ डेटा इंटरपोलेशन को मैनेज करने की सुविधा देता है. अब, इंटरपोलेट सैंपलिंग के नए पैरामीटर first (डिफ़ॉल्ट) और either आपको ज़्यादा कंट्रोल देते हैं: first प्रिमिटिव के पहले वर्टेक्स से वैल्यू का इस्तेमाल करता है, जबकि either पहले या आखिरी वर्टेक्स का इस्तेमाल करने की अनुमति देता है. समस्या 340278447 देखें.
Dawn से जुड़े अपडेट
एसिंक्रोनस कार्रवाइयों को हैंडल करने के लिए, Dawn के WGPUFuture को लागू करने की प्रोसेस अब पूरी हो गई है. मुख्य कॉन्सेप्ट में, मौके के हिसाब से इवेंट प्रोसेसिंग के लिए wgpuInstanceProcessEvents और कॉलबैक की जगहें तय करने के लिए WGPUCallbackMode शामिल हैं. WGPUFuture, एक बार होने वाले इवेंट को दिखाता है. इसकी लाइफ़टाइम की कोई सीमा नहीं होती. वहीं, wgpuInstanceWaitAny, किसी भी फ़्यूचर या टाइम आउट के पूरा होने का इंतज़ार करता है. समस्या 42240932 देखें.
Surface::GetCapabilities() अब CompositeAlphaMode::Auto वैल्यू की रिपोर्ट नहीं करता. यह अब भी मान्य है और Surface::GetCapabilities().alphaMode[0] के बराबर है. समस्या 292 देखें.
OpenGL बैकएंड अब हर Present() कॉल के लिए, y-फ़्लिप ब्लिट के साथ Surface को सपोर्ट करता है. समस्या 344814083 देखें.
Adapter::GetProperties() तरीके को अब इस्तेमाल नहीं किया जा सकता. इसके बजाय, Adapter::GetInfo() का इस्तेमाल करें.
बाहर से योगदान देने वाले जसवंत ने, CMake की सभी फ़ाइलें फिर से लिखी हैं. इससे उन्हें अपडेट करना आसान हो गया है और प्री-बिल्ड की अनुमति मिल गई है. CMake प्रोजेक्ट में Dawn का इस्तेमाल करने के लिए, आसानी से सीखें गाइड देखें.
इसमें सिर्फ़ कुछ मुख्य हाइलाइट शामिल हैं. कमिट की पूरी सूची देखें.
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
- बीसी और एएसटीसी कंप्रेस किए गए फ़ॉर्मैट के लिए, 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 से जुड़े अपडेट