ویژگی‌های جدید WebGPU (Chrome 147-148)

François Beaufort
François Beaufort

تاریخ انتشار: ۲۲ آوریل ۲۰۲۶

افزونه WGSL linear_indexing

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

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

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

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

این افزونه زبان را می‌توان بااستفاده از navigator.gpu.wgslLanguageFeatures تشخیص ویژگی کرد. مثال زیر و قصد ارسال را ببینید.

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 در Linux NVIDIA

پس‌از عرضه قبلی WebGPU در Linux، پشتیبانی از آن گسترش می‌یابد تا درایورهای مدرن NVIDIA (2024-05) در Wayland را نیز دربر بگیرد. مشکل ۴۴۲۷۹۱۴۴۰ را ببینید.

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

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

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

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