Neuigkeiten bei WebGPU (Chrome 145)

François Beaufort
François Beaufort

Veröffentlicht: 28. Januar 2026

WGSL-Erweiterung subgroup_uniformity

Die WGSL-Spracherweiterung subgroup_uniformity ändert den Umfang der Einheitlichkeitsanalyse für integrierte Untergruppen- und Quad-Funktionen, sodass sie auf Untergruppenebene (anstelle der Arbeitsgruppe) erfolgt. Mit dieser Funktion kann die Untergruppenfunktionalität in mehr Fällen als einheitlich betrachtet werden, was die Lebensqualität für Entwickler verbessert und die Wahrscheinlichkeit verringert, dass Einheitlichkeitsprüfungen ganz deaktiviert werden. Eine praktische Folge ist, dass mehr Werte als untergruppeneinheitlich angesehen werden, z. B. der kürzlich hinzugefügte integrierte Wert subgroup_id.

Diese Spracherweiterung kann mit navigator.gpu.wgslLanguageFeatures erkannt werden. Weitere Informationen finden Sie im folgenden Beispiel und in der Versandabsicht.

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.

Experimentelle synchrone Pufferzuordnung in Workern

Um potenzielle Möglichkeiten zu untersuchen, die Reibung zwischen WebGPU und Anwendungscode zu verringern, untersucht das Chrome-Team die synchrone Pufferzuordnung in Workern. Im Rahmen dieser Bemühungen wurde eine neue experimentelle mapSync()-Methode für GPUBuffer entwickelt. Diese Methode ist auf Worker beschränkt und funktioniert ähnlich wie mapAsync().

Diese Funktion ist experimentell. Ihr Feedback ist wichtig, um zu entscheiden, ob sie für die Standardisierung vorgeschlagen wird. Wenn Sie sie ausprobieren möchten, starten Sie Chrome mit dem Switch --enable-features=WebGPUMapSyncOnWorkers und geben Sie Feedback zu ihrer Nützlichkeit und ihren Auswirkungen. Beginnen Sie mit dem folgenden Snippet.

// 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);
}

Dawn-Updates

Die Funktion wgpu::FeatureName::R8UnormStorage ist nicht mehr verfügbar. Sie wurde durch wgpu::FeatureName::TextureFormatTier1 ersetzt, die sie jetzt ablöst. Siehe Problem 472926167.

Die Funktion wgpu::FeatureName::Snorm16TextureFormats wurde entfernt. Ihre Funktionen, mit Ausnahme von „Auflösen“, werden jetzt weitgehend von wgpu::FeatureName::TextureFormatsTier1 abgedeckt. Siehe Problem 465347942.

Nächtliche Releases von Binärdateien (zusätzlich zu Emdawnwebgpu) werden jetzt auf GitHub erstellt und sind in den Releases von google/dawn verfügbar. Sie werden als Best-Effort-Dienst bereitgestellt und sind nicht von Google oder dem Dawn-Team signiert oder garantiert.

Emdawnwebgpu wurde Unterstützung für wgpu::ExternalTexture hinzugefügt. Sie kann nur aus JavaScript-Code importiert werden (z. B. EM_ASM), da die Erstellung in C/C++ aufgrund der Anforderung eines JavaScript-Objekts wie HTMLVideoElement oder VideoFrame nicht möglich ist. Siehe Problem 462477379 und SpotTests.cpp für Beispielcode.

Dies sind nur einige der wichtigsten Highlights. Eine umfassende Liste der Commits finden Sie hier.

Neues in WebGPU

Eine Liste aller Themen, die in der Reihe „Neues in WebGPU“ behandelt wurden.

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