زخارف مساحة التخزين للقراءة فقط والقراءة والكتابة
يسمح نوع ربط زخرفة مساحة التخزين لأدوات التظليل بالقراءة من زخارف مساحة التخزين بدون إضافة استخدام 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 للإشارة إلى احتمال عدم إمكانية النقل باستخدام 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 في مشغّل خدمات إضافة.
سمات معلومات المحوّل الجديدة
تتوفّر الآن سمتا معلومات المحوّل غير العاديتَين d3dShaderModel وvkDriverVersion عند استدعاء requestAdapterInfo() إذا فعّل المستخدم العلامة "ميزات مطوّري WebGPU" على chrome://flags/#enable-webgpu-developer-features. عندما تكون هذه السمات متوافقة:
d3dShaderModelهو الحد الأقصى لرقم نموذج تظليل D3D المتوافق. على سبيل المثال، تشير القيمة 62 إلى أنّ برنامج التشغيل الحالي يتوافق مع HLSL SM 6.2. يمكنك الاطّلاع على المستندات والمشكلة dawn:1254.vkDriverVersionهو رقم إصدار برنامج تشغيل Vulkan الذي يحدّده المورّد. يمكنك الاطّلاع على المستندات والمشكلة chromium:327457605.
vkDriverVersion المعروضة على https://webgpureport.org.إصلاح الأخطاء
يؤدي إنشاء مسارَين باستخدام مجموعات ربط متطابقة باستخدام layout: "auto"، ثم إنشاء مجموعة ربط باستخدام المسار الأول، واستخدامها في المسار الثاني، إلى ظهور GPUValidationError. كان السماح بذلك خطأ في التنفيذ تم إصلاحه الآن باستخدام اختبارات مناسبة. يمكنك الاطّلاع على المشكلة dawn:2402.
تعديلات على Dawn
في واجهة برمجة تطبيقات Dawn، لا يتم الآن استدعاء معاودة الاتصال بالأخطاء غير الملتقَطة التي تم ضبطها باستخدام wgpuDeviceSetUncapturedErrorCallback بعد فقدان جهاز وحدة معالجة الرسومات. يُطابق هذا الإصلاح Dawn مع مواصفات واجهة برمجة تطبيقات JavaScript وتنفيذ Blink. يمكنك الاطّلاع على المشكلة dawn:2459.
لا يغطي هذا المقال سوى بعض النقاط الرئيسية. يمكنك الاطّلاع على القائمة الشاملة لعمليات الإرسال.
الميزات الجديدة في WebGPU
في ما يلي قائمة بكل ما تم تناوله في سلسلة "الميزات الجديدة في WebGPU".
Chrome 149-150
Chrome 147-148
Chrome 146
- إتاحة وضع التوافق مع WebGPU على OpenGL ES 3.1
- المرفقات المؤقتة
- إضافة WGSL texture_and_sampler_let
- تعديلات على Dawn
Chrome 145
Chrome 144
- إضافة WGSL subgroup_id
- إضافة WGSL uniform_buffer_standard_layout
- WebGPU على Linux
- عمليات writeBuffer وwriteTexture أسرع
- تعديلات على Dawn
Chrome 143
Chrome 142
Chrome 141
- اكتمل Tint IR
- تحليل نطاق الأعداد الصحيحة في برنامج تجميع WGSL
- تعديل SPIR-V 1.4 للواجهة الخلفية Vulkan
- تعديلات على Dawn
Chrome 140
- تستهلك طلبات الجهاز المحوّل
- اختصار لاستخدام الزخرفة عندما يتم استخدام طريقة عرض الزخرفة
- تتوافق WGSL textureSampleLevel مع الزخارف الأحادية الأبعاد
- إيقاف استخدام زخرفة مساحة التخزين للقراءة فقط bgra8unorm نهائيًا
- إزالة سمة GPUAdapter isFallbackAdapter
- تعديلات على Dawn
Chrome 139
- إتاحة الزخارف الثلاثية الأبعاد لتنسيقات BC وASTC المضغوطة
- ميزة "core-features-and-limits" الجديدة
- مرحلة التجربة والتقييم لوضع التوافق مع WebGPU
- تعديلات على Dawn
Chrome 138
- اختصار لاستخدام المخزن المؤقت كمورد ربط
- تغييرات في متطلبات حجم المخازن المؤقتة التي يتم ربطها عند الإنشاء
- تقرير البنية لوحدات معالجة الرسومات الحديثة
- إيقاف سمة GPUAdapter isFallbackAdapter نهائيًا
- تعديلات على Dawn
Chrome 137
- استخدام طريقة عرض الزخرفة لربط externalTexture
- نسخ المخازن المؤقتة بدون تحديد الإزاحات والحجم
- WGSL workgroupUniformLoad باستخدام مؤشر إلى atomic
- سمة GPUAdapterInfo powerPreference
- إزالة سمة GPURequestAdapterOptions compatibilityMode
- تعديلات على Dawn
Chrome 136
- سمة GPUAdapterInfo isFallbackAdapter
- تحسينات على وقت تجميع أداة التظليل على D3D12
- حفظ صور لوحة الرسم ونسخها
- إزالة القيود المفروضة على وضع التوافق
- تعديلات على Dawn
Chrome 135
- السماح بإنشاء تنسيق مسار باستخدام تنسيق مجموعة ربط فارغ
- السماح بتوسيع منافذ العرض لتتجاوز حدود أهداف العرض
- الوصول بسهولة أكبر إلى وضع التوافق التجريبي على Android
- إزالة الحد الأقصى maxInterStageShaderComponents
- تعديلات على Dawn
Chrome 134
- تحسين أحمال عمل تعلُّم الآلة باستخدام المجموعات الفرعية
- إزالة إتاحة أنواع الزخارف القابلة للفلترة العائمة كنواع قابلة للمزج
- تعديلات على Dawn
Chrome 133
- تنسيقات الرأس الإضافية unorm8x4-bgra وذات المكوّن الواحد
- السماح بطلب حدود غير معروفة بقيمة غير محدّدة
- تغييرات في قواعد المحاذاة في WGSL
- تحسينات على الأداء في WGSL باستخدام discard
- استخدام VideoFrame displaySize للزخارف الخارجية
- التعامل مع الصور ذات الاتجاهات غير التلقائية باستخدام copyExternalImageToTexture
- تحسين تجربة المطوّرين
- تفعيل وضع التوافق باستخدام featureLevel
- تنظيف ميزات المجموعات الفرعية التجريبية
- إيقاف الحد الأقصى maxInterStageShaderComponents نهائيًا
- تعديلات على Dawn
Chrome 132
- استخدام طريقة عرض الزخرفة
- مزج زخارف عائمة تشغل 32 بت
- سمة GPUDevice adapterInfo
- ضبط سياق لوحة الرسم بتنسيق غير صالح يؤدي إلى ظهور خطأ JavaScript
- قيود على أداة أخذ العيّنات للفلترة على الزخارف
- تجربة المجموعات الفرعية الموسّعة
- تحسين تجربة المطوّرين
- دعم تجريبي لتنسيقات الزخارف العادية التي تشغل 16 بت
- تعديلات على Dawn
Chrome 131
- مسافات القطع في WGSL
- GPUCanvasContext getConfiguration()
- يجب ألا تحتوي الأشكال الأساسية للنقاط والخطوط على انحياز في العمق
- الدوال المضمّنة للفحص الشامل للمجموعات الفرعية
- دعم تجريبي لعملية الرسم غير المباشر المتعدد
- خيار تجميع وحدة أداة التظليل strict math
- إزالة GPUAdapter requestAdapterInfo()
- تعديلات على Dawn
Chrome 130
- المزج الثنائي المصدر
- تحسينات على وقت تجميع أداة التظليل على Metal
- إيقاف GPUAdapter requestAdapterInfo() نهائيًا
- تعديلات على Dawn
Chrome 129
- إتاحة النطاق العالي الديناميكية (HDR) باستخدام وضع ربط درجات الألوان في لوحة الرسم
- إتاحة المجموعات الفرعية الموسّعة
- تعديلات على Dawn
Chrome 128
- تجربة المجموعات الفرعية
- إيقاف ضبط انحياز العمق للخطوط والنقاط نهائيًا
- إخفاء تحذير "أدوات مطوري البرامج" بشأن الأخطاء غير الملتقَطة إذا تم استخدام preventDefault
- WGSL interpolate sampling first and either
- تعديلات على Dawn
Chrome 127
- دعم تجريبي لـ OpenGL ES على Android
- سمة GPUAdapter info
- تحسينات على التوافق التشغيلي مع WebAssembly
- أخطاء محسّنة في أداة ترميز الأوامر
- تعديلات على Dawn
Chrome 126
- زيادة الحد الأقصى maxTextureArrayLayers
- تحسين تحميل المخزن المؤقت للواجهة الخلفية Vulkan
- تحسينات على وقت تجميع أداة التظليل
- يجب أن تكون المخازن المؤقتة للأوامر التي تم إرسالها فريدة
- تعديلات على Dawn
Chrome 125
Chrome 124
- زخارف مساحة التخزين للقراءة فقط والقراءة والكتابة
- دعم عاملي الخدمة والعاملين المشترَكين
- سمات معلومات المحوّل الجديدة
- إصلاح الأخطاء
- تعديلات على Dawn
Chrome 123
- إتاحة الدوال المضمّنة DP4a في WGSL
- مَعلمات المؤشر غير المقيّدة في WGSL
- التجميل اللغوي لبنية إلغاء الإشارة إلى المركّبات في WGSL
- حالة منفصلة للقراءة فقط لجوانب الاستنسل والعمق
- تعديلات على Dawn
Chrome 122
- توسيع مدى الوصول باستخدام وضع التوافق (ميزة قيد التطوير)
- زيادة الحد الأقصى maxVertexAttributes
- تعديلات على Dawn
Chrome 121
- إتاحة WebGPU على Android
- استخدام DXC بدلاً من FXC لتجميع أداة التظليل على Windows
- طلبات الطابع الزمني في عمليات الحوسبة والعرض
- نقاط الدخول التلقائية إلى وحدات أداة التظليل
- إتاحة display-p3 كمساحة ألوان GPUExternalTexture
- معلومات عن ذاكرة الكومة
- تعديلات على Dawn
Chrome 120
- إتاحة القيم العائمة التي تشغل 16 بت في WGSL
- قدّم أفضل ما لديك
- تغييرات في حالة العمق والاستنسل
- تعديلات على معلومات المحوّل
- تحديد كمية طلبات الطابع الزمني
- ميزات التنظيف الشامل
Chrome 119
- زخارف عائمة تشغل 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
Chrome 114
- تحسين JavaScript
- عرض getCurrentTexture() على لوحة رسم غير مضبوطة يعرض InvalidStateError
- تعديلات على WGSL
- تعديلات على Dawn