WebGPU: wskazówki i rozwiązania problemów

François Beaufort
François Beaufort

Data publikacji: 7 lutego 2024 r., ostatnia aktualizacja: 17 października 2025 r.

Z tego dokumentu dowiesz się, dlaczego WebGPU może nie działać lub działać niezgodnie z oczekiwaniami w przeglądarce Chrome, oraz poznasz jasne instrukcje, które pomogą Ci rozwiązać te problemy.

Poniższy przykład pokazuje błąd JavaScriptu, który może wystąpić, gdy gpu nie jest dostępny w navigator:

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

Może to być spowodowane jedną z tych przyczyn: Sprawdź je w tej kolejności:

  1. WebGPU wymaga Chrome w wersji 113 lub nowszej na ChromeOS, macOS i Windows oraz Chrome w wersji 121 lub nowszej na Androidzie. Sprawdź swoją wersję na stronie chrome://version i w razie potrzeby ją zaktualizuj.

  2. Interfejs WebGPU jest dostępny tylko w zabezpieczonych kontekstach. Jeśli udostępniasz kod za pomocą niezabezpieczonego protokołu (np. http:, file:), użyj bezpiecznego protokołu https: lub rozwiąż ten problem podczas tworzenia aplikacji internetowej w jeden z tych sposobów:

    • Uruchom kod lokalnie na http://localhost lub http://127.0.0.1 za pomocą jednego z tych poleceń: npx http-server lub python3 -m http.server.

    • Dodaj źródło do listy „Niezabezpieczone źródła traktowane jako bezpieczne” w chrome://flags/#unsafely-treat-insecure-origin-as-secure i ponownie uruchom Chrome.

    • Zainstaluj Node.js i uruchom npx servez --ssl, aby udostępnić folder przez HTTPS z fałszywym certyfikatem. W Chrome nadal będzie wyświetlać się ostrzeżenie, które możesz pominąć, klikając „Zaawansowane”, a potem „Przejdź do…”.

    • Udostępnij swój lokalny serwer WWW w internecie za pomocą ngrok.

Adapter GPU ma wartość null

Oto przykład błędu JavaScriptu, który może wystąpić, gdy adapter uzyskany przez wywołanie funkcji requestAdapter() ma wartość null:

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

Może się tak dziać z tych powodów: Sprawdź je w tej kolejności:

  1. WebGPU jest wyłączony, gdy użytkownik wyłączy opcję „Użyj akceleracji grafiki, gdy jest dostępna” w chrome://settings/system. Sprawdź, czy to ustawienie jest wyłączone, i włącz je ponownie.

  2. WebGPU nie jest jeszcze obsługiwany na tej platformie. Możesz włączyć flagę chrome://flags/#enable-unsafe-webgpu i ponownie uruchomić Chrome. Aby włączyć eksperymentalną obsługę Linuksa, musisz też włączyć flagę chrome://flags/#enable-vulkan. Więcej informacji znajdziesz w artykule Obsługa WebGPU w Chrome bez interfejsu.

  3. Sprzęt GPU został dodany do listy zablokowanych. Jeśli w chrome://gpu widzisz komunikat „WebGPU has been disabled via blocklist or the command line” (WebGPU zostało wyłączone za pomocą listy blokowania lub wiersza poleceń), możesz wyłączyć listę blokowania adapterów WebGPU, włączając flagę chrome://flags/#enable-unsafe-webgpu i ponownie uruchamiając Chrome. Możesz też zastąpić wbudowaną listę renderowania oprogramowania, włączając flagę chrome://flags/#ignore-gpu-blocklist i ponownie uruchamiając Chrome.

  4. Nie ma pasującego adaptera GPU dla opcji przekazanych w parametrze requestAdapter(). Spróbuj zadzwonić do użytkownika requestAdapter() z różnymi opcjami.

  5. WebGPU wymaga procesora graficznego (sprzętowego lub emulowanego programowo). Aby sprawdzić, czy Chrome wykrywa GPU, otwórz stronę chrome://gpu.

  6. Proces GPU kilka razy uległ awarii. Możesz ponownie załadować stronę lub ponownie uruchomić Chrome. Więcej informacji znajdziesz w artykule Sprawdzone metody dotyczące utraty urządzenia WebGPU.

WebGPU działa wolniej niż WebGL

  1. Otwórz chrome://gpu i sprawdź, czy widzisz tekst „WebGPU: Hardware accelerated” (WebGPU: akceleracja sprzętowa). Jeśli zobaczysz komunikat „WebGPU: tylko oprogramowanie, akceleracja sprzętowa niedostępna”, może być konieczne zaktualizowanie sterowników GPU.

  2. Bezpośrednie tłumaczenie koncepcji WebGL na WebGPU może nie w pełni wykorzystywać unikalnych optymalizacji WebGPU. Więcej informacji o różnicach między nimi znajdziesz w artykule Od WebGL do WebGPU.

Ograniczenia dotyczące systemu Windows

Podczas korzystania z WebGPU na urządzeniach z systemem Windows pamiętaj o tych ograniczeniach:

  • Chrome nie obsługuje jednoczesnego korzystania z wielu kart graficznych. Zobacz issue chromium:329211593.

  • Chrome zawsze używa tego samego adaptera GPU, który został przydzielony do innych zadań Chrome. W przypadku laptopów jest to zwykle zintegrowana karta graficzna ze względu na zużycie energii (tj. oszczędzanie energii). Oznacza to, że opcja powerPreference nie ma wpływu na wywołanie funkcji requestAdapter(). Jeśli jest dostępny wydajny procesor graficzny, możesz wymusić jego użycie, włączając flagę chrome://flags/#force-high-performance-gpu i ponownie uruchamiając Chrome.