पब्लिश किया गया: 29 जनवरी, 2025
अन्य unorm8x4-bgra और एक-कॉम्पोनेंट वाले वर्टिक्स फ़ॉर्मैट
"unorm8x4-bgra"
वर्टिक्स फ़ॉर्मैट और एक कॉम्पोनेंट वाले ये वर्टिक्स फ़ॉर्मैट जोड़े गए हैं: "uint8"
, "sint8"
, "unorm8"
, "snorm8"
, "uint16"
, "sint16"
, "unorm16"
, "snorm16"
, और "float16"
.
"unorm8x4-bgra"
वर्टिक्स फ़ॉर्मैट की मदद से, एक ही शेडर को बनाए रखते हुए, BGRA कोड में बदले गए वर्टिक्स के रंगों को लोड करना थोड़ा आसान हो जाता है. इसके अलावा, एक-कॉम्पोनेंट वाले वर्टिक्स फ़ॉर्मैट की मदद से, सिर्फ़ ज़रूरी डेटा का अनुरोध किया जा सकता है. पहले, 8 और 16-बिट डेटा टाइप के लिए, कम से कम दोगुना डेटा का अनुरोध करना पड़ता था. chromestatus पर मौजूद एंट्री और समस्या 376924407 देखें.
तय नहीं की गई वैल्यू के साथ, अज्ञात सीमाओं का अनुरोध करने की अनुमति दें
WebGPU API के बेहतर होने के साथ-साथ, उसे और भी बेहतर बनाने के लिए, अब जीपीयू डिवाइस का अनुरोध करते समय undefined
वैल्यू के साथ, अनजान सीमाओं का अनुरोध किया जा सकता है. यह नीचे दिए गए ऐप्लिकेशन कोड में काम आता है. उदाहरण के लिए, अगर someLimit
अब मौजूद नहीं है, तो adapter.limits.someLimit
को undefined
किया जा सकता है. स्पेसिफ़िकेशन PR 4781 देखें.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice({
requiredLimits: { someLimit: adapter.limits.someLimit }, // someLimit can be undefined
});
डब्ल्यूजीएसएल अलाइनमेंट के नियमों में बदलाव
अब किसी स्ट्रक्चर के सदस्य के लिए, अलाइनमेंट की बहुत छोटी वैल्यू नहीं दी जा सकती. ऐसा इसलिए है, क्योंकि अब यह ज़रूरी है कि सभी स्ट्रक्चर के लिए @align(n)
, RequiredAlignOf
से बड़ा हो. इस बदलाव से, WGSL भाषा का इस्तेमाल आसान हो गया है. साथ ही, यह Firefox और Safari के साथ ज़्यादा काम की हो गई है. स्पेसिफ़िकेशन के लिए सबमिट किए गए प्रॉडक्ट रिलीज़ में, Tint, Naga, और WebKit कंपाइलर के बीच के अंतर को दिखाने वाला सैंपल कोड देखा जा सकता है.
'खारिज करें' सुविधा की मदद से, WGSL की परफ़ॉर्मेंस में हुई बढ़ोतरी
स्क्रीन-स्पेस रिफ़्लेक्शन (एसएसआर) के जटिल इफ़ेक्ट को रेंडर करते समय, परफ़ॉर्मेंस में काफ़ी गिरावट देखी गई. इसलिए, डिस्कार्ड स्टेटमेंट को लागू करने के लिए, प्लैटफ़ॉर्म से मिले सेमेंटेक्स का इस्तेमाल किया जाता है. इससे, हेल्पर को कॉल करने की सुविधा को डिमोट किया जा सकता है. हालांकि, यह सुविधा सिर्फ़ तब उपलब्ध होती है, जब हेल्पर को कॉल करने की सुविधा उपलब्ध हो. इससे, डिस्कार्ड का इस्तेमाल करने वाले शेडर की परफ़ॉर्मेंस बेहतर होती है. समस्या 372714384 देखें.
बाहरी टेक्सचर के लिए, VideoFrame displaySize का इस्तेमाल करना
WebGPU स्पेसिफ़िकेशन के मुताबिक, VideoFrame इंपोर्ट करते समय displayWidth
और displayHeight
डाइमेंशन का इस्तेमाल, GPUExternalTexture के दिखने वाले साइज़ के तौर पर किया जाना चाहिए. हालांकि, दिखने वाले साइज़ का गलत इस्तेमाल किया गया था. इस वजह से, GPUExternalTexture पर textureLoad()
का इस्तेमाल करने में समस्याएं आ रही थीं. अब यह समस्या ठीक कर दी गई है. समस्या 377574981 देखें.
copyExternalImageToTexture का इस्तेमाल करके, डिफ़ॉल्ट ओरिएंटेशन के अलावा किसी अन्य ओरिएंटेशन वाली इमेज को हैंडल करना
copyExternalImageToTexture()
GPUQueue तरीके का इस्तेमाल, किसी इमेज या कैनवस के कॉन्टेंट को टेक्सचर में कॉपी करने के लिए किया जाता है. यह अब डिफ़ॉल्ट ओरिएंटेशन के अलावा, अन्य ओरिएंटेशन वाली इमेज को भी सही तरीके से हैंडल करता है. पहले ऐसा नहीं था, जब सोर्स imageOrientation
"from-image"
वाली ImageBitmap या डिफ़ॉल्ट से अलग ओरिएंटेशन वाली इमेज थी. समस्या 384858956 देखें.
डेवलपर के अनुभव को बेहतर बनाना
जब adapter.limits
ज़्यादा वैल्यू दिखाता है, तो यह हैरानी की बात हो सकती है. हालांकि, आपको यह नहीं पता होता कि जीपीयू डिवाइस का अनुरोध करते समय, आपको साफ़ तौर पर ज़्यादा सीमा का अनुरोध करना होगा. ऐसा न करने पर, बाद में अनचाहे तरीके से सीमाएं लागू हो सकती हैं.
आपकी मदद करने के लिए, गड़बड़ी के मैसेज में अहम जानकारी जोड़ी गई है. इससे, आपको यह पता चलेगा कि requestDevice()
को कॉल करते समय requiredLimits
में कोई सीमा तय नहीं की गई है, तो ज़्यादा सीमा का अनुरोध कैसे करें. समस्या 42240683 देखें.
नीचे दिए गए उदाहरण में, डिवाइस के लिए डिफ़ॉल्ट तौर पर तय किए गए बफ़र साइज़ की सीमा से ज़्यादा साइज़ का जीपीयू बफ़र बनाते समय, DevTools कंसोल में लॉग किया गया गड़बड़ी का बेहतर मैसेज दिखाया गया है.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
// Create a GPU buffer with a size exceeding the default max buffer size device limit.
const size = device.limits.maxBufferSize + 1;
const buffer = device.createBuffer({ size, usage: GPUBufferUsage.MAP_READ });
device.queue.submit([]);
⚠️ Buffer size (268435457) exceeds the max buffer size limit (268435456). This adapter supports a higher maxBufferSize of 4294967296, which can be specified in requiredLimits when calling requestDevice(). Limits differ by hardware, so always check the adapter limits prior to requesting a higher limit. - While calling [Device].CreateBuffer([BufferDescriptor]).
featureLevel की मदद से, Compatibility Mode को चालू करना
एक्सपेरिमेंट के तौर पर उपलब्ध, काम करने के तरीके के मोड में जीपीयू अडैप्टर का अनुरोध करने के लिए, स्टैंडर्ड featureLevel
विकल्प को "compatibility"
पर सेट करें. सिर्फ़ "core"
(डिफ़ॉल्ट) और "compatibility"
स्ट्रिंग की वैल्यू इस्तेमाल की जा सकती हैं. यहां दिया गया उदाहरण और स्पेसिफ़िकेशन PR 4897 देखें.
// Request a GPU adapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
if (adapter?.featureLevel === "compatibility") {
// Any devices created from this adapter will support only compatibility mode.
}
featureLevel
विकल्प, नॉन-स्टैंडर्ड compatibilityMode
विकल्प की जगह लेता है. वहीं, नॉन-स्टैंडर्ड featureLevel
एट्रिब्यूट, isCompatibilityMode
एट्रिब्यूट की जगह लेता है.
यह सुविधा अभी एक्सपेरिमेंट के तौर पर उपलब्ध है. इसलिए, फ़िलहाल आपको Chrome को chrome://flags/#enable-unsafe-webgpu
पर "असुरक्षित WebGPU सहायता" फ़्लैग के साथ चलाना होगा. इसे आज़माने के लिए, webgpureport.org पर जाएं.
एक्सपेरिमेंट के तौर पर उपलब्ध सब-ग्रुप की सुविधाओं को हटाना
"chromium-experimental-subgroups"
और "chromium-experimental-subgroup-uniform-control-flow"
के सब-ग्रुप की एक्सपेरिमेंटल सुविधाएं हटा दी गई हैं. समस्या 377868468 देखें.
सबग्रुप के साथ प्रयोग करते समय, अब आपको "subgroups"
एक्सपेरिमेंट के तौर पर उपलब्ध सुविधा की ही ज़रूरत है. "subgroups-f16"
की एक्सपेरिमेंटल सुविधा बंद कर दी गई है और इसे जल्द ही हटा दिया जाएगा. जब आपका ऐप्लिकेशन "shader-f16"
और "subgroups"
, दोनों सुविधाओं का अनुरोध करता है, तो सबग्रुप के साथ f16 वैल्यू का इस्तेमाल किया जा सकता है. समस्या 380244620 देखें.
maxInterStageShaderComponents की सीमा को बंद करना
maxInterStageShaderComponents
की सीमा को कई वजहों से बंद कर दिया गया है:
maxInterStageShaderVariables
के साथ डुप्लीकेटिटी: यह सीमा पहले से ही एक जैसे काम करती है. यह शेडर के चरणों के बीच भेजे गए डेटा की संख्या को कंट्रोल करती है.- मामूली अंतर: दोनों सीमाओं का हिसाब लगाने के तरीके में थोड़ा अंतर है. हालांकि, यह अंतर मामूली है और
maxInterStageShaderVariables
की सीमा के अंदर इसे असरदार तरीके से मैनेज किया जा सकता है. - आसान बनाना:
maxInterStageShaderComponents
को हटाने से शेडर इंटरफ़ेस को आसान बनाया जा सकता है. साथ ही, डेवलपर के लिए मुश्किलें भी कम हो जाती हैं. ज़्यादा अंतर वाली दो अलग-अलग सीमाओं को मैनेज करने के बजाय, वे ज़्यादा सही नाम और बेहतरmaxInterStageShaderVariables
पर फ़ोकस कर सकते हैं.
हमारा लक्ष्य, इसे Chrome 135 में पूरी तरह हटाना है. इस्तेमाल बंद करने का मकसद और समस्या 364338810 देखें.
Dawn के बारे में अपडेट
wgpu::Device::GetAdapterInfo(adapterInfo)
की मदद से, सीधे wgpu::Device
से अडैप्टर की जानकारी मिल सकती है. समस्या 376600838 देखें.
WGPUProgrammableStageDescriptor
स्ट्रक्चर का नाम बदलकर WGPUComputeState
कर दिया गया है, ताकि कैलकुलेट स्टेटस को वर्टिक्स और फ़्रैगमेंट स्टेटस के साथ अलाइन किया जा सके. समस्या 379059434 देखें.
wgpu::VertexStepMode::VertexBufferNotUsed
की वैल्यू हटा दी गई है. इस्तेमाल नहीं किए गए वर्टिक्स बफ़र लेआउट को अब {.stepMode=wgpu::VertexStepMode::Undefined, .attributeCount=0}
के साथ दिखाया जा सकता है. समस्या 383147017 देखें.
इसमें सिर्फ़ कुछ खास हाइलाइट शामिल हैं. कमिट की पूरी सूची देखें.
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 से जुड़े अपडेट