पब्लिश किया गया: 8 जनवरी, 2025
टेक्स्चर व्यू का इस्तेमाल
फ़िलहाल, जीपीयू टेक्सचर व्यू अपने सोर्स जीपीयू टेक्सचर से, इस्तेमाल से जुड़े सभी फ़्लैग इनहेरिट करते हैं. इससे समस्या हो सकती है, क्योंकि कुछ व्यू फ़ॉर्मैट कुछ खास तरह के इस्तेमाल के साथ काम नहीं करते. इस समस्या को हल करने के लिए, usage
सदस्य के साथ createView()
को कॉल करें. इससे, सोर्स टेक्सचर के इस्तेमाल के उन फ़्लैग के सबसेट को साफ़ तौर पर बताया जा सकता है जो चुने गए व्यू फ़ॉर्मैट के साथ काम करते हैं.
इस बदलाव से, पहले से पुष्टि करने की सुविधा मिलती है. साथ ही, यह भी तय किया जा सकता है कि व्यू का इस्तेमाल कैसे किया जाए. यह अन्य ग्राफ़िक एपीआई के साथ भी अलाइन होता है, जहां व्यू बनाने में इस्तेमाल के फ़्लैग सामान्य पैरामीटर होते हैं. इससे ऑप्टिमाइज़ेशन के अवसर मिलते हैं.
नीचे दिया गया स्निपेट, chromestatus पर मौजूद एंट्री, और समस्या 363903526 देखें.
const texture = myDevice.createTexture({
size: [4, 4],
format: "rgba8unorm",
usage:
GPUTextureUsage.RENDER_ATTACHMENT |
GPUTextureUsage.TEXTURE_BINDING |
GPUTextureUsage.STORAGE_BINDING,
viewFormats: ["rgba8unorm-srgb"],
});
const view = texture.createView({
format: 'rgba8unorm-srgb',
usage: GPUTextureUsage.RENDER_ATTACHMENT, // Restrict allowed usage.
});
32-बिट फ़्लोट टेक्स्चर ब्लेंडिंग
एचडीआर रेंडरिंग के लिए, 32-बिट फ़्लोटिंग-पॉइंट टेक्सचर ज़रूरी हैं. इससे कलर वैल्यू की एक बड़ी रेंज को बनाए रखने और कलर बैंडिंग आर्टफ़ैक्ट को रोकने में मदद मिलती है. उदाहरण के लिए, साइंटिफ़िक विज़ुअलाइज़ेशन में.
"float32-blendable"
जीपीयू की नई सुविधा की मदद से, "r32float"
, "rg32float"
, और "rgba32float"
फ़ॉर्मैट वाले जीपीयू टेक्सचर को ब्लेंड किया जा सकता है. इस सुविधा वाले जीपीयू डिवाइस का अनुरोध करने पर, अब ऐसी रेंडर पाइपलाइन बनाई जा सकती है जो float32 फ़ॉर्मैट के किसी भी अटैचमेंट के साथ ब्लेंडिंग का इस्तेमाल करती है.
नीचे दिया गया स्निपेट, chromestatus एंट्री, और समस्या 369649348 देखें.
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("float32-blendable")) {
throw new Error("32-bit float textures blending support is not available");
}
// Explicitly request 32-bit float textures blending support.
const device = await adapter.requestDevice({
requiredFeatures: ["float32-blendable"],
});
// ... Creation of shader modules is omitted for readability.
// Create a render pipeline that uses blending for the rgba32float format.
device.createRenderPipeline({
vertex: { module: myVertexShaderModule },
fragment: {
module: myFragmentShaderModule,
targets: [
{
format: "rgba32float",
blend: { color: {}, alpha: {} },
},
],
},
layout: "auto",
});
// Create the GPU texture with rgba32float format and
// send the appropriate commands to the GPU...
GPUDevice adapterInfo
एट्रिब्यूट
उपयोगकर्ता से मिले GPUDevice
ऑब्जेक्ट को फ़िज़िकल जीपीयू की जानकारी ऐक्सेस करने वाली लाइब्रेरी के लिए यह ज़रूरी है. ऐसा इसलिए, क्योंकि उन्हें जीपीयू आर्किटेक्चर के आधार पर, समस्या को हल करने के तरीके को ऑप्टिमाइज़ या लागू करना पड़ सकता है. GPUAdapter
ऑब्जेक्ट की मदद से इस जानकारी को ऐक्सेस किया जा सकता है. हालांकि, सीधे तौर पर GPUDevice
से यह जानकारी नहीं मिल सकती. यह सुविधा परेशानी पैदा कर सकती है, क्योंकि इसके लिए उपयोगकर्ताओं को GPUDevice
के साथ-साथ अन्य जानकारी भी देनी पड़ सकती है.
इस समस्या को हल करने के लिए, GPUAdapterInfo
को अब GPUDevice
adapterInfo
एट्रिब्यूट के ज़रिए दिखाया जाता है. ये वैल्यू, मौजूदा GPUAdapter
info
एट्रिब्यूट की वैल्यू से मिलती-जुलती हैं.
नीचे दिया गया स्निपेट, chromestatus एंट्री, और समस्या 376600838 देखें.
function optimizeForGpuDevice(device) {
if (device.adapterInfo.vendor === "amd") {
// Use AMD-specific optimizations.
} else if (device.adapterInfo.architecture.includes("turing")) {
// Optimize for NVIDIA Turing architecture.
}
}
अमान्य फ़ॉर्मैट के साथ कैनवस कॉन्टेक्स्ट को कॉन्फ़िगर करने पर, JavaScript से जुड़ी गड़बड़ी का मैसेज मिलता है
पहले, जीपीयू कैनवस कॉन्टेक्स्ट के configure()
तरीके के साथ अमान्य टेक्सचर फ़ॉर्मैट का इस्तेमाल करने पर, जीपीयू की पुष्टि करने से जुड़ी गड़बड़ी होती थी. इसे बदलकर, JavaScript TypeError
को थ्रो किया गया है. इससे उन स्थितियों से बचा जा सकता है जहां जीपीयू कैनवस कॉन्टेक्स्ट को गलत तरीके से कॉन्फ़िगर करने के बावजूद, getCurrentTexture()
मान्य जीपीयू टेक्सचर दिखाता है. ज़्यादा जानकारी के लिए, समस्या 372837859 देखें.
टेक्सचर पर सैंपलर की पाबंदियों को फ़िल्टर करना
पहले, फ़िल्टर करने के सैंपल के साथ "sint"
, "uint"
, और "depth"
फ़ॉर्मैट वाले टेक्सचर का इस्तेमाल करने की अनुमति थी. अब यह फ़िल्टरिंग सैंपलर के साथ "sint"
या "uint"
फ़ॉर्मैट वाले टेक्स्चर का इस्तेमाल करने की अनुमति नहीं देता. ध्यान दें कि फ़िल्टर करने वाले सैंपलर के साथ "depth"
टेक्सचर" का इस्तेमाल करने पर, फ़िलहाल चेतावनी मिलती है. ऐसा इसलिए है, क्योंकि आने वाले समय में इसका इस्तेमाल करने की अनुमति नहीं होगी. समस्या 376497143 देखें.
इन पाबंदियों का मतलब है कि बिना फ़िल्टर वाले सैंपलर के साथ डेप्थ टेक्स्चर का इस्तेमाल करने के लिए, बाइंड ग्रुप लेआउट को मैन्युअल तरीके से बनाना होगा. ऐसा इसलिए है, क्योंकि "अपने-आप" जनरेट हुए बाइंड ग्रुप लेआउट, अभी इस कॉम्बिनेशन के साथ काम नहीं करते. स्पेसिफ़िकेशन से जुड़ी समस्या 4952 में, आने वाले समय में इस समस्या को हल करने के लिए एक प्रस्ताव दिया गया है.
सबग्रुप के लिए एक्सपेरिमेंट को ज़्यादा समय तक जारी रखना
सबग्रुप एक्सपेरिमेंट को पहले Chrome 131 में खत्म किया जाना था. हालांकि, अब इसे Chrome 133 तक बढ़ा दिया गया है. यह एक्सपेरिमेंट 16 अप्रैल, 2025 को खत्म होगा. ओरिजिन ट्रायल में परफ़ॉर्मेंस पर फ़ोकस किया गया था. हालांकि, इसमें पोर्टेबिलिटी से जुड़ी सुरक्षा से जुड़ी अहम जानकारी मौजूद नहीं थी. ये सुरक्षा उपाय अब जोड़े जाएंगे. इससे, मौजूदा कोड में गड़बड़ियां हो सकती हैं.
डेवलपर के अनुभव को बेहतर बनाना
Windows पर requestAdapter()
के साथ powerPreference
विकल्प का इस्तेमाल करने पर, अब DevTools में चेतावनी दिखती है. यह चेतावनी तब हटा दी जाएगी, जब Chrome को दो अलग-अलग जीपीयू का इस्तेमाल करने और उनके बीच नतीजों को कंपोज करने का तरीका पता चल जाएगा. समस्या 369219127 देखें.
बहुत बड़ा जीपीयू बफ़र बनाते समय, गड़बड़ी के मैसेज में जीपीयू बफ़र का साइज़ दिखता है. समस्या 374167798 देखें.
16-बिट नॉर्मलाइज़ किए गए टेक्सचर फ़ॉर्मैट के लिए, एक्सपेरिमेंटल तौर पर उपलब्ध सहायता
16-बिट साइन वाले और साइन नहीं वाले नॉर्मलाइज़ किए गए टेक्सचर फ़ॉर्मैट, अब एक्सपेरिमेंट के तौर पर "chromium-experimental-snorm16-texture-formats"
और "chromium-experimental-unorm16-texture-formats"
जीपीयू सुविधाओं के साथ उपलब्ध हैं. इन फ़ॉर्मैट को स्टैंडर्ड बनाने के लिए चर्चा की जा रही है.
इन सुविधाओं से, 16-बिट के सामान्य टेक्सचर फ़ॉर्मैट के साथ COPY_SRC
, COPY_DST
, TEXTURE_BINDING
, RENDER_ATTACHMENT
के इस्तेमाल, मल्टीसैंपलिंग, और रिज़ॉल्व करने की सुविधाओं के लिए सहायता मिलती है. अन्य फ़ॉर्मैट: "r16unorm"
, "rg16unorm"
, "rgba16unorm"
, "r16snorm"
, "rg16snorm"
, और "rgba16snorm"
.
जब तक इन एक्सपेरिमेंटल सुविधाओं को स्टैंडर्ड नहीं किया जाता, तब तक उन्हें Chrome में उपलब्ध कराने के लिए, chrome://flags/#enable-unsafe-webgpu
पर "असुरक्षित WebGPU सहायता" फ़्लैग को चालू करें.
नीचे दिया गया स्निपेट और समस्या 374790898 देखें.
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("chromium-experimental-snorm16-texture-formats")) {
throw new Error("16-bit signed normalized formats support is not available");
}
// Explicitly request 16-bit signed normalized formats support.
const device = await adapter.requestDevice({
requiredFeatures: ["chromium-experimental-snorm16-texture-formats"],
});
// Create a texture with the rgba16snorm format which consists of four
// components, each of which is a 16-bit, normalized, signed integer value.
const texture = device.createTexture({
size: [4, 4],
format: "rgba16snorm",
usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING,
});
// Send the appropriate commands to the GPU...
Dawn के बारे में अपडेट
wgpu::Adapter
और wgpu::Device
में मौजूद EnumerateFeatures(FeatureName * features)
के तरीके, GetFeatures(SupportedFeatures * features)
का इस्तेमाल करने के लिए बंद कर दिए गए हैं. समस्या 368672123 देखें.
webgpu.h C API ने सभी char const *
को WGPUStringView
स्ट्रक्चर में बदल दिया है. यह स्ट्रक्चर, व्यू को UTF-8 से एन्कोड की गई स्ट्रिंग में दिखाता है. यह स्ट्रिंग के डेटा के पॉइंटर की तरह काम करता है. साथ ही, इसमें स्ट्रिंग की लंबाई भी शामिल होती है. इससे, स्ट्रिंग को कॉपी किए बिना उसके हिस्सों के साथ काम किया जा सकता है. समस्या 42241188 देखें.
इसमें सिर्फ़ कुछ खास हाइलाइट शामिल हैं. कमिट की पूरी सूची देखें.
WebGPU में नया क्या है
WebGPU में नया क्या है सीरीज़ में शामिल सभी चीज़ों की सूची.
Chrome 133
- अतिरिक्त unorm8x4-bgra और एक-कॉम्पोनेंट वर्टिक्स फ़ॉर्मैट
- अनजान सीमाओं के लिए, तय नहीं की गई वैल्यू का अनुरोध करने की अनुमति दें
- 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
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
- JavaScript ऑप्टिमाइज़ करना
- बिना कॉन्फ़िगर किए गए कैनवस पर getCurrentTexture() से InvalidStateError मिलता है
- WGSL से जुड़े अपडेट
- Dawn से जुड़े अपडेट