Novità di WebGPU (Chrome 140)

François Beaufort
François Beaufort

Data di pubblicazione: 27 agosto 2025

Le richieste del dispositivo consumano l'adattatore

Secondo la specifica WebGPU, un adattatore viene contrassegnato come "utilizzato" 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 al momento della creazione. Vedi 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 in cui viene utilizzata la visualizzazione della texture

Ora è possibile utilizzare una GPUTexture direttamente come GPUBindingResource da esporre allo shader per il binding. Può essere utilizzato anche come GPURenderPassColorAttachment view, GPURenderPassColorAttachment resolveTarget e GPURenderPassDepthStencilAttachment view per una migliore ergonomia. Questo offre un approccio più semplice rispetto all'utilizzo di GPUTextureView per ottenere una visualizzazione predefinita. Vedi 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 le texture 1D possono essere campionate utilizzando textureSampleLevel() per garantire la coerenza con le texture 2D. In questo modo puoi campionare una texture 1D da uno shader dei vertici, cosa che in precedenza era possibile solo da uno shader dei frammenti con textureSample(). Vedi problema 382514673.

Ritiro dell'utilizzo della texture di archiviazione di sola lettura bgra8unorm

L'utilizzo del formato "bgra8unorm" con 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 in sola scrittura e non è portatile. Vedi problema 427681156.

Rimuovi l'attributo isFallbackAdapter di GPUAdapter

Come annunciato in precedenza, l'attributo GPUAdapter isFallbackAdapter è stato rimosso. È sostituito dall'attributo GPUAdapterInfo isFallbackAdapter introdotto in Chrome 136. Consulta la sezione Intenzione di rimozione.

Aggiornamenti all'alba

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

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

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

Il pulsante di attivazione/disattivazione del dispositivo dump_shaders_on_failure consente di scaricare gli shader solo in caso di errore per scopi di debug. Si applica esclusivamente ai backend D3, anche se è possibile un'espansione futura ad altri backend. Vedi problema 429187478.

Sono state apportate diverse modifiche al backend Vulkan per ridurre l'overhead durante l'invio delle passate di rendering, in particolare per migliorare le prestazioni sulle GPU mobile. Ad esempio: caching VkFramebuffers.

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