ویژگی‌های جدید WebGPU (‏Chrome 136)

François Beaufort
François Beaufort

منتشرشده: ۲۳ آوریل ۲۰۲۵

مشخصه GPUAdapterInfo isFallbackAdapter

مشخصه بولی isFallbackAdapter‏ GPUAdapterInfo نشان می‌دهد که آیا GPUAdapter در ازای سازگاری گسترده‌تر، رفتار قابل‌پیش‌بینی‌تر، یا بهبود حریم خصوصی، محدودیت‌های عملکردی قابل‌توجهی دارد یا نه. این افزودن ضروری بود زیرا کتابخانه‌هایی که اشیای GPUDevice ارائه‌شده توسط کاربر را می‌گیرند نمی‌توانستند ازطریق مشخصه adapterInfo در GPUDevice به این اطلاعات دسترسی پیدا کنند. مثال زیر و مسئله ۴۰۳۱۷۲۸۴۱ را ببینید.

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 با افزودن نمایش میانه‌ای (IR) برای دستگاه‌هایی که از WebGPU با زیرینه D3D12 پشتیبانی می‌کنند، به بهبود Tint، کامپایلر زبان سایه‌زن WebGPU، ادامه می‌دهد. این IR که بین درخت نحو انتزاعی (AST) زبان Tint و نویسنده زیرینه HLSL قرار می‌گیرد، کامپایلر را کارآمدتر و قابل‌نگهداری‌تر می‌کند و درنهایت هم توسعه‌دهندگان و هم کاربران از آن بهره‌مند می‌شوند. آزمایش‌های اولیه نشان می‌دهد که نسخه جدید Tint هنگام ترجمه سایه‌زن‌های WGSL در Unity به HLSL تا ۱۰ برابر سریع‌تر است.

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

این بهبودها که ازقبل در Android،‏ ChromeOS، و macOS دردسترس هستند، به‌تدریج به دستگاه‌های Windows که از WebGPU با زیرینه D3D12 پشتیبانی می‌کنند گسترش می‌یابند. مشکل ۴۲۲۵۱۰۴۵ را ببینید.

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

کاربران Chrome اکنون می‌توانند روی بوم WebGPU کلیک راست کنند و به گزینه‌های منو زمینه‌ای ذخیره تصویر به‌عنوان… یا کپی کردن تصویر دسترسی پیدا کنند. مشکل ۴۰۹۰۲۴۷۴ را ببینید.

"مجموعه داده‌ها" حاوی
کاربر منو زمینه‌ای «ذخیره تصویر به‌عنوان…» را انتخاب کرد.

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

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

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

آداپتورهای پیش‌فرض هسته همیشه از ویژگی "core-features-and-limits" پشتیبانی می‌کنند و این ویژگی به‌طور خودکار در GPUDevices ایجادشده از آن‌ها فعال می‌شود. برای آداپتورهای پیش‌فرض سازگاری، ممکن است از ویژگی "core-features-and-limits" پشتیبانی شود و بتوان آن را در GPUDevices ایجادشده از آن‌ها درخواست کرد. هر دو نوع آداپتور ممکن است از ویژگی‌هایی مانند "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.
}

مشخصه‌های آزمایشی featureLevel و isCompatibilityMode‏ GPUAdapter به‌نفع ویژگی "core-features-and-limits" برداشته شده‌اند. مشکل ۳۹۵۸۵۵۵۱۶ را ببینید.

به‌روزرسانی‌های سپیده‌دم

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

نام enum wgpu::PopErrorScopeStatus::EmptyStack که نشان می‌دهد پشته محدوده خطا نمی‌تواند حذف شود به wgpu::PopErrorScopeStatus::Error تغییر کرده است (که به‌طور کلی‌تر نیز قابل‌اعمال است). اکنون پیام برگشتی شامل پیام توضیح خطای مربوطه نیز می‌شود تا به اشکال‌زدایی کمک کند. مسئله ۳۶۹ را ببینید.

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

ویژگی‌های جدید WebGPU

فهرستی از همه مواردی که در مجموعه ویژگی‌های جدید WebGPU پوشش داده شده است.

‫۱۵۵-۱۵۶ Chrome

‫۱۵۳-۱۵۴ Chrome

Chrome 151-152

‫۱۴۹-۱۵۰ Chrome

‫۱۴۷-۱۴۸ Chrome

‫۱۴۶ Chrome

‫Chrome 145

‫۱۴۴ Chrome

‫۱۴۳ Chrome

‫۱۴۲ Chrome

Chrome 141

‫۱۴۰ Chrome

Chrome 139

‫Chrome 138

Chrome 137

‫Chrome 136

‫۱۳۵ Chrome

‫۱۳۴ Chrome

‫Chrome 133

‫۱۳۲ Chrome

‫۱۳۱ Chrome

‫Chrome 130

‫Chrome 129

‫Chrome 128

‫Chrome 127

‫Chrome 126

‫Chrome 125

‫Chrome 124

‫Chrome 123

‫Chrome 122

Chrome 121

‫Chrome 120

‫Chrome 119

‫Chrome 118

Chrome 117

‫Chrome 116

‫Chrome 115

Chrome 114

‫Chrome 113