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

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

سيؤدي إنشاء وحدة تظليل SPIR-V باستخدام createShaderModule() الآن إلى ظهور خطأ TypeError ما لم تشغّل Chrome باستخدام العلامة "Unsafe WebGPU Support"، لأنّ 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 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