Neu in WebGPU (Chrome 117)

François Beaufort
François Beaufort

Vertex-Zwischenspeicher aufheben

Wenn Sie null anstelle eines GPUBuffer an setVertexBuffer() in GPURenderPassEncoder oder GPURenderBundleEncoder übergeben, können Sie einen zuvor festgelegten Scheitelpunktzwischenspeicher in einem bestimmten Slot aufheben. Siehe issue 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 eines GPUBindGroup an setBindGroup() auf GPURenderPassEncoder oder GPURenderBundleEncoder übergeben, können Sie eine zuvor festgelegte Bindungsgruppe in einem bestimmten Slot aufheben. Siehe issue 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 Pipelineerstellung bei Geräteverlust stummschalten

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 stummgeschaltet, wenn GPUDevice auf lost gesetzt ist, damit verlorene Geräte so gut wie möglich funktionieren. Siehe Dawn issue:1874.

Aktualisierungen beim Erstellen von SPIR-V-Shadermodulen

Beim Erstellen eines SPIR-V-Shadermoduls mit createShaderModule() wird jetzt ein TypeError ausgelöst, es sei denn, Sie führen Chrome mit der „Unsafe WebGPU Support“ aus Das Flag als SPIR-V ist nicht Teil der WebGPU-Spezifikation. Vor dieser Änderung würde die Verwendung von SPIR-V dazu führen, dass stattdessen ein GPUInternalError ausgelöst wurde. Siehe chromium:4711911 ändern.

Entwicklererfahrung 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.

Caching-Pipelines mit automatisch generiertem Layout

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

Updates zur Morgendämmerung

wgpu::RequestAdapterOptionsBackendType ist jetzt Teil von wgpu::RequestAdapterOptions, damit Anwendungen beim Abrufen eines Adapters ein bestimmtes Back-End einfacher 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. Weitere Informationen finden Sie unter 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. Vollständige Liste der Commits

Das ist neu bei WebGPU

Eine Liste aller behandelten Themen der Reihe What's New in WebGPU.

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