In diesem Dokument wird erläutert, warum WebGPU möglicherweise nicht funktioniert oder nicht wie erwartet im Chrome-Browser funktioniert. Außerdem werden klare Schritte zur Behebung der Probleme beschrieben, sofern möglich.
navigator.gpu ist nicht definiert
Im folgenden Beispiel wird ein JavaScript-Fehler angezeigt, der auftreten kann, wenn gpu
in navigator
nicht verfügbar ist:
const adapter = await navigator.gpu.requestAdapter();
cancel Uncaught TypeError: Cannot read properties of undefined (reading 'requestAdapter')
Das kann folgende Gründe haben: Prüfen Sie diese in der folgenden Reihenfolge:
Für WebGPU ist Chrome 113 oder höher auf ChromeOS, macOS und Windows sowie Chrome 121 oder höher auf Android erforderlich. Prüfe deine Version unter
chrome://version
und aktualisiere sie bei Bedarf.WebGPU ist nur für sichere Kontexte zugänglich. Wenn Sie Ihren Code über ein unsicheres Protokoll (z. B.
http:
oderfile:
) bereitstellen, verwenden Sie entweder das sicherehttps:
-Protokoll oder beheben Sie das Problem während der Entwicklung Ihrer Webanwendung auf eine der folgenden Arten:Sie können Ihren Code lokal auf
http://localhost
oderhttp://127.0.0.1
mit einem der folgenden Befehle bereitstellen:npx http-server
oderpython3 -m http.server
.Fügen Sie die Quelle der Liste „Unsichere Quellen, die als sicher behandelt werden“ in
chrome://flags/#unsafely-treat-insecure-origin-as-secure
hinzu und starten Sie Chrome neu.Installieren Sie Node.js und führen Sie
npx servez --ssl
aus, um Ihren Ordner über https mit einem gefälschten Zertifikat bereitzustellen. Sie erhalten weiterhin eine Warnung in Chrome, die Sie jedoch überspringen können, indem Sie auf „Erweitert“ und dann auf „Weiter zu…“ klicken.Stellen Sie Ihren lokalen Webserver mit ngrok dem Internet zur Verfügung.
Der GPU-Adapter ist null
Das folgende Beispiel zeigt einen JavaScript-Fehler, der auftreten kann, wenn der Adapter, der durch Aufrufen von requestAdapter()
zurückgegeben wird, null ist:
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
cancel Uncaught TypeError: Cannot read properties of undefined (reading requestDevice)
Das kann einen der folgenden Gründe haben: Prüfen Sie diese in der folgenden Reihenfolge:
WebGPU ist deaktiviert, wenn der Nutzer in
chrome://settings/system
die Option „Grafikbeschleunigung verwenden, falls verfügbar“ deaktiviert hat. Prüfe, ob diese Einstellung deaktiviert ist, und aktiviere sie dann wieder.WebGPU wird auf dieser Plattform noch nicht unterstützt. Sie können das Flag
chrome://flags/#enable-unsafe-webgpu
aktivieren und Chrome neu starten. Für die experimentelle Unterstützung von Linux müssen Sie außerdem das Flagchrome://flags/#enable-vulkan
aktivieren. Weitere Informationen finden Sie unter WebGPU-Unterstützung in Headless Chrome.Die GPU-Hardware wurde speziell auf die Sperrliste gesetzt. Wenn in
chrome://gpu
die Meldung „WebGPU wurde über die Blockliste oder die Befehlszeile deaktiviert“ angezeigt wird, können Sie die Blockliste der WebGPU-Adapter deaktivieren, indem Sie das Flagchrome://flags/#enable-unsafe-webgpu
aktivieren und Chrome neu starten.Es gibt keinen passenden GPU-Adapter für die in
requestAdapter()
übergebenen Optionen. Probieren Sie verschiedene Optionen aus, umrequestAdapter()
anzurufen.Für WebGPU ist eine GPU erforderlich (entweder hardware- oder softwaregestützt). Ob Chrome eine GPU erkennt, können Sie unter
chrome://gpu
prüfen.Der GPU-Prozess ist mehrmals abgestürzt. Sie können die Seite aktualisieren oder Chrome neu starten. Weitere Informationen finden Sie unter Best Practices für den Verlust von WebGPU-Geräten.
WebGPU ist langsamer als WebGL
Öffne
chrome://gpu
und prüfe, ob „WebGPU: Hardware accelerated“ (WebGPU: Hardwarebeschleunigt) angezeigt wird. Wenn Sie „WebGPU: Software only, hardware acceleration unmanaged“ (WebGPU: Nur Software, Hardwarebeschleunigung nicht verfügbar) lesen, müssen Sie möglicherweise Ihre GPU-Treiber aktualisieren.Wenn WebGL-Konzepte direkt in WebGPU übertragen werden, werden die einzigartigen Optimierungen von WebGPU möglicherweise nicht voll ausgeschöpft. Weitere Informationen zu den Unterschieden finden Sie unter Von WebGL zu WebGPU.
Windows-spezifische Einschränkungen
Beachten Sie bei der Verwendung von WebGPU auf Windows-Geräten die folgenden Einschränkungen:
Chrome unterstützt nicht die gleichzeitige Verwendung mehrerer GPU-Adapter. Siehe issue chromium:329211593.
Chrome verwendet immer denselben GPU-Adapter, der auch anderen Chrome-Arbeitslasten zugewiesen ist. Bei Laptops ist dies in der Regel die integrierte Grafikkarte, da dies die Stromversorgung optimiert. Das bedeutet, dass die Option
powerPreference
beim Aufrufen vonrequestAdapter()
keine Auswirkungen hat.