Published: January 28, 2026
إضافة subgroup_uniformity في لغة WGSL
تغيّر إضافة subgroup_uniformity في لغة WGSL نطاق تحليل التوحيد للوظائف المضمّنة في المجموعات الفرعية والرباعية ليحدث على مستوى المجموعة الفرعية (بدلاً من مجموعة العمل). تسمح هذه الميزة باعتبار وظائف المجموعة الفرعية موحّدة في حالات أكثر، ما يمثّل تحسينًا في تجربة المطوّرين ويقلّل من احتمالية إيقاف عمليات التحقّق من التوحيد نهائيًا. من الآثار العملية لذلك أنّه سيتم اعتبار المزيد من القيم موحّدة على مستوى المجموعة الفرعية، مثل القيمة المضمّنة subgroup_id التي تمت إضافتها مؤخرًا.
يمكن رصد هذه الإضافة اللغوية باستخدام navigator.gpu.wgslLanguageFeatures. اطّلِع على المثال التالي والـ هدف من إطلاقها.
if (!navigator.gpu.wgslLanguageFeatures.has("subgroup_uniformity")) {
throw new Error(`WGSL subgroup uniformity is 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;
@group(0) @binding(0) var<storage, read_write> non_uniform: i32;
fn main() {
if (non_uniform == 42) {
_ = subgroupElect();
}
}`,
}); // WGSL error: subgroupElect must only be called from subgroup uniform control flow.
تجربة ربط المخزن المؤقت المتزامن في العاملين
لاستكشاف الطرق المحتمَلة لتقليل الاحتكاك بين WebGPU والرمز البرمجي للتطبيق، يدرس فريق Chrome ربط المخزن المؤقت المتزامن في المنفّذين. كجزء من هذا الجهد، تم إنشاء نموذج أولي لطريقة mapSync() تجريبية جديدة لـ GPUBuffer. تعمل هذه الطريقة، المقتصرة على العاملين، بشكل مشابه لـ mapAsync().
هذه الميزة تجريبية، وملاحظاتك مهمة لتحديد ما إذا كان سيتم اقتراحها من أجل التوحيد. لتجربتها، شغِّل Chrome باستخدام مفتاح --enable-features=WebGPUMapSyncOnWorkers، وأرسِل ملاحظاتك حول فائدتها وتأثيرها. اطّلِع على المقتطف التالي للبدء.
// Create a GPU buffer.
const buffer = device.createBuffer({
size: 42,
usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
});
// Map buffer synchronously when possible.
if ("mapSync" in GPUBuffer.prototype) {
buffer.mapSync(GPUMapMode.READ);
} else {
// Awaiting allows other code to run, which can cause application logic issues.
await buffer.mapAsync(GPUMapMode.READ);
}
آخر الأخبار من Dawn
لم تعُد ميزة wgpu::FeatureName::R8UnormStorage متاحة. تم استبدالها بميزة wgpu::FeatureName::TextureFormatTier1 التي تحلّ محلّها الآن. اطّلِع على المشكلة رقم 472926167.
تمت إزالة ميزة wgpu::FeatureName::Snorm16TextureFormats. تشمل الآن ميزة wgpu::FeatureName::TextureFormatsTier1 إلى حد كبير إمكاناتها، باستثناء ميزة Resolve. اطّلِع على المشكلة رقم 465347942.
يتم الآن إنشاء الإصدارات الليلية من الملفات الثنائية (بالإضافة إلى Emdawnwebgpu) على GitHub، وهي متاحة في إصدارات google/dawn. يتم توفيرها كأفضل خدمة ممكنة ولا يتم توقيعها أو ضمانها من قِبل Google أو فريق Dawn.
تمت إضافة إمكانية استخدام wgpu::ExternalTexture إلى Emdawnwebgpu. يُرجى العِلم أنّه لا يمكن استيرادها إلا من رمز JavaScript (على سبيل المثال، EM_ASM)، لأنّه لا يمكن إنشاؤها في C/C++ بسبب الحاجة إلى عنصر JavaScript مثل HTMLVideoElement أو VideoFrame. اطّلِع على المشكلة رقم 462477379 وSpotTests.cpp للحصول على مثال على الرمز.
لا يغطي هذا المقال سوى بعض النقاط الرئيسية. اطّلِع على القائمة الشاملة لعمليات الإرسال.
الميزات الجديدة في WebGPU
في ما يلي قائمة بكل ما تم تناوله في سلسلة "الميزات الجديدة في WebGPU".
Chrome 149-150
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 نهائيًا
- إزالة سمة 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 الإضافية
- السماح بطلب حدود غير معروفة بقيمة غير محدّدة
- تغييرات في قواعد المحاذاة في 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