Novità di WebGPU (Chrome 117)

François Beaufort
François Beaufort

Annulla l'impostazione del buffer dei vertici

Il passaggio di null anziché di un GPUBuffer a setVertexBuffer() su GPURenderPassEncoder o GPURenderBundleEncoder consente di annullare l'impostazione di un buffer dei vertici precedentemente impostato in un determinato slot. Vedi 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);

Annulla gruppo di binding

Il passaggio di null anziché di un GPUBindGroup a setBindGroup() su GPURenderPassEncoder o GPURenderBundleEncoder ti consente di annullare l'impostazione di un gruppo di binding precedentemente impostato in un determinato slot. Vedi 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);

Silenzia gli errori durante la creazione della pipeline asincrona quando il dispositivo viene smarrito

I metodi createComputePipelineAsync() e createRenderPipelineAsync() di GPUDevice restituiscono una promessa che viene risolta al termine della creazione della pipeline. D'ora in poi, gli errori relativi alla creazione della pipeline asincrona verranno silenziati quando GPUDevice è lost per far sì che i dispositivi smarriti sembrino funzionare il più possibile. Vedi dawn issue:1874.

Aggiornamenti alla creazione di moduli shader SPIR-V

La creazione di un modulo shader SPIR-V con createShaderModule() ora genera un errore TypeError, a meno che tu non esegua Chrome con il flag "Unsafe WebGPU Support", in quanto SPIR-V non fa parte della specifica WebGPU. Prima di questa modifica, l'utilizzo di SPIR-V avrebbe causato la generazione di un GPUInternalError. Vedi change chromium:4711911.

Migliorare l'esperienza degli sviluppatori

Il messaggio di errore di convalida per i binding del layout del gruppo di binding nello shader dei vertici è stato migliorato per i binding del buffer di archiviazione in lettura/scrittura e della texture di archiviazione in sola scrittura. Vedi issue dawn:1883.

Pipeline di memorizzazione nella cache con layout generato automaticamente

Le pipeline create con createRenderPipeline({ layout: "auto" }) ora sfruttano i meccanismi di memorizzazione nella cache in Chrome. Ciò significa che queste pipeline verranno create in modo più efficiente e utilizzeranno meno memoria. Vedi issue dawn:1933.

Aggiornamenti all'alba

wgpu::RequestAdapterOptionsBackendType ora fa parte di wgpu::RequestAdapterOptions per consentire alle applicazioni di richiedere un backend specifico quando ottengono un adattatore. Vedi l'esempio seguente e issue dawn:1875.

wgpu::RequestAdapterOptions options = {
    .backendType = wgpu::BackendType::D3D12};

// Request D3D12 adapter.
myInstance.RequestAdapter(&options, myCallback, myUserData);

Per Node.js sono stati implementati diversi metodi aggiuntivi. Vedi change dawn:142465.

L'API C webgpu.h ha modificato il tipo per i valori booleani da stdbool a WGPUBool, che è un uint32_t. Questa modifica è stata apportata per garantire che l'API abbia un'ABI equivalente in C e C++.

Questi sono solo alcuni dei punti salienti. Consulta l'elenco completo dei commit.

Novità di WebGPU

Un elenco di tutti gli argomenti trattati nella serie Novità di WebGPU.

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