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

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

منتشر شده: ۲۷ آگوست ۲۰۲۵

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

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

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

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

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

اکنون می‌توان از یک GPUTexture مستقیماً به عنوان یک GPUBindingResource برای نمایش در معرض سایه‌زن جهت اتصال استفاده کرد. همچنین می‌توان از آن به عنوان یک view GPURenderPassColorAttachment، یک GPURenderPassColorAttachment resolveTarget و یک view GPURenderPassDepthStencilAttachment برای بهبود ارگونومی استفاده کرد. این روش، رویکردی ساده‌تر از استفاده از GPUTextureView برای دریافت نمای پیش‌فرض ارائه می‌دهد. به شماره 425906323 مراجعه کنید.

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() امکان‌پذیر بود. به شماره 382514673 مراجعه کنید.

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

استفاده از فرمت "bgra8unorm" با بافت‌های ذخیره‌سازی فقط خواندنی اکنون منسوخ شده است. مشخصات WebGPU صراحتاً این را مجاز نمی‌داند، و اجازه قبلی آن در Chrome یک اشکال بود، زیرا این فرمت برای دسترسی فقط نوشتنی در نظر گرفته شده است و قابل حمل نیست. به شماره 427681156 مراجعه کنید.

ویژگی isFallbackAdapter مربوط به GPUAdapter را حذف کنید

همانطور که قبلاً اعلام شد ، ویژگی GPUAdapter isFallbackAdapter اکنون حذف شده است. این ویژگی با ویژگی GPUAdapterInfo isFallbackAdapter که در Chrome 136 معرفی شده بود، جایگزین شده است. برای حذف به intent مراجعه کنید.

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

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

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

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

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

تغییرات متعددی در بک‌اند Vulkan ایجاد شده است تا سربار هنگام ارسال رندرها کاهش یابد، به خصوص برای بهبود عملکرد در پردازنده‌های گرافیکی موبایل. به عنوان مثال: ذخیره VkFramebufferها .

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

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

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

کروم ۱۴۲

کروم ۱۴۱

کروم ۱۴۰

کروم ۱۳۹

کروم ۱۳۸

کروم ۱۳۷

کروم ۱۳۶

کروم ۱۳۵

کروم ۱۳۴

کروم ۱۳۳

کروم ۱۳۲

کروم ۱۳۱

کروم ۱۳۰

کروم ۱۲۹

کروم ۱۲۸

کروم ۱۲۷

کروم ۱۲۶

کروم ۱۲۵

کروم ۱۲۴

کروم ۱۲۳

کروم ۱۲۲

کروم ۱۲۱

کروم ۱۲۰

کروم ۱۱۹

کروم ۱۱۸

کروم ۱۱۷

کروم ۱۱۶

کروم ۱۱۵

کروم ۱۱۴

کروم ۱۱۳