Neu in WebGPU (Chrome 117)

François Beaufort
François Beaufort

Vertex-Puffer entfernen

Wenn Sie null anstelle eines GPUBuffer an setVertexBuffer() in GPURenderPassEncoder oder GPURenderBundleEncoder übergeben, können Sie einen zuvor festgelegten Vertex-Puffer in einem bestimmten Slot entfernen. 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);

Bind-Gruppe entfernen

Wenn Sie null anstelle eines GPUBindGroup an setBindGroup() in GPURenderPassEncoder oder GPURenderBundleEncoder übergeben, können Sie eine zuvor festgelegte Bind-Gruppe in einem bestimmten Slot entfernen. 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 Pipelineerstellung unterdrücken, wenn das Gerät verloren geht

Die Methoden createComputePipelineAsync() und createRenderPipelineAsync() von GPUDevice geben ein Promise zurück, das aufgelöst wird, wenn die Pipelineerstellung abgeschlossen ist. Ab sofort werden Fehler bei der asynchronen Pipelineerstellung unterdrückt, wenn das GPUDevice lost ist, damit verlorene Geräte so gut wie möglich funktionieren. Siehe dawn-Problem:1874.

Updates zur 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 "Unsafe WebGPU Support"-Flag aus, da SPIR-V nicht Teil der WebGPU-Spezifikation ist. Vor dieser Änderung wurde stattdessen ein GPUInternalError generiert. Siehe Änderung chromium:4711911.

Entwicklererfahrung verbessern

Die Validierungsfehlermeldung für Bind-Gruppen-Layout-Bindungen im Vertex-Shader wurde für Lese-/Schreib-Speicherpuffer und schreibgeschützte Speichertexturbindungen verbessert. Siehe Problem dawn:1883.

Pipelines mit automatisch generiertem Layout im Cache speichern

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 benötigen. Siehe Problem dawn:1933.

Dawn-Updates

Der 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 Problem 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 Änderung dawn:142465.

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

Dies sind nur einige der wichtigsten Highlights. Eine vollständige Liste der Commits finden Sie hier.

Neues in WebGPU

Eine Liste aller Themen, die in der Reihe „Neues in WebGPU“ behandelt wurden.

Chrome 149–150

Chrome 147–148

Chrome 146

Chrome 145

Chrome 144

Chrome 143

Chrome 142

Chrome 141

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