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

François Beaufort
François Beaufort

مواد تخزين للقراءة فقط والقراءة والكتابة

يسمح نوع ربط نسيج التخزين لبرامج التظليل بالقراءة من أنسجة التخزين بدون إضافة استخدام TEXTURE_BINDING، وتنفيذ عمليات قراءة وكتابة مختلطة على تنسيقات معيّنة. عندما تكون "readonly_and_readwrite_storage_textures" إضافة اللغة في WGSL متوفّرة في navigator.gpu.wgslLanguageFeatures، يمكنك الآن ضبط إذن وصول GPUStorageTexture على "read-write" أو "read-only" عند إنشاء تنسيق مجموعة ربط. في السابق، كان هذا الخيار متاحًا في "write-only" فقط.

بعد ذلك، يمكن لرمز برنامج Shader في WGSL استخدام read_write وread لتحديد الوصول إلى نسيج التخزين، وتتصرف الدالتان المضمّنتان textureLoad() وtextureStore() وفقًا لذلك، وتتوفّر دالة textureBarrier() جديدة مدمجة لمزامنة عمليات الوصول إلى ذاكرة النسيج في مجموعة عمل.

ننصحك باستخدام توجيه requires للإشارة إلى احتمال عدم إمكانية النقل باستخدام requires readonly_and_readwrite_storage_textures; في أعلى رمز برنامج Shader لـ WGSL. اطّلِع على المثال التالي وissue dawn:1972.

if (!navigator.gpu.wgslLanguageFeatures.has("readonly_and_readwrite_storage_textures")) {
  throw new Error("Read-only and read-write storage textures are not available");
}

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

const bindGroupLayout = device.createBindGroupLayout({
  entries: [{
    binding: 0,
    visibility: GPUShaderStage.COMPUTE,
    storageTexture: {
      access: "read-write", // <-- New!
      format: "r32uint",
    },
  }],
});

const shaderModule = device.createShaderModule({ code: `
  requires readonly_and_readwrite_storage_textures;

  @group(0) @binding(0) var tex : texture_storage_2d<r32uint, read_write>;

  @compute @workgroup_size(1, 1)
  fn main(@builtin(local_invocation_id) local_id: vec3u) {
    var data = textureLoad(tex, vec2i(local_id.xy));
    data.x *= 2;
    textureStore(tex, vec2i(local_id.xy), data);
  }`
});

// You can now create a compute pipeline with this shader module and
// send the appropriate commands to the GPU.

إتاحة "العمال في الخدمة" و"العمال المشترَكون"

تنقل تقنية WebGPU في Chrome دعم مهام الويب إلى المستوى التالي، حيث تتيح الآن استخدام كلّ من مهام الخدمة ومهام العمل المشتركة. يمكنك استخدام مشغّلات الخدمات لتحسين المهام التي تعمل في الخلفية وإمكانات العمل بلا إنترنت، واستخدام مشغّلات مشترَكة لمشاركة الموارد بكفاءة في جميع النصوص البرمجية. راجِع المشكلة chromium:41494731.

اطّلِع على نموذج إضافة Chrome وإضافة WebLLM على Chrome لمعرفة كيفية استخدام WebGPU في عامل خدمة إضافة.

لقطة شاشة لإضافة WebLLM على Chrome
إضافة WebLLM في Chrome

سمات معلومات المحوِّل الجديدة

تتوفّر الآن سمات معلومات المحوِّل غير العادية d3dShaderModel وvkDriverVersion عند استدعاء requestAdapterInfo() إذا فعّل المستخدم العلامة "ميزات مطوّري WebGPU" في chrome://flags/#enable-webgpu-developer-features. في الحالات التالية:

  • d3dShaderModel هو الحد الأقصى لعدد نماذج Shader في D3D المتوافقة. على سبيل المثال، تشير القيمة 62 إلى أنّ برنامج التشغيل الحالي متوافق مع HLSL SM 6.2. يُرجى الاطّلاع على المستندات والمشكلة dawn:1254.

  • vkDriverVersion هو رقم الإصدار الذي يحدّده المورّد لبرنامج تشغيل Vulkan. يُرجى الاطّلاع على المستندات والمشكلة chromium:327457605.

لقطة شاشة لموقع https://webgpureport.org تعرض vkDriverVersion في معلومات المحوِّل
معلومات المحوِّل vkDriverVersion معروضة على https://webgpureport.org.

إصلاح الأخطاء

يؤدي إنشاء خطَّتَي تدفّق تتضمّنان مجموعات ربط متطابقة باستخدام layout: "auto"، ثم إنشاء مجموعة ربط مع خطّة التدفّق الأولى واستخدامها في خطّة التدفّق الثانية، إلى ظهور خطأ GPUValidationError الآن. كان السماح بذلك خطأ في التنفيذ تم إصلاحه الآن من خلال اختبارات مناسبة. راجِع issue dawn:2402.

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

في واجهة برمجة التطبيقات Dawn API، لا يتم الآن استدعاء دالة الاستدعاء غير المسجَّلة للخطأ التي تم ضبطها باستخدام wgpuDeviceSetUncapturedErrorCallback بعد فقدان جهاز وحدة معالجة الرسومات. يتوافق هذا الإصلاح مع مواصفات واجهة برمجة التطبيقات JavaScript وتنفيذ Blink. راجِع الطلب dawn:2459.

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

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

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

Chrome 131

Chrome 130

الإصدار 129 من Chrome

Chrome 128

Chrome 127

الإصدار 126 من Chrome

الإصدار 125 من Chrome

Chrome 124

Chrome 123

Chrome 122

الإصدار 121 من Chrome

الإصدار 120 من Chrome

الإصدار 119 من Chrome

Chrome 118

Chrome 117

Chrome 116

Chrome 115

الإصدار 114 من Chrome

Chrome 113