Nieuw in WebGPU (Chrome 140)

François Beaufort
François Beaufort

Gepubliceerd: 27 augustus 2025

Apparaatverzoeken gebruiken de adapter

Volgens de WebGPU-specificatie wordt een adapter gemarkeerd als 'verbruikt' als een apparaatverzoek is geslaagd. Daarom leiden alle daaropvolgende requestDevice()-aanroepen met dezelfde adapter nu tot een geweigerde belofte. Eerder werd bij deze aanroepen een apparaat geretourneerd dat op het moment van de aanroep verloren was. Ga naar probleem 415825174.

const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();

await adapter.requestDevice(); // Fails because adapter has been consumed.

Afkorting voor het gebruik van textuur waar de textuurweergave wordt gebruikt

Een GPUTexture kan nu rechtstreeks worden gebruikt als GPUBindingResource om te binden aan de shader. Het kan ook worden gebruikt als GPURenderPassColorAttachment view, GPURenderPassColorAttachment resolveTarget en GPURenderPassDepthStencilAttachment view voor een betere ergonomie. Dit is een eenvoudigere aanpak dan het gebruik van een GPUTextureView om een standaardweergave te krijgen. Ga naar probleem 425906323.

const bindGroup = myDevice.createBindGroup({
  layout: myPipeline.getBindGroupLayout(0),
  entries: [
    { binding: 0, resource: mySampler },
    { binding: 1, resource: myTexture }, // Same as myTexture.createView()
    { binding: 2, resource: myExternalTexture },
    { binding: 3, resource: myBuffer },
  ],
});

WGSL textureSampleLevel ondersteunt 1D-texturen

1D-texturen kunnen nu worden gesampled met textureSampleLevel() voor consistentie met 2D-texturen. Hiermee kun je een 1D-textuur samplen vanuit een vertex-shader. Dit was eerder alleen mogelijk vanuit een fragment-shader met textureSample(). Ga naar probleem 382514673.

Gebruik van read-only opslagtextuur bgra8unorm beëindigen

Het gebruik van de indeling "bgra8unorm" met texturen voor opslag in de modus Alleen lezen wordt niet meer ondersteund. De WebGPU-specificatie staat dit expliciet niet toe en de eerdere toelating in Chrome was een bug, omdat deze indeling is bedoeld voor alleen-schrijftoegang en niet overdraagbaar is. Ga naar probleem 427681156.

Kenmerk isFallbackAdapter van GPUAdapter verwijderen

Zoals eerder aangekondigd, is het GPUAdapter-kenmerk isFallbackAdapter nu verwijderd. Het is vervangen door het GPUAdapterInfo-kenmerk isFallbackAdapter dat is geïntroduceerd in Chrome 136. Ga naar Intentie tot verwijdering.

Updates voor Dawn

De functie wgpuInstanceGetWGSLLanguageFeatures() wordt gebruikt om een lijst op te halen van WGSL-taalfuncties die door de instantie worden ondersteund. Eerder werd de waarde WGPUStatus geretourneerd. De functie is geüpdatet en retourneert geen waarde meer, omdat de functie niet kan mislukken. Ga naar probleem 429178774.

De functie wgpuSurfacePresent() retourneert nu een WGPUStatus-fout als het oppervlak geen huidige textuur heeft. Ga naar probleem 425930323.

Met de nieuwe wgpu::InstanceFeatureName::MultipleDevicesPerAdapter-functie kunnen adapters meerdere apparaten maken zonder te worden 'verbruikt'. Ga naar probleem 415825174.

Met de dump_shaders_on_failure-apparaatwissel kun je shaders alleen dumpen als er een fout optreedt, voor foutopsporingsdoeleinden. Het is uitsluitend van toepassing op D3-backends, maar in de toekomst kan het worden uitgebreid naar andere backends. Ga naar probleem 429187478.

Er zijn meerdere wijzigingen aangebracht in de Vulkan-backend om de overhead te verminderen bij het indienen van weergavepasses, met name voor betere prestaties op mobiele GPU's. Bijvoorbeeld: VkFramebuffers in het cachegeheugen plaatsen.

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