مواد تخزين للقراءة فقط والقراءة والكتابة
يسمح نوع ربط نسيج التخزين لبرامج التظليل بالقراءة من أنسجة التخزين بدون إضافة استخدام 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 في مشغّل خدمات الإضافات.
سمات معلومات المحوِّل الجديدة
أصبحت سمات معلومات المحوِّل غير العادية d3dShaderModel
وvkDriverVersion
متاحة الآن عند استدعاء requestAdapterInfo()
إذا فعّل المستخدم العلامة "ميزات مطوّري WebGPU" في chrome://flags/#enable-webgpu-developer-features
. عند توفّرها:
d3dShaderModel
هو الحد الأقصى لعدد نماذج Shader في D3D المتوافقة. على سبيل المثال، تشير القيمة 62 إلى أنّ برنامج التشغيل الحالي متوافق مع HLSL SM 6.2. يمكنك الاطّلاع على المستندات ورقم الفجر:1254.
vkDriverVersion
هو رقم الإصدار الذي يحدّده المورّد لبرنامج تشغيل Vulkan. اطّلِع على المستندات والمشكلة chromium:327457605.
إصلاح الأخطاء
يؤدي إنشاء خطَّتَي تدفّق تتضمّنان مجموعات ربط متطابقة باستخدام layout: "auto"
، ثم إنشاء مجموعة ربط مع خطّة التدفّق الأولى واستخدامها في خطّة التدفّق الثانية، إلى ظهور خطأ GPUValidationError الآن. وقد كان السماح بهذه المشكلة بمثابة خطأ في التنفيذ تم إصلاحه الآن باستخدام الاختبارات المناسبة. راجِع issue dawn:2402.
آخر الأخبار من Dawn
في واجهة برمجة التطبيقات Dawn API، لا يتم الآن استدعاء دالة الاستدعاء غير المسجَّلة للخطأ التي تم ضبطها باستخدام wgpuDeviceSetUncapturedErrorCallback
بعد فقدان جهاز وحدة معالجة الرسومات. يعمل هذا الإصلاح على توافق Dawn مع مواصفات واجهة برمجة تطبيقات JavaScript وتنفيذ Blink. راجِع الطلب dawn:2459.
لا يتناول هذا التقرير سوى بعض أهم التفاصيل. اطّلِع على قائمة المساهمين الشاملة.
الميزات الجديدة في WebGPU
قائمة بكل ما تم تناوله في سلسلة الميزات الجديدة في WebGPU
الإصدار 131 من Chrome
- اقتصاص المسافات في WGSL
- GPUCanvasContext getConfiguration()
- يجب ألا تحتوي الوحدات الأولية للنقاط والخطوط على انحياز في العمق.
- وظائف مدمجة للفحص الشامل للمجموعات الفرعية
- إتاحة تجريبية للرسم المتعدّد غير المباشر
- خيار تجميع وحدة تظليل الرياضيات الصارمة
- إزالة requestAdapterInfo() لمهايئ وحدة معالجة الرسومات
- إشعارات الفجر
Chrome 130
- دمج مصدرَين
- تحسينات على وقت تجميع برامج التظليل في Metal
- إيقاف نهائي لطريقة requestAdapterInfo() في GPUAdapter
- آخر الأخبار حول Dawn
الإصدار 129 من Chrome
- التوافق مع النطاق العالي الديناميكية (HDR) باستخدام وضع "تعيين نغمة الصورة"
- إتاحة المجموعات الفرعية الموسّعة
- آخر الأخبار حول Dawn
Chrome 128
- تجربة المجموعات الفرعية
- إيقاف نهائي لإعداد "انحياز العمق" للخطوط والنقاط
- إخفاء تحذير أدوات مطوّري البرامج بشأن الخطأ الذي لم يتم تسجيله في حال استخدام preventDefault
- دمج WGSL أخذ العينات أولاً وإمّا
- إشعارات الفجر
الإصدار 127 من Chrome
- الإصدار التجريبي من OpenGL ES على Android
- سمة معلومات محوّل وحدة معالجة الرسومات
- تحسينات على إمكانية التشغيل التفاعلي لـ WebAssembly
- أخطاء محسّنة في برنامج ترميز الأوامر
- آخر الأخبار حول Dawn
الإصدار 126 من Chrome
- زيادة الحد الأقصى لعدد الطبقات في مصفوفة Texture
- تحسين تحميل المخزن المؤقت لنظام Vulkan الأساسي
- تحسينات وقت تجميع Shader
- يجب أن تكون وحدات تخزين المؤقتات للطلبات المرسَلة فريدة
- آخر الأخبار حول Dawn
الإصدار 125 من Chrome
Chrome 124
- ملفات تخزين للقراءة فقط والقراءة والكتابة
- توافق مشغّلي الخدمات والمشغّلين المشترَكين
- سمات معلومات المحوِّل الجديدة
- إصلاح الأخطاء
- آخر الأخبار حول Dawn
Chrome 123
- توفُّر دوال DP4a المضمَّنة في WGSL
- مَعلمات المؤشر غير المقيّدة في WGSL
- تحسينات في البنية لإزالة الإشارة إلى العناصر المركبة في WGSL
- حالة القراءة فقط لجوانب الاستنسل والعمق
- آخر الأخبار حول Dawn
الإصدار 122 من Chrome
- توسيع مدى الوصول باستخدام وضع التوافق (ميزة قيد التطوير)
- زيادة الحد الأقصى لعدد سمات الرأس
- آخر الأخبار حول Dawn
الإصدار 121 من Chrome
- إتاحة WebGPU على Android
- استخدام DXC بدلاً من FXC لتجميع البرامج النصية لتأثيرات الإضاءة على نظام التشغيل Windows
- طلبات البحث عن الطابع الزمني في بطاقات الحوسبة والعرض
- نقاط الدخول التلقائية إلى وحدات تأثيرات التظليل
- إتاحة display-p3 كمساحة ألوان GPUExternalTexture
- معلومات عن مجموعات الذاكرة
- آخر الأخبار حول Dawn
الإصدار 120 من Chrome
- إتاحة استخدام قيم الفاصلة العائمة 16 بت في WGSL
- الارتقاء إلى آفاق جديدة
- التغييرات في حالة "استنسل العمق"
- تعديلات على معلومات المحوّل
- تجميع طلبات البحث عن الطوابع الزمنية
- ميزات تنظيف الربيع
الإصدار 119 من Chrome
- المواد التي تتضمّن قيمًا عائمة بسعة 32 بت وقابلة للفلترة
- تنسيق رأس العمود unorm10-10-10-2
- تنسيق مادة عرض rgb10a2uint
- آخر الأخبار حول Dawn
Chrome 118
- إتاحة HTMLImageElement وImageData في
copyExternalImageToTexture()
- إتاحة تجريبية لنسيج التخزين للقراءة والكتابة والقراءة فقط
- إشعارات الفجر
Chrome 117
- إلغاء ضبط مخزن رؤوس المضلّعات
- إلغاء ضبط مجموعة الربط
- كتم الأخطاء الناتجة عن إنشاء مسار غير متزامن عند فقدان الجهاز
- تعديلات على إنشاء وحدة وحدات الإضاءة SPIR-V
- تحسين تجربة المطوِّرين
- مسارات التخزين المؤقت باستخدام التنسيق الذي يتم إنشاؤه تلقائيًا
- إشعارات الفجر
Chrome 116
- دمج WebCodecs
- الجهاز المفقود الذي تم إرجاعه بواسطة GPUAdapter
requestDevice()
- الحفاظ على سلاسة تشغيل الفيديو في حال تلقّي طلب
importExternalTexture()
- توافق المواصفات
- تحسين تجربة المطوّرين
- آخر الأخبار حول Dawn
Chrome 115
- إضافات لغات WGSL المتوافقة
- التوافق التجريبي مع Direct3D 11
- استخدام وحدة معالجة الرسومات المنفصلة تلقائيًا عند استخدام مصدر طاقة متناوب
- تحسين تجربة المطوِّرين
- إشعارات الفجر
الإصدار 114 من Chrome
- تحسين JavaScript
- getCurrentTexture() على لوحة الرسم التي لم يتم ضبطها تؤدي إلى SpamStateError
- إشعارات من WGSL
- آخر الأخبار حول Dawn