Novità di WebGPU (Chrome 146)

François Beaufort
François Beaufort

Pubblicato: 25 febbraio 2026

Supporta la modalità compatibilità WebGPU su OpenGL ES 3.1

Sebbene WebGPU sia progettato per allinearsi alle moderne API grafiche come Vulkan, Metal e D3D12, molti utenti dispongono di hardware meno recente che non supporta questi standard. Per colmare questa lacuna e garantire un'ampia accessibilità, Chrome introduce una nuova funzionalità di attivazione chiamata modalità di compatibilità.

Questa modalità ti consente di eseguire WebGPU su API grafiche precedenti come OpenGL ES 3.1. Se scegli come target un sottoinsieme leggermente limitato della specifica WebGPU, ti assicuri che la tua app web sia accessibile a tutti, dalle ultime configurazioni di gioco ai laptop e ai dispositivi mobili più vecchi. Il team ha iniziato con Android, ma sta esplorando il supporto per altri dispositivi, come ChromeOS con OpenGL ES 3.1 e Windows con Direct3D 11.

Per molte app web, puoi attivare la modalità di compatibilità passando featureLevel: "compatibility" quando chiami requestAdapter(). Se il tuo dispositivo supporta Core WebGPU, Chrome restituirà una scheda compatibile con Core, ma la tua app web saprà di rimanere entro i limiti di compatibilità, a meno che non attivi la funzionalità "core-features-and-limits" (o tutte le funzionalità disponibili). Le applicazioni più complesse potrebbero richiedere piccoli aggiustamenti per rientrare nelle limitazioni della modalità.

// Request a GPUAdapter in compatibility mode.
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
const device = await adapter.requestDevice();

Per informazioni dettagliate sulle limitazioni architetturali specifiche di questa modalità, consulta la guida alle nozioni di base di WebGPU. Inoltre, tutti gli esempi di WebGPU ora supportano la modalità di compatibilità. Puoi anche leggere la dichiarazione di intenzione di spedizione.

Allegati temporanei

Puoi utilizzare il nuovo flag TRANSIENT_ATTACHMENT GPUTextureUsage per creare allegati efficienti in termini di memoria. In questo modo, le operazioni di rendering pass rimangono nella memoria delle tessere, il che evita il traffico VRAM e l'allocazione VRAM per le texture.

Se dichiari una texture come temporanea (o "senza memoria"), la GPU sa che ha bisogno dei contenuti della texture solo temporaneamente, in particolare solo all'interno della pass di rendering corrente. Inoltre, poiché i contenuti della texture vengono eliminati dopo il passaggio di rendering, il driver potrebbe non dover allocare VRAM.

L'esempio seguente mostra come creare una texture temporanea.

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

if ('TRANSIENT_ATTACHMENT' in GPUTextureUsage) {

  const transientTexture = device.createTexture({
    size: [42, 42],
    // The TRANSIENT_ATTACHMENT flag indicates the texture content is temporary,
    // potentially keeping it in fast on-chip memory.
    usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TRANSIENT_ATTACHMENT,
    format: 'rgba8unorm',
  });
}

Consulta l'esempio Hello Triangle MSAA - WebGPU e l'intenzione di spedizione.

Estensione WGSL texture_and_sampler_let

L'estensione del linguaggio WGSL texture_and_sampler_let consente di assegnare variabili di texture o campionatore a un let all'interno di uno shader WGSL. Questa funzionalità attualmente fornisce un meccanismo di denominazione alternativo e prepara il terreno per il supporto senza binding, in cui i metodi che restituiscono texture o campionatori possono essere archiviati direttamente nelle variabili locali.

Vedi l'esempio seguente e l'intent to ship.

@group(0) @binding(0) var tex: texture_2d<f32>;
@group(1) @binding(0) var store : texture_storage_2d<r32float, read_write>;

@fragment fn main() {
    let a = tex;
    var res: vec4f = textureLoad(a, vec2i(1i), 0);

    textureStore(store, vec2i(0i), res);
}

Aggiornamenti di Dawn

Sono disponibili i seguenti nuovi livelli di limite:

La convalida SPIR-V è attivata per impostazione predefinita su Android per fornire un ulteriore livello di sicurezza e impedire l'instabilità dei driver dovuta a input non validi. Vedi problema 473526182.

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 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