Neu in WebGPU (Chrome 117)

François Beaufort
François Beaufort

Vertex-Puffer nicht festgelegt

Wenn Sie null anstelle von GPUBuffer an setVertexBuffer() für GPURenderPassEncoder oder GPURenderBundleEncoder übergeben, können Sie einen zuvor festgelegten Vertex-Puffer in einem bestimmten Slot aufheben. 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 Sie null anstelle von GPUBindGroup an setBindGroup() für GPURenderPassEncoder oder GPURenderBundleEncoder übergeben, können Sie eine zuvor festgelegte Bindungsgruppe in einem bestimmten Slot aufheben. 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 asynchronen Pipeline-Erstellung unterdrücken, wenn das Gerät verloren ist

Die Methoden createComputePipelineAsync() und createRenderPipelineAsync() von GPUDevice geben ein Promise zurück, das aufgelöst wird, wenn die Erstellung der Pipeline abgeschlossen ist. Ab sofort werden Fehler bei der asynchronen Pipelineerstellung unterdrückt, wenn GPUDevice gleich lost ist. So wird der Eindruck erweckt, dass verloren gegangene Geräte so gut wie möglich funktionieren. Siehe dawn issue:1874.

Aktualisierungen bei der Erstellung von SPIR-V-Shadermodulen

Wenn Sie ein SPIR-V-Shader-Modul mit createShaderModule() erstellen, wird jetzt ein TypeError ausgegeben, 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 chromium:4711911.

Entwicklererfahrung verbessern

Die Validierungsfehlermeldung für Bindungsgruppenlayout-Bindungen im Vertex-Shader wurde für Lese-/Schreibspeicherpuffer- und Nur-Schreibspeicher-Texturbindungen verbessert. Problem dawn:1883

Pipelines mit automatisch generiertem Layout zwischenspeichern

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 benötigen. Siehe issue 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. Hier finden Sie ein Beispiel.

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 zu WGPUBool geändert, was ein uint32_t ist. Diese Änderung wurde vorgenommen, um sicherzustellen, dass die API eine entsprechende ABI in C und C++ hat.

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