WebGPU (Chrome{6}115) में नया क्या है

François Beaufort
François Beaufort

साथ काम करने वाले WGSL भाषा एक्सटेंशन

GPU ऑब्जेक्ट के wgslLanguageFeatures सदस्य में, इस्तेमाल किए जा सकने वाले WGSL भाषा एक्सटेंशन के नाम दिए गए हैं. साथ काम करने वाले WGSL भाषा एक्सटेंशन अपने-आप चालू हो जाते हैं. इसलिए, आपको साफ़ तौर पर इसके लिए अनुरोध करने की ज़रूरत नहीं है. फ़िलहाल, यह सूची खाली है. हालांकि, आने वाले समय में, ऐसे बहुत से नतीजे दिख सकते हैं. उदाहरण के लिए, do-while loops. समस्या सुबह:1777 देखें.

if (navigator.gpu.wgslLanguageFeatures?.has("unknown-feature")) {
  // Use unknown-feature in WGSL shader code.
}

Direct3D 11 के लिए प्रयोगात्मक समर्थन

Chromium की टीम, Direct3D 11 के लिए WebGPU की सुविधा जोड़ने पर काम कर रही है. अब --enable-unsafe-webgpu --use-webgpu-adapter=d3d11 कमांड लाइन फ़्लैग के साथ Windows पर Chrome चलाकर, इसे स्थानीय तौर पर टेस्ट किया जा सकता है. समस्या सुबह:1705 देखें.

एसी पावर पर, डिफ़ॉल्ट रूप से अलग-अलग जीपीयू पाएं

ड्यूअल जीपीयू वाले macOS डिवाइसों पर, अगर powerPreference विकल्प के बिना requestAdapter() को कॉल किया जाता है, तो अलग-अलग जीपीयू का रिस्पॉन्स तब दिखता है, जब उपयोगकर्ता का डिवाइस एसी पावर पर होता है. ऐसा न करने पर, इंटिग्रेट किया गया जीपीयू दिखाया जाता है. बदलें 4499307 देखें.

डेवलपर के अनुभव को बेहतर बनाना

DevTools से जुड़ी नई चेतावनियां

अगर GPUExtend3DDict में depth कुंजी का इस्तेमाल किया जाता है, तो DevTools Console में चेतावनी दिखती है, क्योंकि सही कुंजी depthOrArrayLayers है. Chromium:1440900 से जुड़ी समस्या देखें.

अगर GPUBlendComponent में, अश्लील और डिफ़ॉल्ट तौर पर मौजूद, दोनों तरह के सदस्य शामिल हैं, तब भी चेतावनी दी जाती है. समस्या सुबह:1785 देखें.

वैसे तो डिस्पैच और ड्रॉ करना मान्य होता है, लेकिन डेवलपर को चेतावनी दी जाती है कि वे जहां भी हो सके, इनसे बचें. समस्या सुबह:1786 देखें.

गड़बड़ी के बेहतर मैसेज

अगर finish() को पहले ही कॉल कर लिया गया है, तो GPUCommandEncoder का इस्तेमाल करते समय अब गड़बड़ी का एक बेहतर मैसेज दिया जाता है. समस्या सुबह:1736 देखें.

मिटाए गए ऑब्जेक्ट के साथ कमांड बफ़र सबमिट करते समय, submit() में इस्तेमाल किए गए कमांड बफ़र के लेबल अब गड़बड़ी के मैसेज में दिखते हैं. समस्या सुबह:1747 देखें.

depthStencil की पुष्टि करते समय, अब गड़बड़ी के मैसेज में स्टेंसिल की अमान्य स्थिति की जानकारी दी गई है. समस्या सुबह:1735 देखें.

minBindingSize की पुष्टि से जुड़ी गड़बड़ी का मैसेज, अब पुष्टि न हो पाने वाली बाइंडिंग की संख्या और ग्रुप की जानकारी के साथ-साथ, बफ़र को भी रिपोर्ट करता है. समस्या dawn:1604 देखें.

mapAsync() तरीके से GPUBuffer ऑब्जेक्ट पर लौटाए गए गड़बड़ी के मैसेज को बेहतर बनाया गया है. इससे डीबग करने में डेवलपर की मदद की जा सकती है. नीचे इसका उदाहरण देखें और Chromium:1431622 से जुड़ी समस्या हल करें.

