Published: September 24, 2025
اكتملت عملية تحويل Tint إلى تمثيل وسيط (IR)
اكتمل مشروع طويل الأمد (أكثر من عامَين ونصف) لزيادة أداء العناصر الداخلية في Tint، وهو برنامج تجميع لغة WGSL. تم إدراج تمثيل وسيط (IR) في الواجهة الخلفية بين شجرة البنية المجردة (AST) الحالية ومولّدات الرموز البرمجية في الواجهة الخلفية. أتاح إدخال التمثيل الوسيط لفريق Chrome إزالة جميع عمليات تحويل شجرة البنية المجردة وإعادة إنشائها كعمليات تحويل للتمثيل الوسيط، وهي أسرع بكثير بسبب الاختلافات في البنية. أدت هذه التغييرات إلى تحسين أداء العناصر الداخلية في Tint بنسبة تصل إلى سبع مرّات على بعض الأنظمة الأساسية.
يفتح هذا التمثيل الوسيط الجديد إمكانات كبيرة لتحليل أدوات التظليل المعقّدة والواسعة النطاق وتحويلها، ما لا يضمن تحقيق مكاسب ملحوظة في الأداء فحسب، بل يسهّل أيضًا على Chrome تقديم ميزات WebGPU جديدة ومثيرة في المستقبل.
اعتبارًا من هذه المرحلة، تعمل جميع مولّدات الرموز البرمجية في الواجهة الخلفية من تمثيل وسيط، وتم حذف جميع عمليات تحويل شجرة البنية المجردة، وإزالة جميع رموز دعم شجرة البنية المجردة لتشغيل عمليات التحويل.
كجزء من عمل تحسين التمثيل الوسيط، تم تحويل الواجهة الأمامية لـ SPIR-V (التي تستخدمها التطبيقات لتحويل SPIR-V إلى WGSL) من إنشاء تمثيل لشجرة البنية المجردة إلى الإنشاء مباشرةً إلى التمثيل الوسيط. يقدّم هذا التحسين أيضًا ميزات طال انتظارها، مثل إتاحة استخدام الأرقام العائمة التي تشغل 16 بت في الواجهة الأمامية لـ SPIR-V.
تحليل نطاق الأعداد الصحيحة في برنامج تجميع لغة WGSL
يعمل فريق Chrome تدريجيًا على طرح تحليل جديد لنطاق الأعداد الصحيحة في Tint، وهو برنامج تجميع لغة WebGPU للمحوّلات البرمجية. يقدّر تحليل نطاق الأعداد الصحيحة الحدّين الأدنى والأقصى للقيم التي يمكن أن تأخذها متغيّرات الأعداد الصحيحة أثناء تنفيذ البرنامج بدون تشغيله فعليًا.
تهدف هذه الميزة إلى تحسين الكفاءة من خلال تقليل الحاجة إلى التحقّق من الحدود المكلف وسيتم تفعيلها قريبًا تلقائيًا على جميع الأنظمة الأساسية. راجِع المشكلة 348701956.
تعديل SPIR-V 1.4 للواجهة الخلفية لـ Vulkan
يتم طرح إتاحة استخدام SPIR-V 1.4 على أجهزة Android وChromeOS حيثما توفّرت. يتيح هذا التعديل لـ Tint، وهو برنامج تجميع لغة WGSL، الاستفادة من ميزات SPIR-V الجديدة والتسهيلات والتعليمات الجديدة لإنشاء رموز برمجية أكثر كفاءة في سيناريوهات معيّنة عند تجميع محوّلات Vulkan البرمجية. راجِع المشكلة 427717267.
تعديلات على Dawn
أصبح أخيرًا رأس webgpu.h الموحّد، الذي يحدّد واجهة برمجة التطبيقات الأساسية لـ WebGPU بلغة C، مستقرًا. ينطبق هذا الاستقرار تحديدًا على واجهة برمجة التطبيقات الأساسية المحدّدة في المصدر الرئيسي، ولا يشمل إضافات التنفيذ (على سبيل المثال، من Dawn أو Emdawnwebgpu)، لذا من الأفضل استخدام webgpu.h الذي يوفّره التنفيذ الدقيق الذي تربط به. على الرغم من أنّ الرأس مستقر، قد تظل تواجه اختلافات غير مقصودة بين عمليات التنفيذ بينما نواصل إصلاح الأخطاء ومعالجة التوافق في جميع أنحاء النظام الإيكولوجي. إذا حدث ذلك، يُرجى الإبلاغ عن خطأ.
بفضل المساهم الخارجي William Candillon، يمكنك الآن العثور على ملفات Dawn الثنائية التي تم إنشاؤها مسبقًا كعناصر على GitHub Actions. تشمل هذه الملفات ملفات .lib ثابتة لأجهزة Android، وحزمة .XCFramework لأجهزة Apple، وجميع ملفات الرأس الضرورية. راجِع طلب السحب رقم 39 في Dawn ومثالاً على العناصر.
لا يغطي هذا المقال سوى بعض النقاط الرئيسية. يمكنك الاطّلاع على القائمة الشاملة لعمليات الإرسال.
الميزات الجديدة في WebGPU
في ما يلي قائمة بكل ما تم تناوله في سلسلة "الميزات الجديدة في WebGPU".
Chrome 149-150
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
- تستهلك طلبات الأجهزة المحوّل
- اختصار لاستخدام الزخرفة حيث يتم استخدام طريقة عرض الزخرفة
- تتيح الدالة textureSampleLevel في WGSL استخدام الزخارف أحادية الأبعاد
- إيقاف استخدام زخرفة التخزين للقراءة فقط bgra8unorm نهائيًا
- إزالة سمة isFallbackAdapter في GPUAdapter
- تعديلات على Dawn
Chrome 139
- إتاحة استخدام الزخارف ثلاثية الأبعاد لتنسيقات BC وASTC المضغوطة
- ميزة "core-features-and-limits" الجديدة
- مرحلة التجربة والتقييم لوضع التوافق مع WebGPU
- تعديلات على Dawn
Chrome 138
- اختصار لاستخدام المخزن المؤقت كمورد ربط
- تغييرات في متطلبات حجم المخازن المؤقتة التي يتم ربطها عند الإنشاء
- تقرير البنية لوحدات معالجة الرسومات الحديثة
- إيقاف سمة isFallbackAdapter في GPUAdapter نهائيًا
- تعديلات على Dawn
Chrome 137
- استخدام طريقة عرض الزخرفة لربط externalTexture
- نسخ المخازن المؤقتة بدون تحديد الإزاحات والحجم
- استخدام WGSL workgroupUniformLoad لمؤشر إلى قيمة ذرية
- سمة 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
- استخدام طريقة عرض الزخرفة
- مزج زخارف الأرقام العائمة التي تشغل 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
- زخارف الأرقام العائمة التي تشغل 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