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

François Beaufort
François Beaufort

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

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

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

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

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

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