Novità di WebGPU (Chrome 140)

François Beaufort
François Beaufort

Pubblicato il 27 agosto 2025

Le richieste di dispositivi consumano l'adattatore

Secondo la specifica WebGPU, un adattatore viene contrassegnato come "consumato" in seguito a una richiesta di dispositivo riuscita. Di conseguenza, tutte le chiamate requestDevice() successive che utilizzano lo stesso adattatore ora genereranno una promessa rifiutata. In precedenza, queste chiamate restituivano un dispositivo perso durante la creazione. Vedi il problema 415825174.

const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();

await adapter.requestDevice(); // Fails because adapter has been consumed.

Abbreviazione per l'utilizzo della texture quando viene utilizzata la visualizzazione della texture

Ora è possibile utilizzare direttamente una GPUTexture come GPUBindingResource da esporre allo shader per il binding. Può essere utilizzata anche come view GPURenderPassColorAttachment, resolveTarget GPURenderPassColorAttachment e view GPURenderPassDepthStencilAttachment per una migliore ergonomia. Questo approccio è più semplice rispetto all'utilizzo di una GPUTextureView per ottenere una visualizzazione predefinita. Vedi il problema 425906323.

const bindGroup = myDevice.createBindGroup({
  layout: myPipeline.getBindGroupLayout(0),
  entries: [
    { binding: 0, resource: mySampler },
    { binding: 1, resource: myTexture }, // Same as myTexture.createView()
    { binding: 2, resource: myExternalTexture },
    { binding: 3, resource: myBuffer },
  ],
});

WGSL textureSampleLevel supporta le texture 1D

Ora è possibile campionare le texture 1D utilizzando textureSampleLevel() per garantire la coerenza con le texture 2D. In questo modo puoi campionare una texture 1D da uno shader vertex, cosa che in precedenza era possibile solo da uno shader fragment con textureSample(). Vedi il problema 382514673.

Deprecare l'utilizzo della texture di archiviazione di sola lettura bgra8unorm

L'utilizzo del formato "bgra8unorm" con le texture di archiviazione di sola lettura è ora deprecato. La specifica WebGPU lo vieta esplicitamente e la sua precedente autorizzazione in Chrome era un bug, in quanto questo formato è destinato all'accesso di sola scrittura e non è portabile. Vedi il problema 427681156.

Rimuovere l'attributo GPUAdapter isFallbackAdapter

Come annunciato in precedenza, l'attributo isFallbackAdapter di GPUAdapter è stato rimosso. È stato sostituito dall'attributo isFallbackAdapter di GPUAdapterInfo introdotto in Chrome 136. Vedi l'intenzione di rimuovere.

Aggiornamenti di Dawn

La funzione wgpuInstanceGetWGSLLanguageFeatures() viene utilizzata per ottenere un elenco delle funzionalità del linguaggio WGSL supportate dall'istanza. In precedenza restituiva un valore WGPUStatus. È stata aggiornata in modo da non restituire un valore perché non può non riuscire. Vedi il problema 429178774.

La funzione wgpuSurfacePresent() ora restituisce un errore WGPUStatus se la superficie non ha una texture corrente. Vedi il problema 425930323.

La nuova funzionalità wgpu::InstanceFeatureName::MultipleDevicesPerAdapter consente agli adattatori di creare più dispositivi senza essere "consumati". Vedi il problema 415825174.

L'opzione di attivazione/disattivazione del dispositivo dump_shaders_on_failure consente di eseguire il dump degli shader solo in caso di errore a scopo di debug. Si applica esclusivamente ai backend D3, anche se in futuro è possibile un'espansione ad altri backend. Vedi il problema 429187478.

Sono state apportate diverse modifiche al backend Vulkan per ridurre l'overhead durante l'invio dei passaggi di rendering, in particolare per migliorare le prestazioni sulle GPU mobile. Ad esempio: memorizzazione nella cache di VkFramebuffers.

Questo articolo tratta solo alcuni dei punti salienti principali. Consulta l'elenco completo 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