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

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

پشتیبانی آزمایشی از OpenGL ES در اندروید

اکنون می‌توانید هنگام درخواست حالت آزمایشی سازگاری WebGPU در Chrome برای Android، از باطن OpenGL ES به GPUAdapter دسترسی داشته باشید. این به ویژه برای دستگاه های اندرویدی که از Vulkan 1.1 یا بالاتر پشتیبانی نمی کنند مفید است. مثال زیر و شماره dawn:1545 را ببینید.

// Request a GPUAdapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({ compatibilityMode: true });
صفحه گزارش WebGPU اطلاعات GPUAdapter را از باطن OpenGL ES در دستگاه Android نشان می دهد.
اطلاعات آداپتور OpenGL ES در webgpureport.org

از آنجایی که این ویژگی هنوز در مرحله آزمایشی است، باید مراحل زیر را انجام دهید:

  1. پرچم‌های Chrome زیر را فعال کنید: "Unsafe WebGPU Support"، "WebGPU Developer Features"، و "Enable command line on non-rooted device".
  2. USB Debugging را در دستگاه Android خود فعال کنید.
  3. دستگاه Android خود را به ایستگاه کاری خود وصل کنید، adb shell 'echo "_ --use-webgpu-adapter=opengles" > /data/local/tmp/chrome-command-line' اجرا کنید تا OpenGL ES backend را به Vulkan ترجیح دهید و مجددا راه اندازی کنید. کروم.

ویژگی اطلاعات GPUAdapter

دریافت اطلاعات شناسایی در مورد یک آداپتور اکنون می تواند به صورت همزمان با ویژگی info GPUAdapter انجام شود. پیش از این، فراخوانی متد ناهمزمان GPUAdapter requestAdapterInfo() تنها راه برای دریافت اطلاعات آداپتور بود. با این حال، requestAdapterInfo() از مشخصات WebGPU حذف شده است و در اواخر امسال در کروم حذف خواهد شد تا زمان کافی در اختیار توسعه دهندگان وب قرار گیرد تا انتقال لازم را انجام دهند. مثال زیر، وضعیت Chrome و شماره 335383516 را ببینید.

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

// During the transition period, you can use the following:
// const info = adapter.info || await adapter.requestAdapterInfo();

console.log(`Vendor: ${info.vendor}`); // "arm"
console.log(`Architecture: ${info.architecture}`); // "valhall"

بهبودهای WebAssembly interop

برای تطبیق انبوه های WebAssembly که مستقیماً به WebGPU ارسال می شوند، اندازه آرگومان های BufferSource زیر دیگر به 2 گیگابایت محدود نمی شود: dynamicOffsetsData در setBindGroup() ، data منبع در writeBuffer() و data منبع Pin writeTexture() . شماره 339049388 را ببینید.

خطاهای رمزگذار فرمان بهبود یافته است

برخی از خطاهای اعتبار سنجی که از رمزگذارهای فرمان ایجاد می شوند، اکنون اطلاعات زمینه ای بهبود یافته ای دارند. به عنوان مثال، تلاش برای شروع یک پاس محاسباتی در حالی که یک پاس رندر هنوز باز بود منجر به خطای زیر شد.

Command cannot be recorded while [CommandEncoder (unlabeled)] is locked and [RenderPassEncoder (unlabeled)] is currently open.
    at CheckCurrentEncoder (..\..\third_party\dawn\src\dawn\native\EncodingContext.h:106)

این دلیل خطا را توضیح می دهد، اما نشان نمی دهد که کدام تماس واقعا باعث خطای اعتبارسنجی شده است. خطای زیر پیام رسانی بهبود یافته را نشان می دهد که شامل دستوری است که باعث ایجاد خطا می شود. تغییر 192245 را ببینید.

Command cannot be recorded while [CommandEncoder (unlabeled)] is locked and [RenderPassEncoder (unlabeled)] is currently open.
 - While encoding [CommandEncoder (unlabeled)].BeginComputePass([ComputePassDescriptor]).

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

webgpu.h C API دیگر wgpuSurfaceGetPreferredFormat() را نمایش نمی دهد، معادل C wgpu::Surface::GetPreferredFormat() . در عوض، از wgpu::Surface::GetCapabilities() برای دریافت لیست فرمت های پشتیبانی شده استفاده کنید، سپس formats[0] برای دریافت فرمت بافت ترجیحی برای این سطح استفاده کنید. در همین حال، فراخوانی wgpu::Surface::GetPreferredFormat() یک اخطار منسوخ شدن منتشر می کند. به شماره 290 مراجعه کنید.

کاربردهای بافت پشتیبانی شده یک سطح اکنون از طریق wgpu::SurfaceCapabilities::usages هنگام فراخوانی wgpu::Surface::GetCapabilities() در دسترس هستند. انتظار می رود آنها همیشه wgpu::TextureUsage::RenderAttachment را شامل شوند. به شماره 301 مراجعه کنید.

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

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

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

کروم 127

کروم 126

کروم 125

کروم 124

کروم 123

کروم 122

کروم 121

کروم 120

کروم 119

کروم 118

کروم 117

کروم 116

کروم 115

کروم 114

کروم 113