قد يبدو عدد ميزات WebGPU قليلاً هذه المرة، ولكن بعض التطورات الرئيسية على وشك الظهور. ستتضمّن الإصدارات المستقبلية ميزات مثل تحسينات سرعة تجميع التظليل، وتغييرات على النموذج غير المتزامن للتنفيذ باستخدام WGPUFuture.
المجموعات الفرعية (ميزة قيد التطوير)
تتيح ميزة المجموعات الفرعية التوازي على مستوى SIMD، ما يسمح لسلاسل المحادثات ضمن مجموعة بالتواصل وإجراء عمليات رياضية جماعية (على سبيل المثال، حساب مجموع 16 رقمًا). ويوفّر ذلك شكلاً عالي الكفاءة لمشاركة البيانات بين سلاسل المحادثات.
تتوافق واجهات برمجة تطبيقات GPU الحديثة مع عمليات المجموعات الفرعية، ولكن تختلف تفاصيل التسمية والتنفيذ. حدّد فريق Chrome أوجه التشابه ويعمل الآن على توحيد هذه الميزة. يمكنك الاطّلاع على الاقتراح وإضافة تعليق إذا كانت لديك أسئلة.
هناك تنفيذ بسيط وغير موحّد للمجموعات الفرعية خلف علامة "ميزات تجريبية لمنصة الويب" في chrome://flags/#enable-experimental-web-platform-features ليتمكّن المطوّرون من تجربتها ومشاركة الملاحظات، لأنّه لم يتم إثبات المزايا في العالم الحقيقي بعد في سياق WebGPU.
عندما تتوفّر ميزة "chromium-experimental-subgroups" في GPUAdapter، اطلب GPUDevice باستخدام هذه الميزة للحصول على دعم تجريبي للمجموعات الفرعية في WGSL واطّلِع على الحدّين الأدنى والأقصى minSubgroupSize وmaxSubgroupSize.
عليك أيضًا تفعيل هذه الإضافة بشكلٍ صريح في رمز WGSL باستخدام enable chromium_experimental_subgroups. عند تفعيلها، يمكنك الوصول إلى الإضافات التالية:
subgroup_invocation_id: قيمة مضمّنة لمؤشر سلسلة المحادثات ضمن المجموعة الفرعيةsubgroup_size: قيمة مضمّنة للوصول إلى حجم المجموعة الفرعيةsubgroupBallot(value):تعرض مجموعة من حقول البتات حيث يكون البت المقابل لـsubgroup_invocation_idهو 1 إذا كانتvalueصحيحة لهذا الاستدعاء النشط و0 بخلاف ذلك.subgroupBroadcast(value, id): تنشرvalueمن الاستدعاء الذي يتطابق فيهsubgroup_invocation_idمعidإلى جميع الاستدعاءات ضمن المجموعة الفرعية. ملاحظة: يجب أن يكونidثابتًا في وقت التجميع.
يوفّر مقتطف الرمز البرمجي التالي أساسًا للتجربة واكتشاف إمكانات المجموعات الفرعية.
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("chromium-experimental-subgroups")) {
throw new Error("Experimental subgroups support is not available");
}
// Explicitly request experimental subgroups support.
const device = await adapter.requestDevice({
requiredFeatures: ["chromium-experimental-subgroups"],
});
const shaderModule = device.createShaderModule({ code: `
enable chromium_experimental_subgroups;
@compute @workgroup_size(64) fn main(
@builtin(global_invocation_id) global_id : vec3u,
@builtin(subgroup_size) sg_size : u32,
@builtin(subgroup_invocation_id) sg_id : u32) {
// TODO: Use subgroupBallot() and subgroupBroadcast().
}`,
});
العرض على شريحة من زخرفة ثلاثية الأبعاد
يمكنك الآن العرض مباشرةً على شريحة أو شرائح من الزخارف ثلاثية الأبعاد ضمن عمليات العرض، ما يوسّع إمكاناتها إلى ما هو أبعد من العرض الشائع للزخارف ثنائية الأبعاد، باستخدام العضو الجديد depthSlice في GPURenderPassColorAttachment. تتيح لك هذه الإضافة، على سبيل المثال، إنشاء مشاهد وتأثيرات مستندة إلى وحدات البكسل الحجمية من خلال العرض مباشرةً في وحدات تخزين الزخارف ثلاثية الأبعاد. راجِع المشكلة dawn:1020.
آخر الأخبار في Dawn
يمكنك الاطّلاع على القائمة الشاملة لعمليات الإرسال.
الميزات الجديدة في 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 نهائيًا
- إزالة سمة isFallbackAdapter في GPUAdapter
- آخر الأخبار في Dawn
Chrome 139
- تفعيل دعم الزخارف ثلاثية الأبعاد لتنسيقات BC وASTC المضغوطة
- ميزة "core-features-and-limits" الجديدة
- مرحلة التجربة والتقييم لوضع التوافق مع WebGPU
- آخر الأخبار في Dawn
Chrome 138
- اختصار لاستخدام المخزن المؤقت كمورد ربط
- تغييرات في متطلبات حجم المخازن المؤقتة التي يتم ربطها عند الإنشاء
- تقرير بنية وحدات معالجة الرسومات الحديثة
- إيقاف سمة isFallbackAdapter في GPUAdapter نهائيًا
- آخر الأخبار في Dawn
Chrome 137
- استخدام طريقة عرض الزخرفة لربط externalTexture
- نسخ المخازن المؤقتة بدون تحديد الإزاحات والحجم
- WGSL workgroupUniformLoad باستخدام مؤشر إلى atomic
- سمة powerPreference في GPUAdapterInfo
- إزالة سمة compatibilityMode في GPURequestAdapterOptions
- آخر الأخبار في Dawn
Chrome 136
- سمة isFallbackAdapter في GPUAdapterInfo
- تحسينات في وقت تجميع التظليل على D3D12
- حفظ صور لوحة الرسم ونسخها
- إزالة القيود المفروضة على وضع التوافق
- آخر الأخبار في Dawn
Chrome 135
- السماح بإنشاء تنسيق خط أنابيب باستخدام تنسيق مجموعة ربط فارغ
- السماح بتوسيع منافذ العرض إلى ما بعد حدود أهداف العرض
- تسهيل الوصول إلى وضع التوافق التجريبي على Android
- إزالة الحدّ الأقصى maxInterStageShaderComponents
- آخر الأخبار في Dawn
Chrome 134
- تحسين أحمال عمل تعلُّم الآلة باستخدام المجموعات الفرعية
- إزالة دعم أنواع الزخارف القابلة للفلترة من النوع float باعتبارها قابلة للمزج
- آخر الأخبار في Dawn
Chrome 133
- تنسيقات الرأس الإضافية unorm8x4-bgra و1-component
- السماح بطلب حدود غير معروفة بقيمة غير محدّدة
- تغييرات في قواعد المحاذاة في WGSL
- تحسينات في الأداء في WGSL باستخدام discard
- استخدام displaySize في VideoFrame للزخارف الخارجية
- التعامل مع الصور ذات الاتجاهات غير التلقائية باستخدام copyExternalImageToTexture
- تحسين تجربة المطوّرين
- تفعيل وضع التوافق باستخدام featureLevel
- تنظيف ميزات المجموعات الفرعية التجريبية
- إيقاف الحدّ الأقصى maxInterStageShaderComponents نهائيًا
- آخر الأخبار في Dawn
Chrome 132
- استخدام طريقة عرض الزخرفة
- مزج الزخارف من النوع float التي تشغل 32 بت
- سمة adapterInfo في GPUDevice
- ضبط سياق لوحة الرسم بتنسيق غير صالح يؤدي إلى عرض خطأ 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 sampling first and either
- آخر الأخبار في Dawn
Chrome 127
- دعم تجريبي لـ OpenGL ES على Android
- سمة info في GPUAdapter
- تحسينات في التوافق التشغيلي مع 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