ویژگی‌های جدید WebGPU (کروم ۱۴۷-۱۴۸)

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

منتشر شده: ۲۲ آوریل ۲۰۲۶

افزونه‌ی شاخص‌گذاری خطی WGSL

افزونه‌ی زبان WGSL linear_indexing به شما امکان می‌دهد از مقادیر داخلی زیر در گروه‌های کاری استفاده کنید:

  • global_invocation_index : موقعیت خطی فراخوانی فعلی در کل شبکه سایه‌زن محاسباتی. یک مقدار ورودی u32 که بر اساس global_invocation_id ، workgroup_size و num_workgroups محاسبه می‌شود.

  • workgroup_index : موقعیت خطی گروه کاری فعلی در شبکه کلی سایه‌زن محاسباتی. یک مقدار ورودی u32 که در آن همه فراخوانی‌ها در یک گروه کاری، شاخص یکسانی دارند.

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

این افزونه زبان می‌تواند با استفاده از navigator.gpu.wgslLanguageFeatures شناسایی شود. به مثال زیر و هدف ارسال (shipping) توجه کنید.

if (!navigator.gpu.wgslLanguageFeatures.has("linear_indexing")) {
  throw new Error(`WGSL global_invocation_index and workgroup_index built-in values are not available`);
}

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

const shaderModule = device.createShaderModule({ code: `
  requires linear_indexing;

  override x : u32;
  override y : u32;
  override z : u32;

  @compute @workgroup_size(x, y, z)
  fn main(@builtin(workgroup_index) wg_index : u32,
          @builtin(global_invocation_index) g_index : u32) {

  // The workgroup_index built-in value is equivalent to:
  // (@builtin(workgroup_id).x +
  // (@builtin(workgroup_id).y * @builtin(num_workgroups).x) +
  // (@builtin(workgroup_id).z * @builtin(num_workgroups).x * @builtin(num_workgroups).y))

  // The global_invocation_index built-in value is equivalent to:
  // (@builtin(global_invocation_id).x +
  // (@builtin(global_invocation_id).y * x * @builtin(num_workgroups).x) +
  // (@builtin(global_invocation_id).z * x * @builtin(num_workgroups).x * y * @builtin(num_workgroups).y))
  }`,
});

وب‌جی‌پی‌یو روی لینوکس انویدیا

پس از عرضه اولیه WebGPU در لینوکس، پشتیبانی از آن در حال گسترش است تا درایورهای مدرن NVIDIA (2024-05) را در Wayland شامل شود. به شماره 442791440 مراجعه کنید.

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

wgpu::FeatureName::AdapterPropertiesDRM که فقط در Vulkan موجود است، به شما امکان می‌دهد اطلاعات DRM لینوکس را در مورد آداپتور جستجو کنید. به Dawn CL 299575 مراجعه کنید.

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

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

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

کروم ۱۴۷-۱۴۸

کروم ۱۴۶

کروم ۱۴۵

کروم ۱۴۴

کروم ۱۴۳

کروم ۱۴۲

کروم ۱۴۱

کروم ۱۴۰

کروم ۱۳۹

کروم ۱۳۸

کروم ۱۳۷

کروم ۱۳۶

کروم ۱۳۵

کروم ۱۳۴

کروم ۱۳۳

کروم ۱۳۲

کروم ۱۳۱

کروم ۱۳۰

کروم ۱۲۹

کروم ۱۲۸

کروم ۱۲۷

کروم ۱۲۶

کروم ۱۲۵

کروم ۱۲۴

کروم ۱۲۳

کروم ۱۲۲

کروم ۱۲۱

کروم ۱۲۰

کروم ۱۱۹

کروم ۱۱۸

کروم ۱۱۷

کروم ۱۱۶

کروم ۱۱۵

کروم ۱۱۴

کروم ۱۱۳