Novità di WebGPU (Chrome 117)

François Beaufort
François Beaufort

Annulla l'impostazione del buffer di vertici

Il trasferimento di null anziché di un valore GPUBuffer a setVertexBuffer() su GPURenderPassEncoder o GPURenderBundleEncoder ti consente di annullare l'impostazione di un buffer di vertice impostato in precedenza 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);

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. 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 della creazione asincrona della pipeline in caso di smarrimento del dispositivo

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 Shar SPIR-V con createShaderModule() ora genera un TypeError, a meno che tu non esegua Chrome con il flag "Supporto WebGPU non sicuro" perché 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 la modifica di 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 in 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. Vedi 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.

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

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

Novità di WebGPU

Un elenco di tutti gli argomenti trattati 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