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

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

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

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

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

از آنجایی که این قابلیت هنوز در مرحله آزمایشی است، برای فعال‌سازی آن باید مراحل زیر را انجام دهید:

  1. پرچم‌های کروم زیر را فعال کنید: «پشتیبانی از WebGPU ناامن»، «ویژگی‌های توسعه‌دهنده WebGPU» و «فعال کردن خط فرمان در دستگاه‌های روت نشده».
  2. اشکال‌زدایی USB را در دستگاه اندروید خود فعال کنید.
  3. دستگاه اندروید خود را به کامپیوتر متصل کنید، adb shell 'echo "_ --use-webgpu-adapter=opengles" > /data/local/tmp/chrome-command-line' اجرا کنید تا OpenGL ES به Vulkan ترجیح داده شود و کروم را مجدداً راه‌اندازی کنید.

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

دریافت اطلاعات شناسایی در مورد یک آداپتور اکنون می‌تواند به صورت همزمان با ویژگی info GPUAdapter انجام شود. پیش از این، فراخوانی ناهمزمان متد requestAdapterInfo() در GPUAdapter تنها راه دریافت اطلاعات آداپتور بود. با این حال، requestAdapterInfo() از مشخصات WebGPU حذف شده است و در اواخر امسال در Chrome نیز حذف خواهد شد تا زمان کافی برای توسعه‌دهندگان وب جهت انجام انتقال لازم فراهم شود. به مثال زیر، Chrome Status و شماره 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 که مستقیماً به WebGPU منتقل می‌شوند، اندازه آرگومان‌های BufferSource زیر دیگر به ۲ گیگابایت محدود نمی‌شوند: dynamicOffsetsData در setBindGroup() ، data منبع در writeBuffer() و data منبع Pin writeTexture() . به شماره ۳۳۹۰۴۹۳۸۸ مراجعه کنید.

بهبود خطاهای انکودر فرمان

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

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)

این دلیل خطا را شرح می‌دهد، اما مشخص نمی‌کند که کدام فراخوانی واقعاً باعث خطای اعتبارسنجی شده است. خطای زیر پیام‌رسانی بهبود یافته‌ای را نشان می‌دهد که شامل دستوری است که باعث ایجاد خطا شده است. به تغییر ۱۹۲۲۴۵ مراجعه کنید.

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

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

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

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

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

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

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

کروم ۱۴۲

کروم ۱۴۱

کروم ۱۴۰

کروم ۱۳۹

کروم ۱۳۸

کروم ۱۳۷

کروم ۱۳۶

کروم ۱۳۵

کروم ۱۳۴

کروم ۱۳۳

کروم ۱۳۲

کروم ۱۳۱

کروم ۱۳۰

کروم ۱۲۹

کروم ۱۲۸

کروم ۱۲۷

کروم ۱۲۶

کروم ۱۲۵

کروم ۱۲۴

کروم ۱۲۳

کروم ۱۲۲

کروم ۱۲۱

کروم ۱۲۰

کروم ۱۱۹

کروم ۱۱۸

کروم ۱۱۷

کروم ۱۱۶

کروم ۱۱۵

کروم ۱۱۴

کروم ۱۱۳