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

François Beaufort
François Beaufort

Published: January 7, 2026

افزونه‌ی زیرگروه_id در WGSL

افزونه‌ی زبان WGSL subgroup_id به شما امکان می‌دهد در صورت فعال بودن افزونه‌ی subgroups ، از مقادیر داخلی جدید زیر در گروه‌های کاری استفاده کنید:

  • subgroup_id : شناسه زیرگروه یک فراخوانی را در گروه کاری فعلی ارائه می‌دهد.
  • num_subgroups : تعداد زیرگروه‌های موجود در گروه کاری را گزارش می‌دهد.

پیش از این، برای فهرست‌بندی حافظه با استفاده از شناسه‌های فراخوانی زیرگروه، شما مجبور بودید یک شناسه زیرگروه (معمولاً از طریق عملیات اتمی ) را بازسازی کنید تا از همپوشانی دسترسی‌های حافظه جلوگیری شود. اکنون می‌توانید subgroup_id برای پر کردن نیمه دیگر آن معادله استفاده کنید. از آنجا که این قابلیت هنوز در بک‌اند D3D در دسترس نیست، در آنجا شبیه‌سازی می‌شود. ایجاد یک معادل برای local_invocation_index به صورت subgroup_invocation_id + subgroup_size * subgroup_id باید ایمن باشد. توجه داشته باشید که ممکن است مواردی وجود داشته باشد که زیرگروه‌ها پر نباشند.

این افزونه زبان را می‌توان با استفاده از navigator.gpu.wgslLanguageFeatures شناسایی کرد. توصیه می‌شود از یک دستورالعمل require-برای نشان دادن احتمال عدم قابلیت حمل با requires subgroup_id; در بالای کد سایه‌زن WGSL خود استفاده کنید. به مثال زیر و intent to ship مراجعه کنید.

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

const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("subgroups")) {
  throw new Error("Subgroups support is not available");
}
const device = await adapter.requestDevice({ requiredFeatures: ["subgroups"] });

const shaderModule = device.createShaderModule({ code: `
  enable subgroups;
  requires subgroup_id;

  @compute @workgroup_size(64, 1, 1)
  fn main(@builtin(subgroup_id) subgroup_id : u32,
          @builtin(num_subgroups) num_subgroups : u32) {
    // TODO: Use subgroup_id and num_subgroups values.
  }`,
});

WGSL uniform_buffer_standard_layout extension

افزونه‌ی زبان WGSL uniform_buffer_standard_layout به بافرهای uniform اجازه می‌دهد از همان محدودیت‌های طرح‌بندی حافظه مانند بافرهای ذخیره‌سازی استفاده کنند، که اشتراک‌گذاری ساختارهای داده را در هر دو نوع بافر آسان‌تر می‌کند. این بدان معناست که بافرهای uniform دیگر نیازی به ترازبندی ۱۶ بایتی روی عناصر آرایه یا قرار دادن آفست‌های ساختارهای تو در تو در مضربی از ۱۶ بایت ندارند.

این افزونه‌ی زبان را می‌توان با استفاده از navigator.gpu.wgslLanguageFeatures شناسایی کرد. توصیه می‌شود از یک دستورالعمل requires برای نشان دادن احتمال عدم قابلیت حمل با requires uniform_buffer_standard_layout; در بالای کد سایه‌زن WGSL خود استفاده کنید. به مثال زیر و intent to ship مراجعه کنید.

if (!navigator.gpu.wgslLanguageFeatures.has("uniform_buffer_standard_layout")) {
  throw new Error(`WGSL uniform buffer standard layout is not available`);
}

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

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

  struct S {
      x: f32
  }
  struct Uniforms {
      a: S,
      b: f32
      // b is at offset 4. Without standard layout, alignment rules would
      // force b to be at offset 16 (or a multiple of 16), and you would have
      // to add extra fields or use an @align attribute.
  }

  @group(0) @binding(0) var<uniform> u: Uniforms;

  @fragment fn fs_main() -> @location(0) vec4<f32> {
      return vec4<f32>(u.a.x);
  }`,
});

WebGPU on Linux

تیم کروم با دقت در حال ارائه WebGPU برای لینوکس است و با پشتیبانی از پردازنده‌های گرافیکی نسل ۱۲+ اینتل شروع می‌کند، اما برنامه‌ای آزمایشی برای گسترش آن به دستگاه‌های بیشتر (AMD، NVIDIA) دارد. این پیاده‌سازی از معماری‌ای استفاده می‌کند که در آن WebGPU از Vulkan استفاده می‌کند و بقیه کرومیوم با استفاده از مسیرهای کد خوب و شناخته‌شده موجود، روی OpenGL باقی می‌ماند. به شماره ۴۴۲۷۹۱۴۴۰ ​​مراجعه کنید.

نوشتن بافر و نوشتن بافت سریع‌تر

writeBuffer() و writeTexture() در کروم بهینه شده‌اند که منجر به افزایش عملکرد تا ۲ برابر بهتر از نسخه قبلی، بسته به اندازه داده‌های منتقل شده، می‌شود. این تغییر بر همه کاربران پیاده‌سازی Dawn Wire نیز تأثیر می‌گذارد. به شماره ۴۴۱۹۰۰۷۴۵ مراجعه کنید.

Dawn updates

تیم Android GPU اولین نسخه آلفا از اتصالات Kotlin برای WebGPU در اندروید را که با استفاده از Jetpack در دسترس است، منتشر کرده است. بسته androidx.webgpu به توسعه‌دهندگان اندروید امکان دسترسی به یک API GPU مدرن با استفاده از Kotlin را می‌دهد و مشکلات قدیمی OpenGL یا پیچیدگی Vulkan را دور می‌زند - یک توسعه هیجان‌انگیز برای اکوسیستم!

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

What's New in WebGPU

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

کروم ۱۴۴

کروم ۱۴۳

Chrome 142

Chrome 141

کروم ۱۴۰

کروم ۱۳۹

کروم ۱۳۸

کروم ۱۳۷

کروم ۱۳۶

کروم ۱۳۵

کروم ۱۳۴

کروم ۱۳۳

کروم ۱۳۲

کروم ۱۳۱

کروم ۱۳۰

کروم ۱۲۹

کروم ۱۲۸

کروم ۱۲۷

کروم ۱۲۶

کروم ۱۲۵

کروم ۱۲۴

کروم ۱۲۳

کروم ۱۲۲

کروم ۱۲۱

کروم ۱۲۰

کروم ۱۱۹

کروم ۱۱۸

کروم ۱۱۷

کروم ۱۱۶

کروم ۱۱۵

کروم ۱۱۴

کروم ۱۱۳