موارد جدید در WebGPU (Chrome 136)

فرانسوا بوفور
François Beaufort

تاریخ انتشار: ۲۳ آوریل ۲۰۲۵

ویژگی GPUAdapterInfo isFallbackAdapter است

ویژگی بولین GPUAdapterInfo isFallbackAdapter نشان می دهد که آیا GPUAdapter دارای محدودیت های عملکرد قابل توجهی در ازای سازگاری گسترده تر، رفتار قابل پیش بینی تر یا حفظ حریم خصوصی بهبود یافته است یا خیر. این افزوده ضروری بود زیرا کتابخانه هایی که اشیاء GPUDevice ارائه شده توسط کاربر را می گیرند، نمی توانستند از طریق ویژگی adapterInfo در GPUDevice به این اطلاعات دسترسی داشته باشند. مثال زیر و شماره 403172841 را ببینید.

const adapter = await navigator.gpu.requestAdapter();

if (adapter?.info.isFallbackAdapter) {
  // The returned adapter is a software-backed fallback adapter, which
  // may have significantly lower performance and fewer features.
}

از آنجایی که Chrome هنوز از آداپتورهای بازگشتی پشتیبانی نکرده است، isFallbackAdapter در حال حاضر همیشه در دستگاه‌های کاربران نادرست است. ما در حال بررسی هستیم که آیا ویژگی GPUAdapter isFallbackAdapter را می توان منسوخ و حذف کرد. رجوع به قصد ارسال شود .

بهبود زمان کامپایل شیدر در D3D12

تیم Chrome به بهبود Tint، کامپایلر زبان سایه زن WebGPU، با افزودن یک نمایش متوسط ​​(IR) برای دستگاه هایی که از WebGPU با باطن D3D12 پشتیبانی می کنند، ادامه می دهد. این IR که بین درخت نحو انتزاعی Tint (AST) و نویسنده باطن HLSL قرار گرفته است، کامپایلر را کارآمدتر و قابل نگهداری تر می کند و در نهایت برای توسعه دهندگان و کاربران سودمند خواهد بود. آزمایشات اولیه نشان می دهد که نسخه جدید Tint هنگام ترجمه سایه زن های WGSL Unity به HLSL تا 10 برابر سریعتر است.

یک فلوچارت فرآیند تبدیل کد سایه زن WGSL به دستورالعمل های GPU سطح پایین را نشان می دهد.
رندر ایجاد خط لوله در ویندوز.

این پیشرفت‌ها - که از قبل در Android، ChromeOS و macOS قابل دسترسی هستند - به تدریج به دستگاه‌های Windows که از WebGPU با باطن D3D12 پشتیبانی می‌کنند، گسترش می‌یابد. به شماره 42251045 مراجعه کنید.

تصاویر بوم را ذخیره و کپی کنید

کاربران Chrome اکنون می توانند روی بوم WebGPU کلیک راست کرده و به گزینه های منوی زمینه Save Image As… یا Copy Image دسترسی پیدا کنند. به شماره 40902474 مراجعه کنید.

این
کاربر منوی زمینه "ذخیره تصویر به عنوان..." را انتخاب کرد.

محدودیت های حالت سازگاری را بردارید

هنگامی که پرچم chrome://flags/#enable-unsafe-webgpu فعال باشد، ویژگی آزمایشی "core-features-and-limits" زمانی که در یک GPUDevice در دسترس باشد، همه محدودیت‌های حالت سازگاری (ویژگی‌ها و محدودیت‌ها) را برمی‌دارد. شماره 395855517 را ببینید.

درخواست یک GPUAdapter با featureLevel: "compatibility" به مرورگر اشاره می کند که حالت آزمایشی سازگاری WebGPU را انتخاب کند. در صورت موفقیت آمیز بودن، آداپتور حاصل «سازگار-پیش‌فرض» است. در غیر این صورت، "core-defaulting" است که مانند استفاده از گزینه featureLevel: "core" است. علاوه بر این، فراخوانی requestDevice() بدون requiredFeatures و requiredLimits یک GPUDevice با قابلیت‌های پیش‌فرض GPUAdapter درخواست می‌کند.

آداپتورهای پیش‌فرض هسته همیشه از ویژگی "core-features-and-limits" پشتیبانی می‌کنند و به‌طور خودکار در دستگاه‌های GPU ایجاد شده از آنها فعال می‌شود. برای آداپتورهای پیش‌فرض سازگاری، ویژگی "core-features-and-limits" ممکن است پشتیبانی شود و می‌توان آن را در دستگاه‌های GPU ایجاد شده از آنها درخواست کرد. هر دو نوع آداپتور همچنین ممکن است از ویژگی‌هایی مانند "float32-blendable" پشتیبانی کنند که در هر دو حالت هسته و سازگاری اختیاری است.

مثال زیر برای برنامه‌ای است که به "float32-blendable" نیاز دارد و در صورت موجود بودن از ویژگی‌های اصلی پشتیبانی می‌کند، اما اگر ویژگی‌های اصلی در دسترس نباشد، فقط از ویژگی‌های سازگاری استفاده می‌کند.

const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });

if (!adapter || !adapter.features.has("float32-blendable")) {
  throw new Error("32-bit float textures blending support is not available");
}

const requiredFeatures = [];
if (adapter.features.has("core-features-and-limits")) {
  requiredFeatures.push("core-features-and-limits");
}

const device = await adapter.requestDevice({ requiredFeatures });

if (!device.features.has("core-features-and-limits")) {
  // Compatibility mode restrictions validation rules will apply.
}

ویژگی های آزمایشی GPUAdapter featureLevel و isCompatibilityMode به نفع ویژگی "core-features-and-limits" حذف شده اند. شماره 395855516 را ببینید.

به روز رسانی سحر

وضعیت پاسخ به تماس enum InstanceDropped به CallbackCancelled تغییر نام داده است تا مشخص شود که پاسخ تماس لغو شده است، اما پردازش پس‌زمینه مرتبط با رویداد، مانند کامپایل خط لوله، ممکن است همچنان در حال اجرا باشد. در صورتی که مکانیسم لغو دیگری بعداً اضافه شود، نام جدید به طور کلی قابل استفاده است. به شماره 520 مراجعه کنید.

فهرست wgpu::PopErrorScopeStatus::EmptyStack که نشان می‌دهد پشته محدوده خطا را نمی‌توان باز کرد، به wgpu::PopErrorScopeStatus::Error تغییر نام داد (که به طور کلی نیز قابل استفاده است). پاسخ تماس اکنون همچنین شامل یک پیام توضیح خطای مربوطه برای کمک به اشکال زدایی است. به شماره 369 مراجعه کنید.

این تنها برخی از نکات کلیدی را پوشش می دهد. فهرست جامع تعهدات را بررسی کنید.

چه چیزی در WebGPU جدید است

فهرستی از همه چیزهایی که در سری What's New in WebGPU پوشش داده شده است.

کروم 136

کروم 135

کروم 134

کروم 133

کروم 132

کروم 131

کروم 130

کروم 129

کروم 128

کروم 127

کروم 126

کروم 125

کروم 124

کروم 123

کروم 122

کروم 121

کروم 120

کروم 119

کروم 118

کروم 117

کروم 116

کروم 115

کروم 114

کروم 113