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.
navigator.gpu is undefined
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:
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.WebGPU è accessibile solo ai contesti sicuri. Se pubblichi il codice tramite un protocollo non sicuro (ad esempio
http:
,file:
), utilizza il protocollo sicurohttps:
o risolvi il problema durante lo sviluppo della tua app web in uno dei seguenti modi:Pubblica il codice localmente su
http://localhost
ohttp://127.0.0.1
con uno di questi comandi:npx http-server
opython3 -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:
WebGPU è disattivato quando l'utente ha disattivato l'opzione "Usa accelerazione grafica quando disponibile" in
chrome://settings/system
. Controlla se questa impostazione è disattivata e riattivalaWebGPU 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 flagchrome://flags/#enable-vulkan
. Per saperne di più, consulta Supporto di WebGPU in Chrome headless.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 flagchrome://flags/#enable-unsafe-webgpu
e riavviando Chrome. Puoi anche ignorare l'elenco di rendering software integrato attivando il flagchrome://flags/#ignore-gpu-blocklist
e riavviando Chrome.Non esiste una scheda GPU corrispondente per le opzioni trasmesse in
requestAdapter()
. Prova a chiamarerequestAdapter()
con opzioni diverse.WebGPU richiede una GPU (hardware o emulata via software). Puoi verificare se Chrome rileva una GPU visitando la pagina
chrome://gpu
.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
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.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 chiamarequestAdapter()
. Se disponibile, puoi forzare l'utilizzo della GPU ad alte prestazioni attivando il flagchrome://flags/#force-high-performance-gpu
e riavviando Chrome.