Neu in WebGPU (Chrome 117)

François Beaufort
François Beaufort

Vertex-Puffer zurücksetzen

Wenn Sie null anstelle von GPUBuffer an setVertexBuffer() auf GPURenderPassEncoder oder GPURenderBundleEncoder übergeben, können Sie einen zuvor festgelegten Vertex-Buffer in einem bestimmten Slot zurücksetzen. Siehe Problem dawn:1675.

// Set vertex buffer in slot 0.
myRenderPassEncoder.setVertexBuffer(0, myVertexBuffer);

// Then later, unset vertex buffer in slot 0.
myRenderPassEncoder.setVertexBuffer(0, null);

Bindungsgruppe aufheben

Wenn du null anstelle von GPUBindGroup an setBindGroup() auf GPURenderPassEncoder oder GPURenderBundleEncoder übergibst, kannst du eine zuvor festgelegte Bindungsgruppe in einem bestimmten Slot zurücksetzen. Siehe Problem dawn:1675.

// Set bing group in slot 0.
myRenderPassEncoder.setBindGroup(0, myBindGroup);

// Then later, unset bind group in slot 0.
myRenderPassEncoder.setBindGroup(0, null);

Fehler bei der Erstellung einer asynchronen Pipeline bei verlorenem Gerät ignorieren

Die Methoden createComputePipelineAsync() und createRenderPipelineAsync() von GPUDevice geben ein Versprechen zurück, das nach Abschluss der Erstellung der Pipeline erfüllt wird. Ab sofort werden Fehler beim Erstellen einer asynchronen Pipeline unterdrückt, wenn GPUDevice lost ist, damit verlorene Geräte so lange wie möglich funktionieren. Siehe Dawn issue:1874.

Aktualisierungen bei der Erstellung von SPIR-V-Shadermodulen

Wenn Sie ein SPIR-V-Shadermodul mit createShaderModule() erstellen, wird jetzt ein TypeError ausgelöst, es sei denn, Sie führen Chrome mit dem Flag „Unsafe WebGPU Support“ aus, da SPIR-V nicht Teil der WebGPU-Spezifikation ist. Vor dieser Änderung würde die Verwendung von SPIR-V dazu führen, dass stattdessen ein GPUInternalError ausgelöst wurde. Weitere Informationen finden Sie unter Änderung chromium:4711911.

Entwicklerfreundlichkeit verbessern

Die Validierungsfehlermeldung für Bindungen des Gruppenlayouts im Vertex-Shader wurde für Lese-/Schreibspeicherpuffer und schreibgeschützte Speichertexturbindungen verbessert. Siehe issue dawn:1883.

Pipelines mit automatisch generiertem Layout im Cache speichern

Bei Pipelines, die mit createRenderPipeline({ layout: "auto" }) erstellt wurden, werden jetzt Caching-Mechanismen in Chrome genutzt. Das bedeutet, dass diese Pipelines effizienter erstellt werden und weniger Arbeitsspeicher verbrauchen. Siehe Problem „dawn:1933“.

Dawn-Updates

Die wgpu::RequestAdapterOptionsBackendType ist jetzt Teil von wgpu::RequestAdapterOptions, damit Anwendungen beim Abrufen eines Adapters einfacher ein bestimmtes Backend anfordern können. Sehen Sie sich das folgende Beispiel und issue dawn:1875 an.

wgpu::RequestAdapterOptions options = {
    .backendType = wgpu::BackendType::D3D12};

// Request D3D12 adapter.
myInstance.RequestAdapter(&options, myCallback, myUserData);

Für Node.js wurden mehrere zusätzliche Methoden implementiert. Siehe change dawn:142465.

In der webgpu.h-C API wurde der Typ für boolesche Werte von stdbool zu WGPUBool geändert, dem uint32_t-Wert. Diese Änderung wurde vorgenommen, um sicherzustellen, dass die API eine äquivalente ABI in C und C++ hat.

Hier werden nur einige der wichtigsten Vorteile behandelt. Eine vollständige Liste der Commits

Das ist neu bei WebGPU

Eine Liste aller Themen, die in der Reihe Was ist neu in WebGPU? behandelt wurden.

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