Что нового в WebGPU (Chrome 147-148)

Франсуа Бофор
François Beaufort

Опубликовано: 22 апреля 2026 г.

Расширение WGSL linear_indexing

Расширение языка WGSL linear_indexing позволяет использовать следующие встроенные значения в рабочих группах:

  • global_invocation_index : Линейная позиция текущего вызова в общей вычислительной сетке шейдеров. Входное значение u32 , вычисляемое на основе global_invocation_id , workgroup_size и num_workgroups .

  • workgroup_index : Линейная позиция текущей рабочей группы в общей сетке вычислительных шейдеров. Входное значение u32 , при котором все вызовы в одной рабочей группе используют один и тот же индекс.

Расширение решает проблему ручного вычисления индексов по 3D-координатам, что является повторяющимся и подверженным ошибкам процессом. Перенеся эту логику в сам язык, WGSL улучшает читаемость кода и исключает распространенные повторяющиеся вычисления.

Это расширение языка можно определить по функционалу с помощью navigator.gpu.wgslLanguageFeatures . См. следующий пример и план выпуска .

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 на Linux NVIDIA

После ранее запущенной поддержки WebGPU в Linux, поддержка расширяется и теперь включает современные драйверы NVIDIA (2024-05) для Wayland. См. проблему 442791440 .

Утренние обновления

Параметр wgpu::FeatureName::AdapterPropertiesDRM , доступный только в Vulkan, позволяет запрашивать информацию о защите DRM-системы Linux для адаптера. См. Dawn CL 299575 .

Здесь описаны лишь некоторые из ключевых моментов. Ознакомьтесь с полным списком изменений .

Что нового в WebGPU?

Список всего, что было рассмотрено в серии статей «Что нового в WebGPU» .

Хром 147-148

Хром 146

Хром 145

Хром 144

Хром 143

Хром 142

Хром 141

Хром 140

Хром 139

Хром 138

Хром 137

Хром 136

Хром 135

Хром 134

Хром 133

Хром 132

Хром 131

Хром 130

Хром 129

Хром 128

Хром 127

Хром 126

Хром 125

Хром 124

Хром 123

Хром 122

Хром 121

Хром 120

Хром 119

Хром 118

Хром 117

Хром 116

Хром 115

Хром 114

Хром 113