WebGPU'daki Yenilikler (Chrome 147-148)

François Beaufort
François Beaufort

Yayınlanma tarihi: 22 Nisan 2026

WGSL linear_indexing uzantısı

WGSL dil uzantısı linear_indexing, çalışma gruplarında aşağıdaki yerleşik değerleri kullanmanıza olanak tanır:

  • global_invocation_index: Toplam işlem gölgelendirici ızgarası içindeki mevcut çağırmanın doğrusal konumu. global_invocation_id, workgroup_size ve num_workgroups'ye göre hesaplanan u32 giriş değeri.

  • workgroup_index: Mevcut iş grubunun genel işlem gölgelendirici ızgarası içindeki doğrusal konumu. Aynı çalışma grubu içindeki tüm çağırmaların aynı dizini paylaştığı bir u32 giriş değeri.

Uzantı, tekrarlayan ve hataya açık bir süreç olan 3D koordinatlardan manuel dizin hesaplamasını ele alır. Bu mantığı dilin kendisine taşıyarak WGSL, kod okunabilirliğini artırır ve yaygın tekrarlayan hesaplamaları ortadan kaldırır.

Bu dil uzantısı, navigator.gpu.wgslLanguageFeatures kullanılarak özellik algılama işlemine tabi tutulabilir. Aşağıdaki örneğe ve kargo gönderme amacına bakın.

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

Linux NVIDIA'da WebGPU

Linux'ta WebGPU'nun önceki kullanıma sunulmasının ardından, Wayland'de modern NVIDIA sürücüleri (2024-05) de destek kapsamına alınmaktadır. 442791440 numaralı soruna bakın.

Dawn ile ilgili güncellemeler

Yalnızca Vulkan'da kullanılabilen wgpu::FeatureName::AdapterPropertiesDRM, adaptörle ilgili Linux DRM bilgilerini sorgulamanıza olanak tanır. Dawn CL 299575 konusuna bakın.

Bu özet yalnızca önemli noktalardan bazılarını kapsar. Kapsamlı işleme listesine göz atın.

WebGPU'daki yenilikler

WebGPU'daki Yenilikler serisinde ele alınan tüm konuların listesi.

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