In dit document wordt uitgelegd waarom WebGPU mogelijk niet werkt of niet werkt zoals verwacht in de Chrome-browser, met duidelijke stappen om de problemen waar mogelijk op te lossen.
navigator.gpu is niet gedefinieerd
Het volgende voorbeeld toont een JavaScript-fout die u kunt krijgen als gpu
niet beschikbaar is in navigator
:
const adapter = await navigator.gpu.requestAdapter();
cancel Uncaught TypeError: Cannot read properties of undefined (reading 'requestAdapter')
Dit kan een van de volgende redenen hebben. Bekijk die in deze specifieke volgorde:
WebGPU vereist Chrome 113 of hoger op ChromeOS, macOS, Windows en Chrome 121 of hoger op Android. Controleer uw versie op
chrome://version
en update indien nodig.WebGPU is alleen toegankelijk voor beveiligde contexten. Als u uw code via een onveilig protocol verzendt (bijvoorbeeld
http:
,file:
), gebruik dan het beveiligdehttps:
-protocol of pak dit aan tijdens de ontwikkeling van uw web-app op een van de volgende manieren:Geef uw code lokaal weer op
http://localhost
ofhttp://127.0.0.1
met een van deze opdrachten:npx http-server
ofpython3 -m http.server
.Voeg de oorsprong toe aan de lijst 'Onveilige oorsprong behandeld als veilig' van
chrome://flags/#unsafely-treat-insecure-origin-as-secure
en start Chrome opnieuw.Installeer Node.js en voer
npx servez --ssl
uit om uw map via https te bedienen met een nepcertificaat. U krijgt nog steeds een waarschuwing in Chrome die u kunt omzeilen door op 'Geavanceerd' en vervolgens op 'Doorgaan naar...' te klikken.Stel uw lokale webserver bloot aan internet met ngrok .
De GPU-adapter is nul
Hier volgt een voorbeeld van een JavaScript-fout die u kunt krijgen als de adapter die u krijgt bij het aanroepen van requestAdapter()
null is:
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
cancel Uncaught TypeError: Cannot read properties of undefined (reading requestDevice)
Dit gebeurt om een van de volgende redenen. Bekijk die in deze specifieke volgorde:
WebGPU is uitgeschakeld wanneer de gebruiker 'Gebruik grafische versnelling indien beschikbaar' heeft uitgeschakeld in
chrome://settings/system
. Controleer of deze instelling is uitgeschakeld en schakel deze weer inWebGPU wordt nog niet ondersteund op dit platform. U kunt de
chrome://flags/#enable-unsafe-webgpu
vlag inschakelen en Chrome opnieuw opstarten. Voor experimentele ondersteuning voor Linux moet je ook de vlagchrome://flags/#enable-vulkan
inschakelen. Bekijk WebGPU-ondersteuning in Headless Chrome voor meer informatie.De GPU-hardware staat specifiek op de blokkeerlijst. Als u de melding "WebGPU is uitgeschakeld via blokkeerlijst of de opdrachtregel" ziet in
chrome://gpu
, kunt u de blokkeerlijst voor WebGPU-adapters uitschakelen door dechrome://flags/#enable-unsafe-webgpu
te schakelen en Chrome opnieuw te starten.Er is geen overeenkomende GPU-adapter voor de opties die zijn doorgegeven in
requestAdapter()
. ProbeerrequestAdapter()
aan te roepen met verschillende opties .WebGPU vereist een GPU (hardware of software-geëmuleerd). Je kunt controleren of Chrome een GPU detecteert door naar
chrome://gpu
te gaan.
WebGPU is langzamer dan WebGL
Open
chrome://gpu
en zorg ervoor dat u "WebGPU: Hardware Accelerated" kunt lezen. Als u 'WebGPU: alleen software, hardwareversnelling niet beschikbaar' leest, moet u mogelijk uw GPU-stuurprogramma's bijwerken.Het rechtstreeks vertalen van WebGL-concepten naar WebGPU maakt mogelijk niet optimaal gebruik van de unieke optimalisaties van WebGPU. Bekijk Van WebGL tot WebGPU voor meer informatie over enkele verschillen.
Windows-specifieke beperkingen
Houd rekening met de volgende beperkingen bij het gebruik van WebGPU op Windows-apparaten:
Chrome biedt geen ondersteuning voor het gelijktijdig gebruiken van meerdere GPU-adapters. Zie uitgave chroom:329211593 .
Chrome gebruikt altijd dezelfde GPU-adapter die is toegewezen voor andere Chrome-workloads (voor laptops is dit doorgaans de geïntegreerde grafische kaart), vanwege het aspect energieverbruik (dat wil zeggen: energiebesparing). Dit betekent dat de optie
powerPreference
geen enkele impact heeft bij het aanroepenrequestAdapter()
.