Neuigkeiten bei WebGPU (Chrome 140)

François Beaufort
François Beaufort

Veröffentlicht: 27. August 2025

Geräteanfragen verbrauchen Adapter

Gemäß der WebGPU-Spezifikation wird ein Adapter bei einer erfolgreichen Geräteanfrage als "verbraucht" markiert. Folglich führen alle nachfolgenden requestDevice()-Aufrufe mit demselben Adapter zu einem abgelehnten Promise. Bisher haben diese Aufrufe ein Gerät zurückgegeben, das bei der Erstellung verloren gegangen ist. Siehe Problem 415825174.

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

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

Kurzform für die Verwendung von Texturen, wenn eine Texturansicht verwendet wird

Eine GPUTexture kann jetzt direkt als GPUBindingResource verwendet werden, um sie für die Bindung an den Shader zu übergeben. Sie kann auch als GPURenderPassColorAttachment view, GPURenderPassColorAttachment resolveTarget und GPURenderPassDepthStencilAttachment view verwendet werden, um die Ergonomie zu verbessern. Dies ist ein einfacherer Ansatz als die Verwendung von GPUTextureView, um eine Standardansicht zu erhalten. Siehe Problem 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 unterstützt 1D-Texturen

1D-Texturen können jetzt mit textureSampleLevel() gesampelt werden, um die Konsistenz mit 2D-Texturen zu gewährleisten. So können Sie eine 1D-Textur aus einem Vertex-Shader sampeln, was bisher nur mit textureSample() aus einem Fragment-Shader möglich war. Siehe Problem 382514673.

Verwendung von schreibgeschützten Speichertexturen im Format „bgra8unorm“ wird eingestellt

Die Verwendung des Formats "bgra8unorm" mit schreibgeschützten Speichertexturen wird jetzt eingestellt. Die WebGPU-Spezifikation verbietet dies ausdrücklich und die bisherige Zulassung in Chrome war ein Fehler, da dieses Format für den schreibgeschützten Zugriff vorgesehen und nicht portierbar ist. Siehe Problem 427681156.

GPUAdapter-Attribut „isFallbackAdapter“ entfernen

Wie bereits angekündigt, wurde das GPUAdapter isFallbackAdapter Attribut jetzt entfernt. Es wurde durch das GPUAdapterInfo-Attribut isFallbackAdapter ersetzt, das in Chrome 136 eingeführt wurde. Siehe Absicht zur Entfernung.

Dawn-Updates

Die Funktion wgpuInstanceGetWGSLLanguageFeatures() wird verwendet, um eine Liste der von der Instanz unterstützten WGSL-Sprachfunktionen abzurufen. Bisher wurde ein WGPUStatus-Wert zurückgegeben. Sie wurde aktualisiert, um keinen Wert zurückzugeben, da sie nicht fehlschlagen kann. Siehe Problem 429178774.

Die Funktion wgpuSurfacePresent() gibt jetzt einen WGPUStatus-Fehler zurück, wenn die Oberfläche keine aktuelle Textur hat. Siehe Problem 425930323.

Mit der neuen Funktion wgpu::InstanceFeatureName::MultipleDevicesPerAdapter können Adapter mehrere Geräte erstellen, ohne „verbraucht“ zu werden. Siehe Problem 415825174.

Mit der Geräteoption dump_shaders_on_failure können Sie Shader nur bei einem Fehler zu Debugging-Zwecken ausgeben. Sie gilt ausschließlich für D3-Back-Ends, eine zukünftige Erweiterung auf andere Back-Ends ist jedoch möglich. Siehe Problem 429187478.

Am Vulkan-Back-End wurden mehrere Änderungen vorgenommen, um den Overhead beim Senden von Render-Passes zu reduzieren und so die Leistung auf mobilen GPUs zu verbessern. Beispiel: Caching von VkFramebuffers.

Dies sind nur einige der wichtigsten Highlights. Eine vollständige Liste der Commits finden Sie hier.

Neues in WebGPU

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

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