Novità di WebGPU (Chrome 117)

François Beaufort
François Beaufort

Annulla l'impostazione del buffer dei vertici

Se passi null anziché un GPUBuffer a setVertexBuffer() su GPURenderPassEncoder o GPURenderBundleEncoder, puoi annullare l'impostazione di un buffer dei vertici precedentemente impostato in uno slot specifico. Vedi 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);

Annulla l'impostazione del gruppo di binding

Se passi null anziché un GPUBindGroup a setBindGroup() su GPURenderPassEncoder o GPURenderBundleEncoder, puoi annullare l'impostazione di un gruppo di binding precedentemente impostato in uno slot specifico. Vedi 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);

Disattiva gli errori dalla creazione della pipeline asincrona quando il dispositivo viene perso

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 della creazione della pipeline asincrona verranno disattivati quando il GPUDevice è lost per far sembrare che i dispositivi persi funzionino il più possibile. Vedi il problema dawn:1874.

Aggiornamenti della creazione del modulo shader SPIR-V

La creazione di un modulo shader SPIR-V con createShaderModule() ora genera un errore TypeError, a meno che tu non esegui Chrome con il flag "Unsafe WebGPU Support", poiché 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 la modifica chromium:4711911.

Miglioramento dell'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 di lettura/scrittura e della texture di archiviazione di sola scrittura. Vedi il problema dawn:1883.

Memorizzazione nella cache delle pipeline 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 il problema dawn:1933.

Aggiornamenti di Dawn

Il wgpu::RequestAdapterOptionsBackendType fa ora parte di wgpu::RequestAdapterOptions per consentire alle applicazioni di richiedere più facilmente un backend specifico quando ottengono un adattatore. Vedi l'esempio seguente e il problema 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 la modifica 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++.

Questo articolo tratta solo alcuni dei punti salienti principali. Consulta l'elenco esaustivo dei commit.

Novità di WebGPU

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

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