Yang Baru di WebGPU (Chrome 144)

François Beaufort
François Beaufort

Dipublikasikan: 7 Januari 2026

Ekstensi subgroup_id WGSL

Ekstensi bahasa WGSL subgroup_id memungkinkan Anda menggunakan nilai bawaan baru berikut dalam grup kerja saat ekstensi subgroups diaktifkan:

  • subgroup_id: Memberikan ID subgrup pemanggilan dalam grup kerja saat ini.
  • num_subgroups: Melaporkan jumlah subgrup yang ada dalam grup kerja.

Sebelumnya, untuk mengindeks memori menggunakan ID pemanggilan subgrup, Anda harus merekonstruksi ID subgrup (biasanya melalui operasi atomik) untuk menghindari akses memori yang tumpang-tindih. Sekarang Anda dapat menggunakan subgroup_id untuk mengisi setengah bagian lainnya dari persamaan tersebut. Karena fungsi ini belum tersedia di backend D3D, fungsi ini diemulasi di sana. Aman untuk membuat kesetaraan dengan local_invocation_index sebagai subgroup_invocation_id + subgroup_size * subgroup_id. Perhatikan bahwa mungkin ada kasus ketika subgrup tidak penuh.

Ekstensi bahasa ini dapat dideteksi fiturnya menggunakan navigator.gpu.wgslLanguageFeatures. Sebaiknya gunakan direktif requires untuk menandakan potensi tidak portabel dengan requires subgroup_id; di bagian atas kode shader WGSL Anda. Lihat contoh berikut dan niat untuk mengirimkan.

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.
  }`,
});

Ekstensi WGSL uniform_buffer_standard_layout

Ekstensi bahasa WGSL uniform_buffer_standard_layout memungkinkan buffer seragam menggunakan batasan tata letak memori yang sama dengan buffer penyimpanan, sehingga memudahkan berbagi struktur data di kedua jenis buffer. Artinya, buffer seragam tidak lagi harus memiliki penyelarasan 16 byte pada elemen array, atau mengisi offset struktur bertingkat ke kelipatan 16 byte.

Ekstensi bahasa ini dapat dideteksi fiturnya menggunakan navigator.gpu.wgslLanguageFeatures. Sebaiknya gunakan direktif requires untuk menandakan potensi tidak portabel dengan requires uniform_buffer_standard_layout; di bagian atas kode shader WGSL Anda. Lihat contoh berikut dan niat untuk mengirimkan.

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

Tim Chrome dengan cermat meluncurkan WebGPU untuk Linux, dimulai dengan dukungan untuk GPU Intel Gen12+ tetapi dengan rencana tentatif untuk memperluasnya ke lebih banyak perangkat (AMD, NVIDIA). Implementasi ini menggunakan arsitektur di mana WebGPU menggunakan Vulkan dan Chromium lainnya tetap menggunakan OpenGL, dengan menggunakan jalur kode baik yang sudah ada dan terkenal. Lihat masalah 442791440.

writeBuffer dan writeTexture yang lebih cepat

writeBuffer() dan writeTexture() telah dioptimalkan di Chrome, sehingga menghasilkan peningkatan performa hingga 2X lebih baik daripada versi sebelumnya, bergantung pada ukuran data yang ditransfer. Perubahan ini juga memengaruhi semua pengguna implementasi Dawn Wire. Lihat masalah 441900745.

Info terbaru Dawn

Tim GPU Android telah memublikasikan rilis alfa pertama binding Kotlin untuk WebGPU di Android yang tersedia menggunakan Jetpack. Paket androidx.webgpu memberi developer Android akses ke GPU API modern menggunakan Kotlin, sehingga mengatasi masalah lama OpenGL atau kompleksitas Vulkan—pengembangan yang menarik untuk ekosistem.

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 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