زخارف مساحة التخزين للقراءة فقط والقراءة والكتابة
يسمح نوع ربط زخرفة مساحة التخزين لأدوات التظليل بالقراءة من زخارف مساحة التخزين بدون إضافة استخدام 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 147-148
Chrome 146
- تفعيل وضع التوافق مع WebGPU على OpenGL ES 3.1
- المرفقات المؤقتة
- إضافة texture_and_sampler_let في WGSL
- آخر الأخبار في Dawn
Chrome 145
Chrome 144
- إضافة subgroup_id في WGSL
- إضافة uniform_buffer_standard_layout في WGSL
- 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
- تحسين أحمال عمل تعلُّم الآلة باستخدام المجموعات الفرعية
- إزالة دعم أنواع الزخارف القابلة للفلترة من النوع float باعتبارها قابلة للمزج
- آخر الأخبار في Dawn
Chrome 133
- تنسيقات الرأس الإضافية unorm8x4-bgra و1-component
- السماح بطلب حدود غير معروفة باستخدام قيمة غير محدّدة
- تغييرات في قواعد المحاذاة في WGSL
- تحسينات في الأداء في WGSL باستخدام discard
- استخدام VideoFrame displaySize للزخارف الخارجية
- التعامل مع الصور ذات الاتجاهات غير التلقائية باستخدام copyExternalImageToTexture
- تحسين تجربة المطوّرين
- تفعيل وضع التوافق باستخدام featureLevel
- تنظيف الميزات التجريبية للمجموعات الفرعية
- إيقاف الحد الأقصى maxInterStageShaderComponents
- آخر الأخبار في Dawn
Chrome 132
- استخدام طريقة عرض الزخرفة
- مزج زخارف float ذات 32 بت
- سمة GPUDevice adapterInfo
- ضبط سياق لوحة الرسم باستخدام تنسيق غير صالح يؤدي إلى ظهور خطأ JavaScript
- قيود فلترة أداة أخذ العيّنات على الزخارف
- تجربة المجموعات الفرعية الموسّعة
- تحسين تجربة المطوّرين
- دعم تجريبي لتنسيقات الزخارف العادية ذات 16 بت
- آخر الأخبار في Dawn
Chrome 131
- مسافات القطع في WGSL
- GPUCanvasContext getConfiguration()
- يجب ألا تحتوي الأشكال الأساسية للنقاط والخطوط على انحياز في العمق
- الدوال المضمّنة للفحص الشامل للمجموعات الفرعية
- دعم تجريبي لـ multi-draw indirect
- خيار تجميع وحدة تظليل strict math
- إزالة GPUAdapter requestAdapterInfo()
- آخر الأخبار في Dawn
Chrome 130
- المزج الثنائي المصدر
- تحسينات في وقت تجميع أداة التظليل على Metal
- إيقاف GPUAdapter requestAdapterInfo()
- آخر الأخبار في Dawn
Chrome 129
- دعم النطاق العالي الديناميكية (HDR) باستخدام وضع ربط درجات الألوان في لوحة الرسم
- دعم المجموعات الفرعية الموسّع
- آخر الأخبار في Dawn
Chrome 128
- تجربة المجموعات الفرعية
- إيقاف ضبط انحياز العمق للخطوط والنقاط
- إخفاء تحذير "أدوات مطوّري البرامج" بشأن الخطأ غير المحدّد إذا تم استخدام preventDefault
- أخذ عيّنات من WGSL interpolate أولاً ثم إما
- آخر الأخبار في 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
- زخارف float ذات 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