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

Beim Erstellen eines SPIR-V-Shadermoduls mit createShaderModule() wird jetzt eine TypeError-Ausnahme 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 wurde bei Verwendung von SPIR-V stattdessen ein GPUInternalError generiert. Weitere Informationen finden Sie unter Änderung chromium:4711911.

Entwicklerfreundlichkeit verbessern

Die Validierungsfehlermeldung für Bindungsgruppenlayout-Bindungen im Vertex-Shader wurde für Lese-/Schreib-Speicherbuffer und Schreib-Speichertextur-Bindungen verbessert. Siehe Problem 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. Siehe das folgende Beispiel und issue dawn:1875.

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 C API webgpu.h wurde der Typ für boolesche Werte von stdbool in WGPUBool geändert, was ein uint32_t ist. Mit dieser Änderung soll sichergestellt werden, dass die API eine äquivalente ABI in C und C++ hat.

Dies sind nur einige der wichtigsten Highlights. 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