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 „consumed“ (verbraucht) gekennzeichnet. Folglich führen alle nachfolgenden requestDevice()-Aufrufe mit demselben Adapter jetzt zu einem abgelehnten Promise. Bisher wurde bei diesen Aufrufen 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.

Abkürzung für die Verwendung von Textur, wenn die Texturansicht verwendet wird

Eine GPUTexture kann jetzt direkt als GPUBindingResource verwendet werden, um sie für die Bindung im Shader verfügbar zu machen. Sie kann auch als GPURenderPassColorAttachment view, GPURenderPassColorAttachment resolveTarget und GPURenderPassDepthStencilAttachment view verwendet werden, um die Ergonomie zu verbessern. Das ist einfacher 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-Funktion „textureSampleLevel“ unterstützt 1D-Texturen

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

Verwendung von schreibgeschützten Speichertexturen vom Typ „bgra8unorm“ wird eingestellt

Die Verwendung des "bgra8unorm"-Formats mit schreibgeschützten Speicher-Textures ist jetzt veraltet. Die WebGPU-Spezifikation verbietet dies ausdrücklich. Die vorherige Zulassung in Chrome war ein Fehler, da dieses Format nur für den Schreibzugriff vorgesehen und nicht portierbar ist. Siehe Problem 427681156.

Entfernen des GPUAdapter-Attributs „isFallbackAdapter“

Wie bereits angekündigt, wurde das GPUAdapter-Attribut „isFallbackAdapter“ entfernt. Es wurde durch das GPUAdapterInfo-Attribut „isFallbackAdapter“ ersetzt, das in Chrome 136 eingeführt wurde. Weitere Informationen finden Sie unter Absicht zum Entfernen.

Dawn-Updates

Mit der Funktion wgpuInstanceGetWGSLLanguageFeatures() wird eine Liste der von der Instanz unterstützten WGSL-Sprachfunktionen abgerufen. Bisher wurde ein WGPUStatus-Wert zurückgegeben. Die Funktion wurde aktualisiert und gibt keinen Wert mehr zurück, 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 dem dump_shaders_on_failure-Geräteschalter können Sie Shader nur bei einem Fehler zu Debugging-Zwecken ausgeben. Sie gilt ausschließlich für D3-Back-Ends, eine zukünftige Ausweitung auf andere Back-Ends ist jedoch möglich. Siehe Problem 429187478.

Es wurden mehrere Änderungen am Vulkan-Backend vorgenommen, um den Overhead beim Einreichen von Render-Passes zu reduzieren. Dies führt insbesondere bei mobilen GPUs zu einer besseren Leistung. Beispiel: VkFramebuffers zwischenspeichern.

Dies sind nur einige der wichtigsten Neuerungen. Vollständige Liste der Commits

Neues zu WebGPU

Eine Liste mit allen Themen, die in der Reihe Neu in WebGPU behandelt wurden.

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