إتاحة HTMLImageElement وImageData في CopyExternalImageToTexture()
تتيح لك طريقة copyExternalImageToTexture()
في GPUQueue
نسخ لقطة مأخوذة من صورة مصدر أو فيديو أو لوحة إلى GPUTexture
محدَّد. يمكنك الآن ضبط العنصرَين HTMLImageElement
وImageData
كمصدرَين. يمكنك الاطّلاع على المثال التالي والمشكلة chromium:1471372.
// Fetch and decode image.
const source = document.createElement("img");
source.src = "my-image.png";
await source.decode();
// Create destination texture.
const size = [source.width, source.height];
const texture = myDevice.createTexture({
size,
format: "rgba8unorm",
usage:
GPUTextureUsage.COPY_DST |
GPUTextureUsage.RENDER_ATTACHMENT |
GPUTextureUsage.TEXTURE_BINDING,
});
// Copies a snapshot taken from the source image into a texture.
myDevice.queue.copyExternalImageToTexture({ source }, { texture }, size);
الدعم التجريبي لزخرفة وحدة التخزين للقراءة والكتابة فقط
يسمح لك نوع ربط بنية التخزين بإجراء قراءات للزخرفة بدون أخذ عينات، والتخزين في المواضع العشوائية في أدوات التظليل. عند توفّر الميزة "chromium-experimental-read-write-storage-texture"
في GPUAdapter
، يمكنك الآن طلب GPUDevice
مع هذه الميزة وضبط إذن وصول GPUStorageTexture
إلى "read-write"
أو "read-only"
عند إنشاء تنسيق ربط مجموعة. وكان ذلك مقصورًا في السابق على "write-only"
.
للاستفادة من هذا، يجب تفعيل هذه الإضافة بشكل واضح في رمز WGSL باستخدام enable chromium_experimental_read_write_storage_texture
. عند تفعيل هذه الميزة، يمكنك استخدام مؤهل الوصول إلى read_write
وread
لزخارف التخزين، كما تعمل الدالتان المدمجتان textureLoad()
وtextureStore()
وفقًا لذلك، وتتوفّر وظيفة textureBarrier()
مدمجة جديدة لمزامنة عمليات الوصول إلى ذاكرة النسيج في مجموعة عمل. يُرجى الاطّلاع على المثال التالي ومشكلة dawn:1972.
لا تزال هذه الميزة تجريبية وقد يتم تغييرها. بينما يتم توحيده، يمكنك تشغيل Chrome باستخدام علام --enable-dawn-features=allow_unsafe_apis
لإتاحته.
const feature = "chromium-experimental-read-write-storage-texture";
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has(feature)) {
throw new Error("Read-write storage texture support is not available");
}
// Explicitly request read-write storage texture support.
const device = await adapter.requestDevice({
requiredFeatures: [feature],
});
const bindGroupLayout = device.createBindGroupLayout({
entries: [{
binding: 0,
visibility: GPUShaderStage.COMPUTE,
storageTexture: {
access: "read-write", // <-- New!
format: "r32uint",
},
}],
});
const shaderModule = device.createShaderModule({ code: `
enable chromium_experimental_read_write_storage_texture;
@group(0) @binding(0) var tex : texture_storage_2d<r32uint, read_write>;
@compute @workgroup_size(1, 1)
fn main(@builtin(local_invocation_id) local_id: vec3u) {
var data = textureLoad(tex, vec2i(local_id.xy));
data.x *= 2;
textureStore(tex, vec2i(local_id.xy), data);
}`,
});
// You can now create a compute pipeline with this shader module and
// send the appropriate commands to the GPU.
الإشعارات عند الفجر
أعادت واجهة برمجة التطبيقات webgpu.h تسمية الحقول التالية بهدف التناسق: requiredFeaturesCount
إلى requiredFeatureCount
، وpipelineStatisticsCount
إلى pipelineStatisticCount
، وcolorFormatsCount
إلى colorFormatCount
. ويمكنك الاطّلاع على مشكلة dawn:146040.
يتيح لك برنامج "DawnInfo
" الجديد (المشابه لـ vulkaninfo) إدراج أجهزة التوصيل والمحوّلات وميزات المحوّل والحدود القصوى المسموح بها للمحوّلات. وتتوفّر هذه الميزة عند مبنى samples
عند الفجر. في ما يلي الناتج أدناه الذي تم قطعه بشكل كبير بغرض الإيجاز. يُرجى الاطّلاع على تغيير الفجر:149020.
./out/Debug/DawnInfo
Toggles
=======
Name: allow_unsafe_apis
Suppresses validation errors on API entry points or parameter combinations
that aren't considered secure yet.
http://crbug.com/1138528
[…]
Adapter
=======
VendorID: 0x106B
Vendor: apple
Architecture: common-3
DeviceID: 0x0000
Name: Apple M1 Pro
Driver description: Metal driver on macOS Version 13.5.1 (Build 22G90)
Adapter Type: discrete GPU
Backend Type: Metal
Power: <undefined>
Features
========
* depth_clip_control
Disable depth clipping of primitives to the clip volume
https://bugs.chromium.org/p/dawn/issues/detail?id=1178
[…]
Adapter Limits
==============
maxTextureDimension1D: 16,384
maxTextureDimension2D: 16,384
[…]
يتناول هذا فقط بعض النقاط الرئيسية. يمكنك الاطّلاع على القائمة الشاملة لعمليات الالتزام.
الميزات الجديدة في WebGPU
قائمة بكل ما تمت مناقشته في سلسلة الميزات الجديدة في WebGPU.
الإصدار 125 من Chrome
الإصدار 124 من Chrome
- زخارف مساحة التخزين للقراءة فقط والقراءة
- دعم العاملين في مجال الخدمات والعاملين المشتركين
- السمات الجديدة لمعلومات المحوّل
- إصلاح الأخطاء
- إشعارات الفجر
الإصدار 123 من Chrome
- دعم دوال DP4a المضمنة في WGSL
- معلَمات غير محدودة للمؤشر في WGSL
- صيغة سكر لإزالة الإشارة إلى المركّبات في WGSL
- حالة منفصلة للقراءة فقط حول جوانب الاستنسل والعمق
- إشعارات الفجر
الإصدار 122 من Chrome
- توسيع مدى الوصول إلى الجمهور باستخدام وضع التوافق (ميزة قيد التطوير)
- زيادة حدّ maxVertexAttributes
- إشعارات الفجر
الإصدار 121 من Chrome
- إتاحة WebGPU على Android
- استخدام DXC بدلاً من FXC لتجميع أدوات التظليل على Windows
- طلبات البحث عن الطابع الزمني في بطاقات الحوسبة والعرض
- نقاط الإدخال التلقائية لوحدات أداة التظليل
- إتاحة view-p3 كمساحة لون GPUExternalTexture
- معلومات حول حِزم الذاكرة
- إشعارات الفجر
الإصدار 120 من Chrome
- دعم قيم النقطة العائمة 16 بت في WGSL
- إطلاق العنان لقدراتك
- تغييرات في حالة الاستنسل المعمَّق
- إشعارات حول المحوّل
- تحديد كم طلبات الطابع الزمني
- ميزات تنظيف الربيع
الإصدار 119 من متصفِّح Chrome
الإصدار 118 من متصفّح Chrome
- إتاحة استخدام HTMLImageElement وImageData في
copyExternalImageToTexture()
- الدعم التجريبي لزخرفة مساحة التخزين للقراءة فقط والقراءة فقط
- إشعارات الفجر
الإصدار 117 من Chrome
- عدم ضبط المخزن المؤقت للرأس
- إلغاء ضبط مجموعة الربط
- كتم صوت الأخطاء الناتجة عن إنشاء مسار غير متزامن عند فقدان الجهاز
- تعديلات على عملية إنشاء وحدة أداة تظليل SPIR-V
- تحسين تجربة المطوّرين
- تخزين مسارات التخزين المؤقت باستخدام تنسيق يتم إنشاؤه تلقائيًا
- إشعارات الفجر
الإصدار 116 من متصفّح Chrome
- دمج WebCodecs
- الجهاز المفقود الذي أعاده GPUAdapter
requestDevice()
- مواصلة تشغيل الفيديو بسلاسة في حال تسمية "
importExternalTexture()
" - مطابقة المواصفات
- تحسين تجربة المطوّرين
- إشعارات الفجر
الإصدار 115 من متصفّح Chrome
- إضافات لغات WGSL المتوافقة
- الدعم التجريبي للإصدار 11 من تقنية Direct3D
- استخدام وحدة معالجة الرسومات المنفصلة تلقائيًا باستخدام طاقة التيار المتردد
- تحسين تجربة المطوّرين
- إشعارات الفجر
الإصدار 114 من متصفّح Chrome
- تحسين JavaScript
- getCurrentTexture() على لوحة رسم لم يتم ضبطها تطرح ReplyStateError
- إشعارات من WGSL
- إشعارات الفجر