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

François Beaufort
François Beaufort

دعم تجريبي لـ OpenGL ES على Android

يمكنك الآن الوصول إلى GPUAdapter من الخلفية المستندة إلى OpenGL ES عند طلب وضع التوافق التجريبي مع WebGPU في Chrome على Android. ويُعدّ ذلك مفيدًا بشكل خاص لأجهزة Android التي لا تتوافق مع الإصدار 1.1 من Vulkan أو الإصدارات الأحدث. راجِع المثال التالي والمشكلة dawn:1545.

// Request a GPUAdapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({ compatibilityMode: true });
تعرض صفحة تقرير WebGPU معلومات GPUAdapter من الخلفية OpenGL ES على جهاز Android.
معلومات محوّل OpenGL ES في webgpureport.org

بما أنّ هذه الميزة لا تزال في مرحلة تجريبية، عليك اتّباع الخطوات التالية:

  1. فعِّل علامات Chrome التالية: "Unsafe WebGPU Support" و"WebGPU Developer Features" و "Enable command line on non-rooted devices".
  2. فعِّل ميزة "تصحيح أخطاء الجهاز عبر USB" على جهاز Android.
  3. وصِّل جهاز Android بمحطة العمل، وشغِّل adb shell 'echo "_ --use-webgpu-adapter=opengles" > /data/local/tmp/chrome-command-line' لتفضيل OpenGL ES على Vulkan، ثم أعِد تشغيل Chrome.

سمة info في GPUAdapter

يمكن الآن الحصول على معلومات تحديد الهوية حول محوّل بطريقة متزامنة باستخدام السمة info في GPUAdapter. في السابق، كانت الطريقة الوحيدة للحصول على معلومات المحوّل هي استدعاء طريقة requestAdapterInfo() غير المتزامنة في GPUAdapter. ومع ذلك، تمت إزالة requestAdapterInfo() من مواصفات WebGPU وسيتم إزالتها من Chrome في وقت لاحق من هذا العام لمنح مطوّري الويب وقتًا كافيًا لإجراء عملية الانتقال اللازمة. يُرجى الاطّلاع على المثال التالي، حالة Chrome، والمشكلة 335383516.

const adapter = await navigator.gpu.requestAdapter();
const info = adapter.info;

// During the transition period, you can use the following:
// const info = adapter.info || await adapter.requestAdapterInfo();

console.log(`Vendor: ${info.vendor}`); // "arm"
console.log(`Architecture: ${info.architecture}`); // "valhall"

تحسينات على التشغيل التفاعلي لـ WebAssembly

للسماح بتمرير أكوام WebAssembly مباشرةً إلى WebGPU، لم يعُد حجم وسيطات BufferSource التالية محصورًا بـ 2 غيغابايت: dynamicOffsetsData في setBindGroup()، والمصدر data في writeBuffer()، والمصدر data Pin writeTexture(). اطّلِع على المشكلة 339049388.

تحسينات على أخطاء ترميز الأوامر

ستتضمّن بعض أخطاء التحقّق من الصحة التي يتم إطلاقها من برامج ترميز الأوامر الآن معلومات سياقية محسّنة. على سبيل المثال، أدت محاولة بدء عملية حسابية أثناء استمرار عملية العرض إلى حدوث الخطأ التالي.

Command cannot be recorded while [CommandEncoder (unlabeled)] is locked and [RenderPassEncoder (unlabeled)] is currently open.
    at CheckCurrentEncoder (..\..\third_party\dawn\src\dawn\native\EncodingContext.h:106)

يصف هذا الخطأ سبب حدوثه، ولكنّه لا يشير إلى المكالمة التي تسبّبت في حدوث خطأ التحقّق. يعرض الخطأ التالي الرسائل المحسّنة التي تتضمّن الأمر الذي أدّى إلى حدوث الخطأ. يمكنك الاطّلاع على التغيير 192245.

Command cannot be recorded while [CommandEncoder (unlabeled)] is locked and [RenderPassEncoder (unlabeled)] is currently open.
 - While encoding [CommandEncoder (unlabeled)].BeginComputePass([ComputePassDescriptor]).

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

لم تعُد واجهة برمجة التطبيقات webgpu.h C API تعرض wgpuSurfaceGetPreferredFormat()، وهو المكافئ بلغة C لـ wgpu::Surface::GetPreferredFormat() في Dawn. بدلاً من ذلك، استخدِم wgpu::Surface::GetCapabilities() للحصول على قائمة بالتنسيقات المتوافقة، ثم استخدِم formats[0] للحصول على تنسيق النسيج المفضّل لهذا السطح. في الوقت الحالي، يؤدي استدعاء wgpu::Surface::GetPreferredFormat() إلى ظهور تحذير بشأن الإيقاف النهائي. يمكنك الاطّلاع على المشكلة رقم 290.

أصبحت استخدامات النسيج المتوافقة لسطح ما متاحة الآن من خلال wgpu::SurfaceCapabilities::usages عند طلب wgpu::Surface::GetCapabilities(). من المتوقّع أن تتضمّن هذه الأوصاف دائمًا wgpu::TextureUsage::RenderAttachment. اطّلِع على المشكلة 301.

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

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