पब्लिश किया गया: 26 मई, 2025
externalTexture बाइंडिंग के लिए, टेक्स्चर व्यू का इस्तेमाल करना
अब GPUBindGroup बनाते समय, GPUExternalTexture बाइंडिंग की जगह, GPUTextureView (2D, सिंगल सबरिसॉर्स) का इस्तेमाल किया जा सकता है. हालांकि, इसके लिए ज़रूरी है कि वह GPUTextureView, WebGPU के साथ काम करता हो.
इससे, वीडियो इफ़ेक्ट पाइपलाइन में शेडर लॉजिक आसान हो जाता है. ऐसा इसलिए, क्योंकि इसमें GPUExternalTexture (सोर्स वीडियो के लिए) और GPUTextureView (इंटरमीडिएट प्रोसेसिंग के लिए), दोनों को मैनेज करना होता है. साथ ही, इससे टेक्स्चर के सोर्स के हिसाब से, शेडर को डाइनैमिक तरीके से कंपाइल करने की ज़रूरत भी कम हो जाती है. शिप करने का इरादा: WebGPU: externalTexture बाइंडिंग के लिए, GPUTextureView देखें.
const texture = myDevice.createTexture({
size: [42, 42],
format: navigator.gpu.getPreferredCanvasFormat(),
usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING,
});
const code = `
@group(0) @binding(0) var texture : texture_external;
@group(0) @binding(1) var<storage, read_write> buffer: vec2u;
@compute @workgroup_size(1) fn main() {
buffer = textureDimensions(texture);
}`;
const pipeline = myDevice.createComputePipeline({
layout: "auto",
compute: { module: myDevice.createShaderModule({ code }) },
});
const bindGroup = myDevice.createBindGroup({
layout: pipeline.getBindGroupLayout(0),
entries: [
{ binding: 0, resource: texture.createView() }, // Use texture view for an externalTexture binding
{ binding: 1, resource: { buffer: myBuffer } },
],
});
ऑफ़सेट और साइज़ तय किए बिना बफ़र कॉपी करना
GPUCommandEncoder के नए तरीके के ओवरलोड की मदद से, डेवलपर पूरे बफ़र को कॉपी करने के लिए, copyBufferToBuffer() का इस्तेमाल करते समय, ऑफ़सेट और साइज़ पैरामीटर छोड़ सकते हैं. शिप करने का इरादा देखें: WebGPU: copyBufferToBuffer ओवरलोड.
const size = 42;
const srcBuffer = myDevice.createBuffer({
size,
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
});
const dstBuffer = myDevice.createBuffer({
size,
usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
});
// Copy entire buffer.
myCommandEncoder.copyBufferToBuffer(srcBuffer, dstBuffer);
// This is the same as the following.
// myCommandEncoder.copyBufferToBuffer(srcBuffer, 0, dstBuffer, 0, size);
WGSL workgroupUniformLoad के लिए, ऐटॉमिक के पॉइंटर का इस्तेमाल करना
डेवलपर की सुविधा के लिए, WGSL में नया workgroupUniformLoad(ptr) ओवरलोड जोड़ा गया है. यह ptr से पॉइंट की गई वैल्यू को ऐटॉमिक तरीके से लोड करता है और उसे वर्कग्रुप में मौजूद सभी इनवोकेशन पर वापस भेजता है. यहां ptr, वर्कग्रुप वैरिएबल में मौजूद पॉइंटर-टू-ऐटॉमिक है. समस्या 408241039 देखें.
@group(0) @binding(0) var<storage, read_write> buffer : array<u32, 1>;
var<workgroup> wgvar : atomic<u32>;
@compute @workgroup_size(1, 1)
fn main(@builtin(local_invocation_index) lid: u32) {
if (lid == 0) {
atomicStore(&(wgvar), 42u);
}
buffer[lid] = workgroupUniformLoad(&wgvar);
}
GPUAdapterInfo का powerPreference एट्रिब्यूट
जब उपयोगकर्ता chrome://flags/#enable-webgpu-developer-features पर जाकर, "WebGPU डेवलपर सुविधाएं" फ़्लैग चालू करता है, तब गैर-स्टैंडर्ड powerPreference GPUAdapterInfo स्ट्रिंग एट्रिब्यूट उपलब्ध होता है. अगर यह सुविधा काम करती है, तो powerPreference की वैल्यू "low-power" या "high-performance" हो सकती है. यह इस बात पर निर्भर करता है कि GPURequestAdapterOptions में GPUPowerPreference की कौनसी वैल्यू इस्तेमाल की गई थी. सीएल 6438860 देखें.
function checkPowerPreferenceForGpuDevice(device) {
const powerPreference = device.adapterInfo.powerPreference;
if (powerPreference === "high-performance") {
// High-performance GPU detected. Enabling enhanced graphics settings.
} else if (powerPreference === "low-power") {
// Low-power GPU detected. Optimizing for battery life.
}
}
GPURequestAdapterOptions का compatibilityMode एट्रिब्यूट हटाना
एक्सपेरिमेंटल GPURequestAdapterOptions compatibilityMode एट्रिब्यूट हटा दिया गया है. इसकी जगह, स्टैंडर्ड featureLevel एट्रिब्यूट इस्तेमाल किया जा सकता है जिसे Chrome के वर्शन 133 में जोड़ा गया था. समस्या 366151404 देखें.
Dawn से जुड़े अपडेट
डेवलपर, C++ जैसी भाषाओं में WebGPU प्रोजेक्ट बना सकते हैं. इसके लिए, वे webgpu.h का इस्तेमाल करके, WebAssembly और खास प्लैटफ़ॉर्म, दोनों को टारगेट कर सकते हैं. Dawn के नए रिलीज़ किए गए "emdawnwebgpu" ("Emscripten Dawn WebGPU") में, ब्राउज़र एपीआई पर, webgpu.h के सबसे नए स्टैंडर्ड वर्शन को लागू किया गया है.
Emdawnwebgpu, Emscripten के (अब बंद हो चुके) बिल्ट-इन बाइंडिंग (USE_WEBGPU) का (मेंटेन किया गया) फ़ोर्क है. सभी नए डेवलपमेंट, emdawnwebgpu पर किए जा रहे हैं. साथ ही, डेवलपर के emdawnwebgpu पर माइग्रेट करने के बाद, Emscripten के बिल्ट-इन बाइंडिंग हटा दिए जाएंगे. Emdawnwebgpu का C हेडर, Dawn के हेडर के काफ़ी करीब है. वहीं, बिल्ट-इन बाइंडिंग काफ़ी पुराने हो चुके हैं.
Emdawnwebgpu को Dawn के GitHub रिलीज़ पेज से डाउनलोड करें. साथ ही, इसे इस्तेमाल करने के तरीके के बारे में जानने के लिए, पैकेज का README.md पढ़ें. सोर्स फ़ाइलें, Dawn की रिपॉज़िटरी में मिल सकती हैं.
पूरी गाइड के लिए, अपडेट किया गया WebGPU की मदद से ऐप्लिकेशन बनाना दस्तावेज़ देखें.
इसमें सिर्फ़ कुछ मुख्य हाइलाइट शामिल हैं. कमिट की पूरी सूची देखें.
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 का इस्तेमाल करना
- कंप्यूट और रेंडर पास में टाइमस्टैंप क्वेरी
- शेयर मॉड्यूल के लिए डिफ़ॉल्ट एंट्री पॉइंट
- display-p3 को GPUExternalTexture के कलर स्पेस के तौर पर इस्तेमाल करने की सुविधा
- मेमोरी हीप की जानकारी
- Dawn से जुड़े अपडेट
Chrome का वर्शन 120
- WGSL में 16-बिट फ़्लोटिंग-पॉइंट वैल्यू की सुविधा
- सीमाएं बढ़ाना
- डेप्थ-स्टेंसिल स्टेट में बदलाव
- अडैप्टर की जानकारी से जुड़े अपडेट
- टाइमस्टैंप क्वेरी का क्वॉन्टाइज़ेशन
- स्प्रिंग-क्लीनिंग की सुविधाएं
Chrome का वर्शन 119
- फ़िल्टर किए जा सकने वाले 32-बिट फ़्लोट टेक्स्चर
- unorm10-10-10-2 वर्टेक्स फ़ॉर्मैट
- rgb10a2uint टेक्स्चर फ़ॉर्मैट
- Dawn से जुड़े अपडेट
Chrome का वर्शन 118
- `copyExternalImageToTexture()` में 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 से जुड़े अपडेट