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 hesaplama gölgelendirici ızgarası içindeki doğrusal konumu. Aynı iş grubu içindeki tüm çağrıları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

WebGPU'nun Linux'ta daha önce kullanıma sunulmasının ardından, Wayland'deki modern NVIDIA sürücüleri (2024-05) de destek kapsamına alınmıştı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 noktaların bir kısmını kapsar. Kapsamlı commit listesine göz atın.

WebGPU'daki yenilikler

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

Chrome 149-150

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