Published: September 24, 2025
اكتملت عملية تحويل Tint إلى تمثيل وسيط (IR)
اكتمل مشروع طويل الأمد (أكثر من عامَين ونصف) لزيادة أداء الأجزاء الداخلية من Tint، وهو برنامج تجميع لغة WGSL. تم إدراج تمثيل وسيط (IR) في الخلفية بين شجرة البنية التجريدية (AST) الحالية ومولّدات الرموز البرمجية في الخلفية. أتاح إدخال التمثيل الوسيط لفريق Chrome إزالة جميع عمليات تحويل شجرة البنية التجريدية وإعادة إنشائها كعمليات تحويل للتمثيل الوسيط، وهي أسرع بكثير بسبب الاختلافات في البنية. من خلال هذه التغييرات، تحسّنت الأجزاء الداخلية من Tint على بعض الأنظمة الأساسية بما يصل إلى سبع مرّات.
يفتح هذا التمثيل الوسيط الجديد إمكانات كبيرة لتحليل أدوات التظليل المعقّدة والواسعة النطاق وتحويلها، ما لا يضمن تحقيق مكاسب ملحوظة في الأداء فحسب، بل يسهّل أيضًا على Chrome تقديم ميزات WebGPU جديدة ومثيرة في المستقبل.
اعتبارًا من هذه المرحلة، تعمل جميع مولّدات الرموز البرمجية في الخلفية من تمثيل IR، وتم حذف جميع عمليات تحويل شجرة البنية التجريدية، وإزالة جميع رموز دعم شجرة البنية التجريدية لتشغيل عمليات التحويل.
كجزء من عمل تحسين التمثيل الوسيط، تم تحويل الواجهة الأمامية لـ SPIR-V (التي تستخدمها التطبيقات لتحويل SPIR-V إلى WGSL) من إنشاء تمثيل شجرة البنية التجريدية إلى الإنشاء مباشرةً إلى التمثيل الوسيط. يقدّم هذا التحسين أيضًا ميزات طال انتظارها، مثل إتاحة استخدام float 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 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
- نسخ المخازن المؤقتة بدون تحديد الإزاحات والحجم
- الدالة workgroupUniformLoad في WGSL باستخدام مؤشر إلى 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 وvertex أحادية المكوّن الإضافية
- السماح بطلب حدود غير معروفة بقيمة غير محدّدة
- تغييرات في قواعد المحاذاة في 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
- الدالة interpolate في WGSL لأخذ العيّنات أولاً ثم إما
- تعديلات 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