الميزات الجديدة في WebGPU (الإصدار 140 من Chrome)

François Beaufort
François Beaufort

Published: August 27, 2025

طلبات الأجهزة تستهلك المحوّل

وفقًا لمواصفات WebGPU، يتم وضع علامة "مستهلك" على المحوّل عند نجاح طلب الجهاز. وبالتالي، ستؤدي أي طلبات لاحقة لـ requestDevice() تستخدم المحوّل نفسه إلى رفض الوعد الآن. في السابق، كانت هذه الطلبات تعرض جهازًا تم فقدانه عند إنشائه. يمكنك الاطّلاع على المشكلة 415825174.

const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();

await adapter.requestDevice(); // Fails because adapter has been consumed.

اختصار لاستخدام الزخرفة عندما يتم استخدام طريقة عرض الزخرفة

يمكن الآن استخدام GPUTexture مباشرةً كـ GPUBindingResource لعرضه على أداة التظليل من أجل الربط. ويمكن أيضًا استخدامه كـ GPURenderPassColorAttachment view وGPURenderPassColorAttachment resolveTarget وGPURenderPassDepthStencilAttachment view لتحسين بيئة العمل. ويوفّر ذلك طريقة أبسط من استخدام GPUTextureView للحصول على طريقة عرض تلقائية. يمكنك الاطّلاع على المشكلة 425906323.

const bindGroup = myDevice.createBindGroup({
  layout: myPipeline.getBindGroupLayout(0),
  entries: [
    { binding: 0, resource: mySampler },
    { binding: 1, resource: myTexture }, // Same as myTexture.createView()
    { binding: 2, resource: myExternalTexture },
    { binding: 3, resource: myBuffer },
  ],
});

تتيح الدالة WGSL textureSampleLevel استخدام الزخارف الأحاديّة الأبعاد

يمكن الآن أخذ عيّنات باستخدام textureSampleLevel() لتحقيق الاتساق مع الزخارف الثنائية الأبعاد. يتيح لك ذلك أخذ عيّنة من زخرفة أحادية الأبعاد من أداة تظليل رأس، وهو ما كان ممكنًا سابقًا فقط من جزء أداة تظليل باستخدام textureSample(). يمكنك الاطّلاع على المشكلة 382514673.

إيقاف استخدام زخرفة التخزين للقراءة فقط بتنسيق bgra8unorm نهائيًا

تم الآن إيقاف استخدام تنسيق "bgra8unorm" مع زخارف التخزين للقراءة فقط نهائيًا. تمنع مواصفات WebGPU ذلك صراحةً، وكان السماح بذلك سابقًا في Chrome خطأً، لأنّ هذا التنسيق مخصّص للوصول للقراءة فقط وغير قابل للنقل. يمكنك الاطّلاع على المشكلة 427681156.

إزالة سمة isFallbackAdapter في GPUAdapter

كما سبق الإعلان عنه، تمت الآن إزالة سمة GPUAdapter isFallbackAdapter. تم استبدالها بسمة isFallbackAdapter في GPUAdapterInfo التي تم طرحها في Chrome 136. يمكنك الاطّلاع على نية الإزالة.

آخر الأخبار من Dawn

تُستخدَم الدالة wgpuInstanceGetWGSLLanguageFeatures() للحصول على قائمة بميزات لغة WGSL التي تتيحها النسخة. في السابق، كانت هذه الدالة تعرض قيمة WGPUStatus. تم تعديلها لعدم عرض قيمة لأنّها لا يمكن أن تفشل. يمكنك الاطّلاع على المشكلة 429178774.

تعرض الدالة wgpuSurfacePresent() الآن خطأً من نوع WGPUStatus إذا لم يكن للسطح زخرفة حالية. يمكنك الاطّلاع على المشكلة 425930323

تتيح الميزة الجديدة wgpu::InstanceFeatureName::MultipleDevicesPerAdapter للمحوّلات إنشاء أجهزة متعدّدة بدون أن يتم "استهلاكها". يمكنك الاطّلاع على المشكلة 415825174.

يتيح لك مفتاح تبديل الجهاز dump_shaders_on_failure إيقاف التظليلات فقط عند حدوث خطأ لأغراض تحديد المشاكل وحلّها. ينطبق ذلك حصريًا على واجهات D3 الخلفية، ولكن من الممكن توسيعه ليشمل واجهات خلفية أخرى في المستقبل. يمكنك الاطّلاع على المشكلة 429187478.

تم إجراء تغييرات متعدّدة على واجهة Vulkan الخلفية لتقليل النفقات العامة عند إرسال عمليات عرض، خاصةً لتحسين الأداء على وحدات معالجة الرسومات الجوّالة. على سبيل المثال، تخزين VkFramebuffers مؤقتًا.

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

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