Published: January 7, 2026
إضافة subgroup_id في لغة WGSL
تتيح لك إضافة subgroup_id في لغة WGSL استخدام القيم المضمّنة الجديدة التالية في مجموعات العمل عند تفعيل إضافة subgroups:
subgroup_id: يوفّر رقم تعريف المجموعة الفرعية للاستدعاء ضمن مجموعة العمل الحالية.num_subgroups: يعرض عدد المجموعات الفرعية في مجموعة العمل.
في السابق، كان عليك إعادة إنشاء رقم تعريف المجموعة الفرعية (عادةً من خلال العمليات الذرية) لفهرسة الذاكرة باستخدام أرقام تعريف استدعاء المجموعة الفرعية لتجنُّب تداخل عمليات الوصول إلى الذاكرة. يمكنك الآن استخدام subgroup_id لملء النصف الآخر من هذه المعادلة. بما أنّ هذه الوظيفة غير متاحة بعد على واجهة D3D الخلفية، يتم محاكاتها هناك. من المفترض أن يكون من الآمن إنشاء معادلة لـ local_invocation_index على النحو التالي: subgroup_invocation_id + subgroup_size * subgroup_id. يُرجى العِلم أنّه قد تكون هناك حالات لا تكون فيها المجموعات الفرعية كاملة.
يمكن رصد هذه الإضافة في اللغة باستخدام navigator.gpu.wgslLanguageFeatures. ننصحك باستخدام توجيه `requires` للإشارة إلى احتمال عدم إمكانية نقل الرمز البرمجي باستخدام requires subgroup_id; في أعلى رمز تظليل WGSL. انظر المثال التالي والنية في طرحه.
if (!navigator.gpu.wgslLanguageFeatures.has("subgroup_id")) {
throw new Error(`WGSL subgroup_id and num_subgroups built-in values are not available`);
}
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("subgroups")) {
throw new Error("Subgroups support is not available");
}
const device = await adapter.requestDevice({ requiredFeatures: ["subgroups"] });
const shaderModule = device.createShaderModule({ code: `
enable subgroups;
requires subgroup_id;
@compute @workgroup_size(64, 1, 1)
fn main(@builtin(subgroup_id) subgroup_id : u32,
@builtin(num_subgroups) num_subgroups : u32) {
// TODO: Use subgroup_id and num_subgroups values.
}`,
});
إضافة uniform_buffer_standard_layout في لغة WGSL
تتيح إضافة uniform_buffer_standard_layout في لغة WGSL استخدام مخازن البيانات الموحّدة لقيود تنسيق الذاكرة نفسها التي تستخدمها مخازن البيانات، ما يسهّل مشاركة هياكل البيانات في كلا النوعَين من المخازن. يعني ذلك أنّه لم يعُد مطلوبًا أن يكون لمخازن البيانات الموحّدة محاذاة بمقدار 16 بايت لعناصر الصفيف، أو أن يتم توسيع إزاحات الهيكل المتداخل إلى مضاعفات 16 بايت.
يمكن رصد هذه الإضافة في اللغة باستخدام navigator.gpu.wgslLanguageFeatures. ننصحك باستخدام توجيه `requires` للإشارة إلى احتمال عدم إمكانية نقل الرمز البرمجي باستخدام requires uniform_buffer_standard_layout; في أعلى رمز تظليل WGSL. انظر المثال التالي والنية في طرحه.
if (!navigator.gpu.wgslLanguageFeatures.has("uniform_buffer_standard_layout")) {
throw new Error(`WGSL uniform buffer standard layout is not available`);
}
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const shaderModule = device.createShaderModule({ code: `
requires uniform_buffer_standard_layout;
struct S {
x: f32
}
struct Uniforms {
a: S,
b: f32
// b is at offset 4. Without standard layout, alignment rules would
// force b to be at offset 16 (or a multiple of 16), and you would have
// to add extra fields or use an @align attribute.
}
@group(0) @binding(0) var<uniform> u: Uniforms;
@fragment fn fs_main() -> @location(0) vec4<f32> {
return vec4<f32>(u.a.x);
}`,
});
WebGPU على Linux
يطرح فريق Chrome WebGPU بعناية على Linux، بدءًا من دعم وحدات معالجة الرسومات من Intel Gen12+، ولكن مع خطة مؤقتة لتوسيع نطاقها ليشمل المزيد من الأجهزة (AMD وNVIDIA). يستخدم هذا التنفيذ بنية تستخدم فيها WebGPU Vulkan، بينما يظلّ باقي Chromium على OpenGL، ما يؤدي إلى استخدام مسارات الرموز البرمجية الجيدة المعروفة حاليًا. يُرجى الاطّلاع على المشكلة 442791440.
تحسين سرعة writeBuffer وwriteTexture
تم تحسين writeBuffer() وwriteTexture() في Chrome، ما أدّى إلى تحسين الأداء بنسبة تصل إلى الضعف مقارنةً بالإصدار السابق، وذلك حسب حجم البيانات التي يتم نقلها. يؤثّر هذا التغيير في جميع مستخدمي تنفيذ Dawn Wire أيضًا. يُرجى الاطّلاع على المشكلة 441900745.
آخر الأخبار في Dawn
نشر فريق Android GPU أول إصدار ألفا من روابط Kotlin لـ WebGPU على Android، والذي يتوفّر باستخدام Jetpack. تمنح حزمة androidx.webgpu مطوّري Android إمكانية الوصول إلى واجهة برمجة تطبيقات حديثة لوحدة معالجة الرسومات باستخدام Kotlin، ما يتجاوز المشاكل القديمة في OpenGL أو تعقيد Vulkan، وهو تطوّر مثير في النظام الأساسي.
لا يغطي هذا القسم سوى بعض النقاط الرئيسية. يمكنك الاطّلاع على القائمة الشاملة لعمليات الإرسال.
الميزات الجديدة في WebGPU
في ما يلي قائمة بكل ما تم تناوله في سلسلة "الميزات الجديدة في WebGPU".
Chrome 147-148
Chrome 146
- إتاحة وضع التوافق مع WebGPU على OpenGL ES 3.1
- المرفقات المؤقتة
- إضافة texture_and_sampler_let في لغة WGSL
- آخر الأخبار في Dawn
Chrome 145
- إضافة subgroup_uniformity في لغة WGSL
- تجربة ربط المخزن المؤقت المتزامن في العاملين
- آخر الأخبار في Dawn
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 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
- زخارف 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