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

François Beaufort
François Beaufort

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

اکنون هنگام درخواست حالت سازگاری WebGPU آزمایشی در Chrome برای Android، می‌توانید به GPUAdapter از زیرینه OpenGL ES دسترسی داشته باشید. این ویژگی به‌ویژه برای دستگاه‌های Android که از Vulkan 1.1 یا بالاتر پشتیبانی نمی‌کنند مفید است. مثال زیر و issue 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 زیر را فعال کنید: «پشتیبانی ناامن از WebGPU»، «ویژگی‌های توسعه‌دهنده WebGPU»، و «فعال کردن خط فرمان در دستگاه‌های روت‌نشده».
  2. «اشکال‌زدایی USB» را در دستگاه Android فعال کنید.
  3. دستگاه Android را به ایستگاه کاری متصل کنید، adb shell 'echo "_ --use-webgpu-adapter=opengles" > /data/local/tmp/chrome-command-line' را اجرا کنید تا زیرینه OpenGL ES بر Vulkan ترجیح داده شود، و Chrome را بازراه‌اندازی کنید.

مشخصه اطلاعات GPUAdapter

اکنون می‌توان اطلاعات شناسایی درباره آداپتور را به‌صورت هم‌زمان با مشخصه info‏ GPUAdapter دریافت کرد. قبلاً، فراخوانی روش ناهم‌زمان GPUAdapter requestAdapterInfo() تنها راه دریافت اطلاعات آداپتور بود. بااین‌حال، requestAdapterInfo() از مشخصات WebGPU برداشته شده است و در Chrome نیز در ادامه امسال برداشته خواهد شد تا توسعه‌دهندگان وب زمان کافی برای انجام انتقال لازم داشته باشند. مثال زیر، وضعیت Chrome، و مشکل ۳۳۵۳۸۳۵۱۶ را ببینید.

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

برای اینکه پشته‌های 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)

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

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

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

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

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

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

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