Yang Baru di WebGPU (Chrome 147-148)

François Beaufort
François Beaufort

Dipublikasikan: 22 April 2026

Ekstensi linear_indexing WGSL

Ekstensi bahasa WGSL linear_indexing memungkinkan Anda menggunakan nilai bawaan berikut dalam workgroup:

  • global_invocation_index: Posisi linear pemanggilan saat ini dalam total petak shader komputasi. Nilai input u32 yang dihitung berdasarkan global_invocation_id, workgroup_size, dan num_workgroups.

  • workgroup_index: Posisi linear workgroup saat ini dalam petak shader komputasi keseluruhan. Nilai input u32 tempat semua pemanggilan dalam workgroup yang sama berbagi indeks yang sama.

Ekstensi ini menangani perhitungan indeks manual dari koordinat 3D, yang merupakan proses berulang dan rentan error. Dengan memindahkan logika ini ke dalam bahasa itu sendiri, WGSL meningkatkan keterbacaan kode dan menghilangkan perhitungan berulang yang umum.

Ekstensi bahasa ini dapat dideteksi fiturnya menggunakan navigator.gpu.wgslLanguageFeatures. Lihat contoh berikut dan niat untuk mengirim.

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 di Linux NVIDIA

Setelah peluncuran WebGPU di Linux sebelumnya, dukungan diperluas untuk menyertakan driver NVIDIA modern (2024-05) di Wayland. Lihat masalah 442791440.

Info terbaru Dawn

wgpu::FeatureName::AdapterPropertiesDRM, yang hanya tersedia di Vulkan, memungkinkan Anda mengkueri informasi DRM Linux tentang adaptor. Lihat Dawn CL 299575.

Hal ini hanya mencakup beberapa sorotan utama. Lihat daftar commit yang lengkap.

Yang Baru di WebGPU

Daftar semua hal yang telah dibahas dalam seri Yang Baru di WebGPU.

Chrome 147-148

Chrome 146

Chrome 145

Chrome 144

Chrome 143

Chrome 142

Chrome 141

Chrome 140

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

Chrome 131

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