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

François Beaufort
François Beaufort

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

GPU ऑब्जेक्ट के wgslLanguageFeatures सदस्य में, इस्तेमाल किए जा सकने वाले WGSL भाषा एक्सटेंशन के नाम दिए गए हैं. साथ काम करने वाले WGSL भाषा एक्सटेंशन अपने-आप चालू हो जाते हैं. इसलिए, आपको साफ़ तौर पर इसके लिए अनुरोध करने की ज़रूरत नहीं है. फ़िलहाल, यह सूची खाली है. हालांकि, आने वाले समय में इसमें कई एट्रिब्यूट जोड़े जा सकते हैं. उदाहरण के लिए, do-while loops. issue dawn: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 चलाकर, इस सुविधा को स्थानीय तौर पर आज़माने का विकल्प है. issue dawn:1705 देखें.

एसी पावर पर डिफ़ॉल्ट रूप से डिसक्रेट जीपीयू पाना

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

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

DevTools की नई चेतावनियां

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

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

शून्य साइज़ के डिस्पैच और ड्रॉ मान्य हैं. हालांकि, चेतावनी से डेवलपर को ऐसा करने से बचने के लिए कहा जाता है. issue dawn:1786 देखें.

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

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

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

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

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

GPUBuffer ऑब्जेक्ट पर mapAsync() तरीके से मिलने वाले गड़बड़ी के मैसेज को बेहतर बनाया गया है, ताकि डेवलपर को डीबग करने में मदद मिल सके. नीचे इसका उदाहरण देखें और 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 पर डीबग करने के लिए इसे चालू करने पर, बेहतर डीबग अनुभव मिलता है. issue dawn:1784 देखें

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

अगर कंपाइल नहीं हो पाता है, तो HLSL को लॉग करें

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

Dawn के बारे में अपडेट

वर्टिक्स बफ़र को अनसेट करना

wgpu::RenderPassEncoder या wgpu::RenderBundleEncoder पर SetVertexBuffer() को wgpu::Buffer के बजाय 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 131

Chrome 130

Chrome 129

Chrome 128

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