Neuigkeiten bei WebGPU (Chrome 140)

François Beaufort
François Beaufort

Veröffentlicht: 27. August 2025

Geräteanforderungen verbrauchen Adapter

Gemäß der WebGPU-Spezifikation wird ein Adapter bei einer erfolgreichen Geräteanfrage als „consumed“ (verbraucht) markiert. Folglich führen alle nachfolgenden requestDevice()-Aufrufe mit demselben Adapter zu einem abgelehnten Promise. Bisher wurde bei diesen Aufrufen ein Gerät zurückgegeben, das beim Erstellen verloren gegangen ist. Weitere Informationen finden Sie unter 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. Es 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. 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. Bisher war das nur über einen Fragment-Shader mit textureSample() möglich. Weitere Informationen finden Sie unter Problem 382514673.

Nutzung 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 und 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“ jetzt entfernt. Es wurde durch das GPUAdapterInfo-Attribut „isFallbackAdapter“ ersetzt, das in Chrome 136 eingeführt wurde. Weitere Informationen finden Sie unter Absicht zum Entfernen.

Änderungen bei Dawn

Mit der Funktion wgpuInstanceGetWGSLLanguageFeatures() wird eine Liste der von der Instanz unterstützten WGSL-Sprachfunktionen abgerufen. Bisher wurde der Wert WGPUStatus zurückgegeben. Die Funktion wurde aktualisiert und gibt keinen Wert mehr zurück, da sie nicht fehlschlagen kann. Weitere Informationen finden Sie unter Problem 429178774.

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

Mit der neuen wgpu::InstanceFeatureName::MultipleDevicesPerAdapter-Funktion können Adapter mehrere Geräte erstellen, ohne „verbraucht“ zu werden. Weitere Informationen finden Sie unter Problem 415825174.

Mit dem dump_shaders_on_failure-Geräteschalter können Sie Shader nur bei einem Fehler für Debugging-Zwecke ausgeben. Sie gilt ausschließlich für D3-Back-Ends. Eine Ausweitung auf andere Back-Ends ist jedoch möglich. Weitere Informationen finden Sie unter Problem 429187478.

Es wurden mehrere Änderungen am Vulkan-Backend vorgenommen, um den Aufwand 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 Highlights. Vollständige Liste der Commits

Neu bei WebGPU

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

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