بعد سنوات من التطوير، يُعلن فريق Chrome أنّ أول إصدار من WebGPU أصبح متاحًا تلقائيًا في Chrome على أنظمة التشغيل ChromeOS وmacOS وWindows. مزيد من المعلومات في Chrome ships WebGPU
بدأنا أيضًا إضافة مستندات شاملة حول WebGPU على MDN.
وهناك المزيد.
استخدام مصدر VideoFrame من WebCodecs في importExternalTexture()
تعرض WebGPU واجهة برمجة تطبيقات لإنشاء كائنات "زخرفة خارجية" مبهمة من HTMLVideoElement من خلال importExternalTexture(). يمكنك استخدام هذه الكائنات لأخذ عيّنات من إطارات الفيديو بكفاءة، ربما بدون نسخ البيانات مباشرةً من بيانات YUV المصدر.
ومع ذلك، لا يسمح مواصفات WebGPU الأولية بإنشاء كائنات GPUExternalTexture من كائنات WebCodecs VideoFrame. هذه الإمكانية مهمة لتطبيقات معالجة الفيديو المتقدّمة التي تستخدم WebCodecs حاليًا وتريد دمج WebGPU في مسار معالجة الفيديو. تجري حاليًا مناقشة في المشكلة gpuweb/gpuweb#1380.
تفعيل الميزة
هذه الميزة غير مفعّلة تلقائيًا في Chrome، ولكن يمكن تجربتها في Chrome 113 من خلال تفعيل الوظيفة بشكلٍ صريح. يمكنك تفعيلها محليًا من خلال تفعيل علامة "ميزات مطوّري WebGPU" على chrome://flags/#enable-webgpu-developer-features.
لتفعيلها لجميع زوّار تطبيقك، تجري حاليًا مرحلة التجربة والتقييم من المقرر أن تنتهي في Chrome 118 (8 ديسمبر 2023). للمشاركة في مرحلة التجربة والتقييم، عليك الاشتراك وتضمين عنصر وصفية يتضمّن رمز مرحلة التجربة والتقييم في HTML أو في عنوان HTTP. لمزيد من المعلومات، يُرجى الرجوع إلى المنشور البدء في استخدام تجارب المصدر.
نموذج الرموز البرمجية
// Access the GPU device.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
// Create VideoFrame from HTMLVideoElement.
const video = document.querySelector("video");
const videoFrame = new VideoFrame(video);
const texture = device.importExternalTexture({ source: videoFrame });
// TODO: Use texture in bind group creation.
يمكنك تجربة ذلك من خلال الاطّلاع على نموذج تجريبي لـ تحميل الفيديو باستخدام WebCodecs.
الميزات الجديدة في 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
- تستهلك طلبات الجهاز المحوّل
- اختصار لاستخدام الزخرفة عندما يتم استخدام طريقة عرض الزخرفة
- تتيح 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
- استخدام VideoFrame displaySize للزخارف الخارجية
- التعامل مع الصور ذات الاتجاهات غير التلقائية باستخدام 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