الميزات الجديدة في WebGPU (Chrome 117)

François Beaufort
François Beaufort

إلغاء ضبط مخزن مؤقت للرؤوس

يسمح لك تمرير null بدلاً من GPUBuffer إلى setVertexBuffer() على GPURenderPassEncoder أو GPURenderBundleEncoder بإلغاء ضبط مخزن مؤقت للرؤوس تم ضبطه مسبقًا في خانة معيّنة. اطّلِع على المشكلة dawn:1675.

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

// Then later, unset vertex buffer in slot 0.
myRenderPassEncoder.setVertexBuffer(0, null);

Unset bind group

يسمح لك تمرير null بدلاً من GPUBindGroup إلى setBindGroup() في GPURenderPassEncoder أو GPURenderBundleEncoder بإلغاء ضبط مجموعة ربط تم ضبطها سابقًا في موضع معيّن. اطّلِع على المشكلة dawn:1675.

// Set bing group in slot 0.
myRenderPassEncoder.setBindGroup(0, myBindGroup);

// Then later, unset bind group in slot 0.
myRenderPassEncoder.setBindGroup(0, null);

إيقاف الأخطاء الناتجة عن إنشاء مسار غير متزامن عند فقدان الجهاز

تعرض الطريقتان createComputePipelineAsync() وcreateRenderPipelineAsync() في GPUDevice وعدًا يتم تنفيذه عند اكتمال إنشاء مسار العرض. من الآن فصاعدًا، سيتم تجاهل الأخطاء الناتجة عن إنشاء مسار التعلّم غير المتزامن عندما تكون قيمة GPUDevice هي lost، وذلك لكي تبدو الأجهزة المفقودة وكأنّها تعمل قدر الإمكان. اطّلِع على المشكلة 1874.

تعديلات على إنشاء وحدات تظليل SPIR-V

سيؤدي إنشاء وحدة تظليل SPIR-V باستخدام createShaderModule() الآن إلى ظهور خطأ TypeError ما لم تشغّل Chrome باستخدام العلامة "Unsafe WebGPU Support"، لأنّ SPIR-V ليس جزءًا من مواصفات WebGPU. قبل إجراء هذا التغيير، كان استخدام SPIR-V يؤدي إلى إنشاء GPUInternalError بدلاً من ذلك. اطّلِع على تغيير chromium:4711911.

تحسين تجربة المطوّرين

تم تحسين رسالة الخطأ في عملية التحقّق من صحة عمليات الربط في تخطيط مجموعة الربط في برنامج تظليل الرأس، وذلك بالنسبة إلى عمليات الربط في مخزن مؤقت للتخزين والقراءة والكتابة وعمليات الربط في نسيج التخزين للكتابة فقط. اطّلِع على العدد dawn:1883.

تخزين مسارات العرض مؤقتًا باستخدام تخطيط يتم إنشاؤه تلقائيًا

تستفيد خطوط الإنتاج التي تم إنشاؤها باستخدام createRenderPipeline({ layout: "auto" }) الآن من آليات التخزين المؤقت في Chrome. وهذا يعني أنّه سيتم إنشاء خطوط النقل هذه بشكل أكثر كفاءة وستستخدم مقدارًا أقل من الذاكرة. اطّلِع على المشكلة dawn:1933.

إشعارات الفجر

أصبح wgpu::RequestAdapterOptionsBackendType الآن جزءًا من wgpu::RequestAdapterOptions لتسهيل طلب التطبيقات لخادم خلفي معيّن عند الحصول على محوّل. اطّلِع على المثال التالي وأصدر الأمر dawn:1875.

wgpu::RequestAdapterOptions options = {
    .backendType = wgpu::BackendType::D3D12};

// Request D3D12 adapter.
myInstance.RequestAdapter(&options, myCallback, myUserData);

تم تنفيذ عدة طرق إضافية لـ Node.js. راجِع تغيير الفجر:142465.

غيّرت واجهة برمجة التطبيقات webgpu.h C نوع القيم المنطقية من stdbool إلى WGPUBool، وهو uint32_t. تم إجراء هذا التغيير لضمان توفُّر ABI مكافئة لواجهة برمجة التطبيقات في لغتَي C وC++.

هذا يشمل بعض النقاط الرئيسية فقط. اطّلِع على قائمة عمليات الإيداع الشاملة.

الميزات الجديدة في WebGPU

قائمة بكل ما تم تناوله في سلسلة الميزات الجديدة في WebGPU

Chrome 153-154

‫Chrome 151-152

‫Chrome 149-150

Chrome 147-148

‫Chrome 146

Chrome 145

‫Chrome 144

Chrome 143

Chrome 142

‫Chrome 141

Chrome 140

‫Chrome 139

‫Chrome 138

‫Chrome 137

Chrome 136

Chrome 135

‫Chrome 134

‫Chrome 133

‫Chrome 132

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