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

François Beaufort
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 subgroups;
  
  @group(0) @binding(0) var<storage, 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. Пример кода можно найти в SpotTests.cpp и проблеме 462477379.

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

Что нового в WebGPU

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

Chrome 155–156

Chrome 153–154

Chrome 151–152

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