الميزات الجديدة في 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 لجعل الأجهزة المفقودة تبدو وكأنّها تعمل قدر الإمكان. راجِع المشكلة dawn:1874.

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

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

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

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

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

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

تعديلات على Dawn

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

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

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

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

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

لا يغطي هذا القسم سوى بعض النقاط الرئيسية. راجِع القائمة الشاملة لعمليات الإرسال.

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

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

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