مواد تخزين للقراءة فقط والقراءة والكتابة
يسمح نوع ربط نسيج التخزين لبرامج التظليل بالقراءة من أنسجة التخزين بدون إضافة استخدام 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. يُرجى الاطّلاع على المستندات والمشكلة dawn:1254.
vkDriverVersion
هو رقم الإصدار الذي يحدّده المورّد لبرنامج تشغيل Vulkan. يُرجى الاطّلاع على المستندات والمشكلة chromium:327457605.
إصلاح الأخطاء
يؤدي إنشاء خطَّتَي تدفّق تتضمّنان مجموعات ربط متطابقة باستخدام layout: "auto"
، ثم إنشاء مجموعة ربط مع خطّة التدفّق الأولى واستخدامها في خطّة التدفّق الثانية، إلى ظهور خطأ GPUValidationError الآن. كان السماح بذلك خطأ في التنفيذ تم إصلاحه الآن من خلال اختبارات مناسبة. راجِع issue dawn:2402.
آخر الأخبار من Dawn
في واجهة برمجة التطبيقات Dawn API، لا يتم الآن استدعاء دالة الاستدعاء غير المسجَّلة للخطأ التي تم ضبطها باستخدام wgpuDeviceSetUncapturedErrorCallback
بعد فقدان جهاز وحدة معالجة الرسومات. يتوافق هذا الإصلاح مع مواصفات واجهة برمجة التطبيقات JavaScript وتنفيذ Blink. راجِع الطلب dawn:2459.
لا يتناول هذا التقرير سوى بعض أهم التفاصيل. اطّلِع على قائمة المساهمين الشاملة.
الميزات الجديدة في WebGPU
قائمة بكل ما تم تناوله في سلسلة الميزات الجديدة في WebGPU
Chrome 131
- اقتصاص المسافات في WGSL
- GPUCanvasContext getConfiguration()
- يجب ألا يكون لعناصر النقطة والخط الأساسية انحياز عمق
- وظائف مدمجة للفحص الشامل للمجموعات الفرعية
- إتاحة تجريبية لميزة "الرسم المتعدّد غير المباشر"
- خيار تجميع وحدة تظليل الرياضيات الصارمة
- إزالة طلب GPUAdapter requestAdapterInfo()
- آخر الأخبار حول Dawn
Chrome 130
- دمج مصدرَين
- تحسينات على وقت تجميع برامج التظليل في Metal
- إيقاف نهائي لطريقة requestAdapterInfo() في GPUAdapter
- آخر الأخبار حول Dawn
الإصدار 129 من Chrome
- التوافق مع النطاق العالي الديناميكية (HDR) باستخدام وضع "تعيين نغمة الصورة"
- إتاحة المجموعات الفرعية الموسّعة
- آخر الأخبار حول Dawn
Chrome 128
- تجربة المجموعات الفرعية
- إيقاف نهائي لإعداد الميل إلى العمق للخطوط والنقاط
- إخفاء تحذير أدوات مطوّري البرامج بشأن الخطأ الذي لم يتم تسجيله في حال استخدام preventDefault
- تستخدم WGSL أسلوب الاستقراء في أخذ العينات أولاً ثم
- آخر الأخبار حول Dawn
Chrome 127
- الإصدار التجريبي من OpenGL ES على Android
- سمة info في GPUAdapter
- تحسينات على إمكانية التشغيل التفاعلي لـ WebAssembly
- أخطاء محسّنة في برنامج ترميز الأوامر
- آخر الأخبار حول Dawn
الإصدار 126 من Chrome
- زيادة الحد الأقصى لعدد الطبقات في مصفوفة النسيج
- تحسين تحميل المخزن المؤقت لنظام Vulkan الأساسي
- تحسينات على وقت تجميع برامج التظليل
- يجب أن تكون وحدات تخزين المؤقتات للطلبات المرسَلة فريدة
- آخر الأخبار حول Dawn
الإصدار 125 من Chrome
- المجموعات الفرعية (ميزة قيد التطوير)
- العرض على شكل شريحة من الزخرفة الثلاثية الأبعاد
- آخر الأخبار حول Dawn
Chrome 124
- ملفات تخزين للقراءة فقط والقراءة والكتابة
- توافق مشغّلي الخدمات والمشغّلين المشترَكين
- سمات معلومات المحوِّل الجديدة
- إصلاح الأخطاء
- آخر الأخبار حول Dawn
Chrome 123
- إتاحة الوظائف المضمّنة في DP4a في WGSL
- مَعلمات المؤشر غير المقيّدة في WGSL
- Syntax sugar for dereferencing composites in WGSL
- حالة منفصلة للقراءة فقط لجانبَي الاستنسل والعمق
- آخر الأخبار حول Dawn
Chrome 122
- توسيع مدى الوصول باستخدام وضع التوافق (ميزة قيد التطوير)
- زيادة الحد الأقصى لعدد سمات الرأس
- آخر الأخبار حول 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()
- إتاحة تجريبية لنسيج التخزين للقراءة والكتابة والقراءة فقط
- آخر الأخبار حول Dawn
Chrome 117
- عدم ضبط مخزن رؤوس المضلّعات
- إلغاء ضبط مجموعة الربط
- تجاهُل الأخطاء الناتجة عن إنشاء مسار بيانات غير متزامن عند فقدان الجهاز
- تعديلات على إنشاء وحدة وحدات الإضاءة SPIR-V
- تحسين تجربة المطوّرين
- عمليات وضع البيانات في ذاكرة التخزين المؤقت باستخدام تنسيق يتم إنشاؤه تلقائيًا
- آخر الأخبار حول Dawn
Chrome 116
- دمج WebCodecs
- الجهاز المفقود الذي تم إرجاعه بواسطة GPUAdapter
requestDevice()
- الحفاظ على سلاسة تشغيل الفيديو في حال تلقّي طلب
importExternalTexture()
- الامتثال للمواصفات
- تحسين تجربة المطوّرين
- آخر الأخبار حول Dawn
Chrome 115
- إضافات لغات WGSL المتوافقة
- التوافق التجريبي مع Direct3D 11
- استخدام وحدة معالجة الرسومات المنفصلة تلقائيًا عند استخدام طاقة التيار المتّصل
- تحسين تجربة المطوّرين
- آخر الأخبار حول Dawn
الإصدار 114 من Chrome
- تحسين JavaScript
- تؤدي دالة getCurrentTexture() على لوحة غير مُعدَّة إلى طرح InvalidStateError
- آخر الأخبار حول WGSL
- آخر الأخبار حول Dawn