WebGPU: suggerimenti per la risoluzione dei problemi e correzioni

François Beaufort
François Beaufort

Pubblicato: 7 febbraio 2024, ultimo aggiornamento: 17 ottobre 2025

Questo documento spiega perché WebGPU potrebbe non funzionare o non funzionare come previsto nel browser Chrome, con passaggi chiari per risolvere i problemi, ove possibile.

L'esempio seguente mostra un errore JavaScript che potresti ricevere quando gpu non è disponibile in navigator:

const adapter = await navigator.gpu.requestAdapter();
cancel Uncaught TypeError: Cannot read properties of undefined (reading 'requestAdapter')

Ciò potrebbe essere dovuto a uno dei seguenti motivi. Controlla quelli in questo ordine specifico:

  1. WebGPU richiede Chrome 113 o versioni successive su ChromeOS, macOS, Windows e Chrome 121 o versioni successive su Android. Controlla la tua versione all'indirizzo chrome://version e, se necessario, aggiornala.

  2. WebGPU è accessibile solo ai contesti sicuri. Se pubblichi il codice tramite un protocollo non sicuro (ad esempio http:, file:), utilizza il protocollo sicuro https: o risolvi il problema durante lo sviluppo della tua app web in uno dei seguenti modi:

    • Pubblica il codice localmente su http://localhost o http://127.0.0.1 con uno di questi comandi: npx http-server o python3 -m http.server.

    • Aggiungi l'origine all'elenco "Origini non sicure trattate come sicure" di chrome://flags/#unsafely-treat-insecure-origin-as-secure e riavvia Chrome.

    • Installa Node.js ed esegui npx servez --ssl per pubblicare la cartella tramite HTTPS con un certificato falso. In Chrome continuerai a ricevere un avviso che puoi ignorare facendo clic su "Avanzate" e poi su "Procedi a…".

    • Esporre il server web locale a internet con ngrok.

L'adattatore GPU è nullo

Di seguito è riportato un esempio di errore JavaScript che potresti ricevere quando l'adattatore ottenuto chiamando requestAdapter() è nullo:

const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
cancel Uncaught TypeError: Cannot read properties of undefined (reading requestDevice)

Ciò si verifica per uno dei seguenti motivi. Controlla quelli in questo ordine specifico:

  1. WebGPU è disattivato quando l'utente ha disattivato l'opzione "Usa accelerazione grafica quando disponibile" in chrome://settings/system. Controlla se questa impostazione è disattivata e riattivala

  2. WebGPU non è ancora supportato su questa piattaforma. Puoi attivare il flag chrome://flags/#enable-unsafe-webgpu e riavviare Chrome. Per il supporto sperimentale di Linux, devi anche attivare il flag chrome://flags/#enable-vulkan. Per saperne di più, consulta Supporto di WebGPU in Chrome headless.

  3. L'hardware della GPU è stato inserito in una lista bloccata specifica. Se in chrome://gpu viene visualizzato il messaggio "WebGPU è stato disattivato tramite la blocklist o la riga di comando", puoi disattivare la blocklist degli adattatori WebGPU attivando il flag chrome://flags/#enable-unsafe-webgpu e riavviando Chrome. Puoi anche ignorare l'elenco di rendering software integrato attivando il flag chrome://flags/#ignore-gpu-blocklist e riavviando Chrome.

  4. Non esiste una scheda GPU corrispondente per le opzioni trasmesse in requestAdapter(). Prova a chiamare requestAdapter() con opzioni diverse.

  5. WebGPU richiede una GPU (hardware o emulata via software). Puoi verificare se Chrome rileva una GPU visitando la pagina chrome://gpu.

  6. Il processo della GPU ha subito arresti anomali più volte. Puoi ricaricare la pagina o riavviare Chrome. Per saperne di più, consulta le best practice per la perdita del dispositivo WebGPU.

WebGPU è più lento di WebGL

  1. Apri chrome://gpu e assicurati di poter leggere "WebGPU: accelerazione hardware". Se leggi "WebGPU: solo software, accelerazione hardware non disponibile", potresti dover aggiornare i driver della GPU.

  2. La traduzione diretta dei concetti di WebGL in WebGPU potrebbe non sfruttare appieno le ottimizzazioni uniche di WebGPU. Consulta l'articolo Da WebGL a WebGPU per scoprire alcune delle loro differenze.

Limitazioni specifiche di Windows

Tieni presente le seguenti limitazioni quando utilizzi WebGPU sui dispositivi Windows:

  • Chrome non supporta l'utilizzo simultaneo di più schede GPU. Vedi issue chromium:329211593.

  • Chrome utilizza sempre lo stesso adattatore GPU allocato per altri workload di Chrome, che per i laptop è generalmente la scheda grafica integrata, a causa dell'aspetto del consumo energetico (ad es. risparmio energetico). Ciò significa che l'opzione powerPreference non ha alcun impatto quando si chiama requestAdapter(). Se disponibile, puoi forzare l'utilizzo della GPU ad alte prestazioni attivando il flag chrome://flags/#force-high-performance-gpu e riavviando Chrome.