WebGPU: tips en oplossingen voor probleemoplossing

François Beaufort
François Beaufort

Gepubliceerd: 7 februari 2024, Laatst bijgewerkt: 17 oktober 2025

In dit document wordt uitgelegd waarom WebGPU mogelijk niet werkt of niet werkt zoals verwacht in de Chrome-browser. Ook worden duidelijke stappen beschreven om de problemen waar mogelijk op te lossen.

Het volgende voorbeeld toont een JavaScript-fout die kan optreden wanneer 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 oorzaken hebben. Bekijk ze in deze specifieke volgorde:

  1. WebGPU vereist Chrome 113 of hoger op ChromeOS, macOS, Windows en Chrome 121 of hoger op Android. Controleer uw versie op chrome://version en werk deze indien nodig bij.

  2. WebGPU is alleen toegankelijk voor beveiligde contexten. Als u uw code via een onveilig protocol (bijvoorbeeld http: file: aanbiedt, gebruik dan het beveiligde https: -protocol of los dit op tijdens de ontwikkeling van uw webapp op een van de volgende manieren:

    • Dien uw code lokaal in op http://localhost of http://127.0.0.1 met een van de volgende opdrachten: npx http-server of python3 -m http.server .

    • Voeg de oorsprong toe aan de lijst 'Onveilige oorsprongen die als veilig worden behandeld' via chrome://flags/#unsafely-treat-insecure-origin-as-secure en start Chrome opnieuw.

    • Installeer Node.js en voer npx servez --ssl uit om je map via https te serveren met een nepcertificaat. Je krijgt nog steeds een waarschuwing in Chrome die je kunt omzeilen door op 'Geavanceerd' en vervolgens op 'Doorgaan naar...' te klikken.

    • Maak uw lokale webserver toegankelijk via internet met ngrok .

De GPU-adapter is nul

Hieronder ziet u een voorbeeld van een JavaScript-fout die u kunt krijgen wanneer de adapter die u krijgt door requestAdapter() aan te roepen, null is:

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

Dit kan om een ​​van de volgende redenen gebeuren. Bekijk ze in deze specifieke volgorde:

  1. WebGPU is uitgeschakeld wanneer de gebruiker 'Grafische versnelling gebruiken indien beschikbaar' heeft uitgeschakeld in chrome://settings/system . Controleer of deze instelling is uitgeschakeld en schakel hem weer in.

  2. WebGPU wordt nog niet ondersteund op dit platform. U kunt de vlag chrome://flags/#enable-unsafe-webgpu inschakelen en Chrome opnieuw opstarten. Voor experimentele Linux-ondersteuning moet u ook de vlag chrome://flags/#enable-vulkan inschakelen. Bekijk WebGPU-ondersteuning in Headless Chrome voor meer informatie.

  3. De GPU-hardware is specifiek op de blokkeerlijst geplaatst. Als u in chrome://gpu de melding "WebGPU is uitgeschakeld via de blokkeerlijst of de opdrachtregel" ziet, kunt u de blokkeerlijst voor WebGPU-adapters uitschakelen door de vlag chrome://flags/#enable-unsafe-webgpu in te schakelen en Chrome opnieuw te starten. U kunt de ingebouwde softwarerenderinglijst ook overschrijven door de vlag chrome://flags/#ignore-gpu-blocklist te schakelen en Chrome opnieuw te starten.

  4. Er is geen overeenkomende GPU-adapter voor de opties die zijn doorgegeven in requestAdapter() . Probeer requestAdapter() aan te roepen met andere opties .

  5. WebGPU vereist een GPU (hardware of softwarematig geëmuleerd). U kunt controleren of Chrome een GPU detecteert door chrome://gpu te bezoeken.

  6. Het GPU-proces is meerdere keren gecrasht. U kunt de pagina opnieuw laden of Chrome opnieuw starten. Bekijk de aanbevolen procedures voor WebGPU-apparaatverlies voor meer informatie.

WebGPU is langzamer dan WebGL

  1. Open chrome://gpu en controleer of u "WebGPU: Hardware accelerated" kunt lezen. Als u "WebGPU: Software only, hardware acceleration unavailable" ziet, moet u mogelijk uw GPU-drivers bijwerken.

  2. Het direct vertalen van WebGL-concepten naar WebGPU maakt mogelijk niet optimaal gebruik van de unieke optimalisaties van WebGPU. Bekijk 'Van WebGL naar 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 ondersteunt het gelijktijdig gebruik van meerdere GPU-adapters niet. Zie probleem chromium: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 energieverbruik (d.w.z. energiebesparing). Dit betekent dat de optie powerPreference geen invloed heeft bij het aanroepen requestAdapter() . U kunt het gebruik van de high-performance GPU afdwingen, indien beschikbaar, door de vlag chrome://flags/#force-high-performance-gpu in te schakelen en Chrome opnieuw te starten.