Novità di WebGPU (Chrome 117)

François Beaufort
François Beaufort

Buffer dei vertici non impostato

Se passi null anziché GPUBuffer a setVertexBuffer() in GPURenderPassEncoder o GPURenderBundleEncoder, puoi annullare l'impostazione di un buffer di vertici impostato in precedenza in un determinato slot. Consulta il problema dawn:1675.

// Set vertex buffer in slot 0.
myRenderPassEncoder.setVertexBuffer(0, myVertexBuffer);

// Then later, unset vertex buffer in slot 0.
myRenderPassEncoder.setVertexBuffer(0, null);

Gruppo di associazione non impostato

Se passi null anziché GPUBindGroup a setBindGroup() in GPURenderPassEncoder o GPURenderBundleEncoder, puoi annullare l'impostazione di un gruppo di associazione impostato in precedenza in un determinato slot. Consulta il problema dawn:1675.

// Set bing group in slot 0.
myRenderPassEncoder.setBindGroup(0, myBindGroup);

// Then later, unset bind group in slot 0.
myRenderPassEncoder.setBindGroup(0, null);

Eliminare gli errori della 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 dovuti alla creazione della pipeline asincrona verranno ignorati quando GPUDevice è lost per fare in modo che i dispositivi smarriti sembrino funzionare il più possibile. Vedi dawn issue:1874.

Aggiornamenti sulla creazione di moduli shader SPIR-V

La creazione di un modulo shader SPIR-V con createShaderModule() ora genera un TypeError, a meno che non esegua Chrome con il flag "Supporto WebGPU non sicuro", poiché SPIR-V non fa parte della specifica WebGPU. Prima di questa modifica, l'utilizzo di SPIR-V causava invece la generazione di un GPUInternalError. Vedi change chromium:4711911.

Migliorare l'esperienza degli sviluppatori

Il messaggio di errore di convalida per le associazioni di layout del gruppo di binding nello shader vertex è stato migliorato per le associazioni di buffer di archiviazione di lettura/scrittura e di texture di archiviazione di 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 di Chrome. Ciò significa che queste pipeline verranno create in modo più efficiente e utilizzeranno meno memoria. Vedi issue dawn:1933.

Aggiornamenti di Dawn

wgpu::RequestAdapterOptionsBackendType ora fa parte di wgpu::RequestAdapterOptions per semplificare la richiesta di un determinato backend da parte delle applicazioni quando ricevono un'opzione di adattamento. Consulta l'esempio seguente e issue dawn:1875.

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

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

Sono stati implementati diversi metodi aggiuntivi per Node.js. Vedi change dawn:142465.

Il tipo per i valori booleani dell'API C webgpu.h è passato 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++.

Sono riportati solo alcuni dei punti salienti. Consulta l'elenco completo dei commit.

Novità di WebGPU

Un elenco di tutto ciò che è stato trattato nella serie Novità di WebGPU.

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