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

François Beaufort
François Beaufort

زخارف مساحة التخزين للقراءة فقط والقراءة

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

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

يُنصَح باستخدام سمة Requires-directive للإشارة إلى احتمال عدم إمكانية النقل باستخدام requires readonly_and_readwrite_storage_textures; أعلى رمز أداة تظليل WGSL. يُرجى الاطّلاع على المثال التالي ومشكلة 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 هو الحدّ الأقصى المسموح به لطراز وحدة تظليل D3D. على سبيل المثال، تشير القيمة 62 إلى أن برنامج التشغيل الحالي يتوافق مع HLSL SM 6.2. يمكنك الاطّلاع على المستندات وissue dawn:1254.

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

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

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

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

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

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

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

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

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

الإصدار 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 من متصفّح Chrome