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

François Beaufort
François Beaufort

تاریخ انتشار: ۲۷ اوت ۲۰۲۵

درخواست‌های دستگاه آداپتور را مصرف می‌کند

طبق مشخصات WebGPU، پس‌از درخواست موفقیت‌آمیز دستگاه، آداپتور به‌عنوان «مصرف‌شده» علامت‌گذاری می‌شود. درنتیجه، هرگونه تماس requestDevice() بعدی بااستفاده از همان آداپتور اکنون منجر به رد شدن وعده خواهد شد. قبلاً، این تماس‌ها دستگاهی را برمی‌گرداند که در زمان ایجاد ازدست رفته بود. مشکل ۴۱۵۸۲۵۱۷۴ را ببینید.

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

await adapter.requestDevice(); // Fails because adapter has been consumed.

کوته‌نویسی برای استفاده از بافت در جایی که نمای بافت استفاده می‌شود

اکنون می‌توان از GPUTexture مستقیماً به‌عنوان GPUBindingResource برای نمایان کردن به سایه‌زن برای اتصال استفاده کرد. همچنین می‌تواند به‌عنوان GPURenderPassColorAttachment view،‏ GPURenderPassColorAttachment resolveTarget، و GPURenderPassDepthStencilAttachment view برای بهبود ارگونومی استفاده شود. این روش نسبت‌به استفاده از GPUTextureView برای دریافت نمای پیش‌فرض، رویکرد ساده‌تری ارائه می‌دهد. مشکل ۴۲۵۹۰۶۳۲۳ را ببینید.

const bindGroup = myDevice.createBindGroup({
  layout: myPipeline.getBindGroupLayout(0),
  entries: [
    { binding: 0, resource: mySampler },
    { binding: 1, resource: myTexture }, // Same as myTexture.createView()
    { binding: 2, resource: myExternalTexture },
    { binding: 3, resource: myBuffer },
  ],
});

‫WGSL textureSampleLevel از بافت‌های یک‌بعدی پشتیبانی می‌کند

اکنون می‌توان بااستفاده از textureSampleLevel() بافت‌های یک‌بعدی را برای سازگاری با بافت‌های دوبعدی نمونه‌برداری کرد. این امکان را به شما می‌دهد که بافت تک‌بعدی را از سایه‌زن رأس نمونه‌گیری کنید، که قبلاً فقط از سایه‌زن تکه‌تکه با textureSample() امکان‌پذیر بود. مشکل ۳۸۲۵۱۴۶۷۳ را ببینید.

منسوخ کردن استفاده از بافت ذخیره‌سازی فقط خواندنی bgra8unorm

استفاده از قالب "bgra8unorm" با بافت‌های فضای ذخیره‌سازی فقط‌خواندنی اکنون منسوخ شده است. مشخصات WebGPU به‌طور صریح این کار را مجاز نمی‌داند و مجاز بودن آن در Chrome یک اشکال بود، زیرا این قالب برای دسترسی فقط نوشتنی درنظر گرفته شده است و قابل‌حمل نیست. مشکل ۴۲۷۶۸۱۱۵۶ را ببینید.

برداشتن مشخصه GPUAdapter isFallbackAdapter

همان‌طور که قبلاً اعلام شد، مشخصه isFallbackAdapter‏ GPUAdapter اکنون برداشته شده است. این مشخصه با مشخصه isFallbackAdapter‏ GPUAdapterInfo که در Chrome 136 معرفی شد جایگزین شده است. قصد برداشتن را ببینید.

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

از تابع wgpuInstanceGetWGSLLanguageFeatures() برای دریافت فهرستی از ویژگی‌های زبان WGSL پشتیبانی‌شده توسط نمونه استفاده می‌شود. قبلاً مقدار WGPUStatus را برمی‌گرداند. این تابع به‌روز شده است تا مقداری برنگرداند زیرا نمی‌تواند ناموفق باشد. مشکل ۴۲۹۱۷۸۷۷۴ را ببینید.

اگر سطح بافت فعلی نداشته باشد، تابع wgpuSurfacePresent() اکنون خطای WGPUStatus را برمی‌گرداند. مشکل ۴۲۵۹۳۰۳۲۳ را ببینید

ویژگی جدید wgpu::InstanceFeatureName::MultipleDevicesPerAdapter به آداپتورها امکان می‌دهد بدون اینکه «مصرف شوند» چندین دستگاه ایجاد کنند. مشکل ۴۱۵۸۲۵۱۷۴ را ببینید.

کلید dump_shaders_on_failure به شما امکان می‌دهد سایه‌زن‌ها را فقط درصورت خرابی برای هدف اشکال‌زدایی تخلیه کنید. این ویژگی منحصراً برای زیرینه‌های D3 اعمال می‌شود، اگرچه امکان گسترش آن به زیرینه‌های دیگر در آینده وجود دارد. مشکل ۴۲۹۱۸۷۴۷۸ را ببینید.

تغییرات متعددی در زیرینه Vulkan ایجاد شده است تا سربار هنگام ارسال گذر رندر کاهش یابد، به‌ویژه برای بهبود عملکرد در GPUهای تلفن همراه. برای مثال: caching VkFramebuffers.

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

ویژگی‌های جدید 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