Nieuw in WebGPU (Chrome 145)

François Beaufort
François Beaufort

Gepubliceerd: 28 januari 2026

WGSL-extensie subgroup_uniformity

De WGSL-taalextensie subgroup_uniformity wijzigt het bereik van de uniformiteitsanalyse voor ingebouwde functies voor subgroepen en kwadranten, zodat deze plaatsvindt op subgroepniveau (in plaats van op werkgroepniveau). Met deze functie kan de functionaliteit van subgroepen in meer gevallen als uniform worden beschouwd, wat een betere kwaliteit van leven voor ontwikkelaars betekent en de kans verkleint dat uniformiteitscontroles helemaal worden uitgezet. Een praktische implicatie is dat meer waarden als subgroepuniform worden beschouwd, zoals de onlangs toegevoegde subgroup_id ingebouwde waarde.

Deze taalexteensie kan worden gedetecteerd met navigator.gpu.wgslLanguageFeatures. Neem het volgende voorbeeld en het intent to ship door.

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.

Experimentele synchrone buffertoewijzing in workers

Het Chrome-team onderzoekt synchrone buffertoewijzing binnen workers om mogelijke manieren te vinden om de wrijving tussen WebGPU en app-code te verminderen. Als onderdeel hiervan is een nieuwe experimentele mapSync()-methode voor GPUBuffer ontwikkeld. Deze methode, die is beperkt tot werknemers, werkt op een vergelijkbare manier als mapAsync().

Deze functie is experimenteel en je feedback is belangrijk om te bepalen of we deze voor standaardisatie voorstellen. Als je het wilt uitproberen, start je Chrome met de schakelaar --enable-features=WebGPUMapSyncOnWorkers en geef je feedback over het nut en de impact ervan. Gebruik het volgende fragment om te beginnen.

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

Updates voor Dawn

De functie wgpu::FeatureName::R8UnormStorage is niet meer beschikbaar. Het is vervangen door wgpu::FeatureName::TextureFormatTier1, dat nu de plaats inneemt van het oude beleid. Ga naar probleem 472926167.

De functie wgpu::FeatureName::Snorm16TextureFormats is verwijderd. De mogelijkheden, met uitzondering van Oplossen, worden nu grotendeels omvat door wgpu::FeatureName::TextureFormatsTier1. Ga naar kwestie 465347942.

Nachtelijke releases van binaire bestanden (naast Emdawnwebgpu) worden nu gebouwd op GitHub en zijn beschikbaar in google/dawn-releases. Ze worden geleverd als service op basis van zo goed mogelijk en worden niet ondertekend of gegarandeerd door Google of het Dawn-team.

Er is ondersteuning voor wgpu::ExternalTexture toegevoegd aan Emdawnwebgpu. Je kunt het alleen importeren uit JavaScript-code (bijvoorbeeld EM_ASM), omdat het niet kan worden gemaakt in C/C++ vanwege de vereiste voor een JavaScript-object zoals HTMLVideoElement of VideoFrame. Ga naar issue 462477379 en SpotTests.cpp voor voorbeeldcode.

Dit zijn maar enkele van de belangrijkste punten. Neem de uitgebreide lijst met doorvoeringen door.

Wat is er nieuw in WebGPU?

Een lijst met alles wat is behandeld in de serie Nieuw in 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