In diesem Dokument wird erläutert, warum die WebGPU im Chrome-Browser möglicherweise nicht funktioniert oder nicht wie erwartet funktioniert. Es werden klar verständlich erklärt, wie sich die Probleme nach Möglichkeit beheben lassen.
navigator.gpu ist nicht definiert
Das folgende Beispiel zeigt einen JavaScript-Fehler, 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')
Dies kann einen der folgenden Gründe haben. Sieh dir die Videos in dieser Reihenfolge an:
Für WebGPU ist Chrome 113 oder höher unter ChromeOS, macOS, Windows und Chrome 121 oder höher unter Android erforderlich. Überprüfen Sie Ihre Version unter
chrome://version
und aktualisieren Sie sie bei Bedarf.WebGPU ist nur in sicheren Kontexten zugänglich. Wenn Sie Ihren Code über ein unsicheres Protokoll (z. B.
http:
oderfile:
) bereitstellen, verwenden Sie entweder das sicherehttps:
-Protokoll oder beheben Sie dieses bei der Entwicklung Ihrer Webanwendung auf eine der folgenden Arten:Stellen Sie Ihren Code mit einem der folgenden Befehle lokal auf
http://localhost
oderhttp://127.0.0.1
bereit:npx http-server
oderpython3 -m http.server
.Fügen Sie den Ursprung zu „Als sicher behandelte unsichere Ursprünge“ hinzu. Liste
chrome://flags/#unsafely-treat-insecure-origin-as-secure
und starten Sie Chrome neu.Installieren Sie Node.js und führen Sie
npx servez --ssl
aus, um Ihren Ordner mit einem gefälschten Zertifikat über HTTPS bereitzustellen. In Chrome wird weiterhin eine Warnung angezeigt, die Sie umgehen können, indem Sie auf „Erweitert“ klicken und dann auf „Weiter zu...“.Machen Sie Ihren lokalen Webserver mit ngrok im Internet verfügbar.
Der GPU-Adapter ist null
Das folgende Beispiel zeigt einen JavaScript-Fehler, der auftreten kann, wenn der Adapter, den Sie durch den Aufruf von requestAdapter()
erhalten, null ist:
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
cancel Uncaught TypeError: Cannot read properties of undefined (reading requestDevice)
Dies geschieht aus einem der folgenden Gründe. Sieh dir die Videos in dieser Reihenfolge an:
WebGPU ist deaktiviert, wenn der Nutzer die Option „Grafikbeschleunigung verwenden, falls verfügbar“ deaktiviert hat in „
chrome://settings/system
“. 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 Linux-Unterstützung müssen Sie auch 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 die Meldung „WebGPU has been disabled via blocklist or the Befehlszeile“ (WebGPU wurde über die Sperrliste oder die Befehlszeile deaktiviert) angezeigt wird in
chrome://gpu
kannst du die Sperrliste der WebGPU-Adapter deaktivieren, indem du das Flagchrome://flags/#enable-unsafe-webgpu
aktivierst und Chrome neu startest.Für die in
requestAdapter()
übergebenen Optionen gibt es keinen passenden GPU-Adapter. Versuche,requestAdapter()
mit verschiedenen Optionen anzurufen.Für WebGPU ist eine GPU erforderlich (entweder hardware- oder softwareemuliert). Unter
chrome://gpu
können Sie prüfen, ob Chrome eine GPU erkennt.
WebGPU ist langsamer als WebGL
Öffne
chrome://gpu
und prüfe, ob du „WebGPU: Hardware accelerated“ lesen kannst. Wenn Sie „WebGPU: Software only, hardware acceleration longer“ (WebGPU: Nur Software, Hardwarebeschleunigung nicht verfügbar) lesen, müssen Sie möglicherweise Ihre GPU-Treiber aktualisieren.Bei der direkten Übersetzung von WebGL-Konzepten in WebGPU werden die einzigartigen Optimierungen von WebGPU möglicherweise nicht voll ausgenutzt. Unter Von WebGL zu WebGPU erfahren Sie mehr über die Unterschiede.
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 den GPU-Adapter, der anderen Chrome-Arbeitslasten zugewiesen ist. Bei Laptops ist das aufgrund des Energieverbrauchs (d. h. des Energiesparmodus) in der Regel die integrierte Grafikkarte. Das bedeutet, dass die Option
powerPreference
beim Aufrufen vonrequestAdapter()
keine Auswirkungen hat.