// Create a GPU buffer and map it.
const descriptor = { size: 0, usage: GPUBufferUsage.MAP_READ };
const buffer = device.createBuffer(descriptor);
buffer.mapAsync(GPUMapMode.READ);

// Before it has been mapped, request another mapping.
try {
  await buffer.mapAsync(GPUMapMode.READ);
} catch (error) {
  // New! Error message tells you mapping is already pending.
  console.warn(error.message);
}

macOS के डीबग करने वाले टूल में लेबल

use_user_defined_labels_in_backend डीबग टॉगल की मदद से, ऑब्जेक्ट लेबल को बैकएंड पर फ़ॉरवर्ड किया जा सकता है. ऐसा करने से, उन्हें RenderDoc, PIX या Instrument जैसे प्लैटफ़ॉर्म के हिसाब से डीबग करने वाले टूल में देखा जा सकता है. अब से, macOS पर डीबग करने की सुविधा चालू करने पर, डीबग करने का बेहतर अनुभव मिलता है. समस्या सुबह:1784 देखें

macOS पर Instrument ऐप्लिकेशन का स्क्रीनशॉट, जिसमें WebGPU से आने वाले कस्टम लेबल दिख रहे हैं.
macOS पर Instrument ऐप्लिकेशन में, उपयोगकर्ता के तय किए गए लेबल.

कंपाइलेशन न होने पर, एचएलएसएल को लॉग करें

dump_shaders डीबग टॉगल की मदद से, इनपुट WGSL शेडर और अनुवाद किए गए बैकएंड शेडर को लॉग किया जा सकता है. अब से, डीबग करने के लिए इसे चालू करने पर, कंपाइलेशन में गड़बड़ी होने पर एचएलएसएल को हटा दिया जाएगा. समस्या सुबह:1681 देखें

डॉन से जुड़े अपडेट

वर्टेक्स बफ़र हटाएं

wgpu::RenderPassEncoder या wgpu::RenderBundleEncoder पर wgpu::Buffer के बजाय SetVertexBuffer() को nullptr पास करने पर, आप किसी दिए गए स्लॉट में पहले से सेट किए गए वर्टेक्स बफ़र को अनसेट कर सकते हैं. समस्या dawn:1675 देखें.

// Set vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, myVertexBuffer);

// Then later, unset vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, nullptr);

अस्थायी अटैचमेंट

ऐसे अटैचमेंट बनाए जा सकते हैं जो रेंडर होने की कार्रवाइयों को टाइल मेमोरी में बनाए रखने में मदद करते हैं. साथ ही, इससे वीआरएएम ट्रैफ़िक से बचा जा सकता है और wgpu::TextureUsage::TransientAttachment के इस्तेमाल को सेट करके, टेक्सचर के लिए वीआरएएम ऐलोकेशन को रोका जा सकता है. यह सुविधा सिर्फ़ Metal और Vulkan पर काम करती है. समस्या सुबह: 1695 देखें.

wgpu::TextureDescriptor desc;
desc.format = wgpu::TextureFormat::RGBA8Unorm;
desc.size = {1, 1, 1};
desc.usage = wgpu::TextureUsage::RenderAttachment |
             wgpu::TextureUsage::TransientAttachment;

auto transientTexture = device.CreateTexture(&desc);

// You can now create views from the texture to serve as transient
// attachments, e.g. as color attachments in a render pipeline.

depot_tools के बिना बिल्डिंग

DAWN_FETCH_DEPENDENCIES CMake का नया विकल्प आपको ऐसी Python स्क्रिप्ट का इस्तेमाल करके Dawn डिपेंडेंसी पाने की अनुमति देता है जो DEPS फ़ाइलों को पढ़ती है, न कि depot_tools पर निर्भर सभी प्रोजेक्ट को इंस्टॉल करने की ज़रूरत नहीं. बदलें 131750 देखें.

WebGPU में नया क्या है

WebGPU में नया क्या है सीरीज़ में शामिल सभी चीज़ों की सूची.

Chrome 127

Chrome 126

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113