Что нового в WebGPU (Chrome 145)

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

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

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

Расширение языка WGSL subgroup_uniformity изменяет область действия анализа унифицированности для встроенных функций подгрупп и квадрантов, перенося его на уровень подгруппы (вместо рабочей группы). Эта функция позволяет считать функциональность подгрупп унифицированной в большем количестве случаев, что повышает удобство работы разработчиков и снижает вероятность полного отключения проверок унифицированности. Практическое следствие заключается в том, что больше значений будут рассматриваться как унифицированные на уровне подгруппы, например, недавно добавленное встроенное значение subgroup_id .

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

if (!navigator.gpu.wgslLanguageFeatures.has("subgroup_uniformity")) {
  throw new Error(`WGSL subgroup uniformity is 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 s<ubgroups;
  
  @gro>up(0) @binding(0) varstorage, read_write non_uniform: i32;

  fn main() {
    if (non_uniform == 42) {
      _ = subgroupElect();
    }
  }`,
}); // WGSL error: subgroupElect must only be called from subgroup uniform control flow.

Экспериментальное синхронное отображение буферов в рабочих процессах

Чтобы изучить потенциальные способы уменьшения трения между WebGPU и кодом приложения, команда Chrome исследует синхронное отображение буферов внутри рабочих процессов. В рамках этой работы был разработан прототип нового экспериментального метода mapSync() для GPUBuffer . Этот метод, ограниченный рабочими процессами, работает аналогично mapAsync() .

Эта функция экспериментальная, и ваши отзывы важны для определения того, будет ли она предложена для стандартизации. Чтобы попробовать её, запустите Chrome с параметром --enable-features=WebGPUMapSyncOnWorkers и сообщите о её полезности и влиянии. Для начала воспользуйтесь следующим фрагментом кода.

// Create a GPU buffer.
const buffer = device.createBuffer({
  size: 42,
  usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
});

// Map buffer synchronously when possible.
if ("mapSync" in GPUBuffer.prototype) {
  buffer.mapSync(GPUMapMode.READ);
} else {
  // Awaiting allows other code to run, which can cause application logic issues.
  await buffer.mapAsync(GPUMapMode.READ);
}

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

Функция wgpu::FeatureName::R8UnormStorage больше недоступна. Она заменена функцией wgpu::FeatureName::TextureFormatTier1 , которая теперь её заменяет. См. проблему 472926167 .

Функция wgpu::FeatureName::Snorm16TextureFormats была удалена. Ее возможности, за исключением Resolve, теперь в значительной степени охватываются wgpu::FeatureName::TextureFormatsTier1 . См. проблему 465347942 .

Ежедневные релизы бинарных файлов (помимо Emdawnwebgpu) теперь собираются на GitHub и доступны в репозитории google/dawn . Они предоставляются в качестве услуги, предоставляемой по мере возможности, и не подписываются и не гарантируются Google или командой Dawn.

В Emdawnwebgpu добавлена ​​поддержка wgpu::ExternalTexture . Обратите внимание, что её можно импортировать только из кода JavaScript (например, EM_ASM ), поскольку создание объекта в C/C++ невозможно из-за необходимости наличия объекта JavaScript, такого как HTMLVideoElement или VideoFrame . См. проблему 462477379 и файл SpotTests.cpp для примеров кода.

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

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

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

Хром 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