الميزات الجديدة في 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);

إلغاء ضبط مجموعة الربط

يسمح لك تمرير 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 باستخدام العلامة "إتاحة WebGPU غير الآمنة"، لأنّ SPIR-V ليس جزءًا من مواصفات WebGPU. قبل إجراء هذا التغيير، كان استخدام SPIR-V يؤدي إلى إنشاء GPUInternalError بدلاً من ذلك. اطّلِع على التغيير chromium:4711911.

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

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

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

تستفيد خطوط الإنتاج التي تم إنشاؤها باستخدام createRenderPipeline({ layout: "auto" }) الآن من آليات التخزين المؤقت في Chrome. وهذا يعني أنّه سيتم إنشاء خطوط النقل هذه بشكل أكثر كفاءة وستستخدم ذاكرة أقل. اطّلِع على issue 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 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