Neu in WebGPU (Chrome 117)

François Beaufort
François Beaufort

Vertex-Zwischenspeicher aufheben

Wenn Sie null anstelle eines GPUBuffer an setVertexBuffer() für GPURenderPassEncoder oder GPURenderBundleEncoder übergeben, können Sie einen zuvor festgelegten Zwischenspeicher für Scheitelpunkte in einem bestimmten Slot aufheben. Weitere Informationen finden Sie unter 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 eines GPUBindGroup an setBindGroup() in GPURenderPassEncoder oder GPURenderBundleEncoder übergeben, können Sie eine zuvor festgelegte Bindungsgruppe in einem bestimmten Slot aufheben. Weitere Informationen finden Sie unter 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 beim Erstellen einer asynchronen Pipeline stummschalten, wenn Gerät verloren geht

Die Methoden createComputePipelineAsync() und createRenderPipelineAsync() von GPUDevice geben ein Promise zurück, das aufgelöst wird, wenn die Erstellung der Pipeline abgeschlossen ist. Ab jetzt werden Fehler aus der asynchronen Pipelineerstellung stummgeschaltet, wenn GPUDevice auf lost gesetzt ist, damit verlorene Geräte so gut wie möglich funktionieren. Siehe „Dämmerung“-Problem:1874.

Updates zur Erstellung von SPIR-V-Shader-Modulen

Wenn Sie ein SPIR-V-Shader-Modul 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 mit SPIR-V wurde stattdessen ein GPUInternalError generiert. Siehe chrome:4711911 ändern.

Bessere User Experience für Entwickler

Die Validierungsfehlermeldung für Bind Group-Layoutbindungen im Vertex-Shader wurde für Lese-/Schreibspeicherzwischenspeicher und schreibgeschützte Speichertexturbindungen verbessert. Siehe Problem dawn:1883.

Pipelines mit automatisch generiertem Layout zwischenspeichern

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

Updates zum Morgengrauen

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.

Der Typ der C API webgpu.h hat den Typ für boolesche Werte von stdbool in WGPUBool geändert, was ein uint32_t ist. Diese Änderung wurde vorgenommen, damit die API ein Äquivalent zu ABI in C und C++ hat.

Dies sind nur einige der wichtigsten Punkte. Hier finden Sie eine vollständige Liste der Commits.

Neu bei WebGPU

Hier finden Sie eine Liste aller Inhalte, die in der Reihe What's New in WebGPU behandelt wurden.

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