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 सपोर्ट जोड़ने पर काम कर रही है. अब Windows पर Chrome को --enable-unsafe-webgpu --use-webgpu-adapter=d3d11 कमांड लाइन फ़्लैग के साथ चलाकर, स्थानीय तौर पर एक्सपेरिमेंट किया जा सकता है. समस्या सुबह:1705 देखें.

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

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

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

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

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

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

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

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

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

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

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

minBindingSize की पुष्टि से जुड़ी गड़बड़ी का मैसेज, अब पुष्टि न हो पाने वाली बाइंडिंग की संख्या और ग्रुप की रिपोर्ट करता है. साथ ही, बफ़र की जानकारी भी देता है. जारी करने का समय: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 पर, डीबग करने का बेहतर अनुभव मिलता है. हालांकि, इसे डीबग करने के लिए चालू किया जा सकता है. जारी करने का समय:1784 देखें

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

अगर कंपाइलेशन विफल हो जाता है, तो HLSL को लॉग करें

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

Dawn के अपडेट

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

wgpu::RenderPassEncoder या wgpu::RenderBundleEncoder पर wgpu::Buffer के बजाय nullptr को SetVertexBuffer() पर पास करने से, आपको दिए गए स्लॉट में पहले से सेट वर्टेक्स बफ़र को अनसेट किया जा सकता है. समस्या सुबह: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 के इस्तेमाल को सेट करके, संभावित तौर पर टेक्सचर के लिए वीआरएएम के आवंटन को बचाते हैं. यह सुविधा सिर्फ़ मेटल और 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 की डिपेंडेंसी फ़ेच करने की अनुमति देता है. Python स्क्रिप्ट पर निर्भर सभी प्रोजेक्ट के लिए depot_tools को इंस्टॉल करने की ज़रूरत के बजाय, DEPS फ़ाइलों को पढ़ता है. बदलाव 131750 देखें.

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

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

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