Z tego dokumentu dowiesz się, dlaczego WebGPU może nie działać lub działać niezgodnie z oczekiwaniami w przeglądarce Chrome. Znajdziesz tu też instrukcje, jak rozwiązać te problemy (w miarę możliwości).
navigator.gpu jest niezdefiniowany
Ten przykład pokazuje błąd JavaScriptu, który może wystąpić, gdy gpu
jest niedostępny w obiekcie 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:
WebGPU wymaga przeglądarki 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.WebGPU jest dostępne tylko w bezpiecznych kontekstach. Jeśli kod jest udostępniany za pomocą niezabezpieczonego protokołu (np.
http:
,file:
), użyj bezpiecznego protokołuhttps:
lub rozwiąż ten problem podczas tworzenia aplikacji internetowej w jeden z tych sposobów:Wyświetlaj kod lokalnie na
http://localhost
lubhttp://127.0.0.1
za pomocą jednego z tych poleceń:npx http-server
lubpython3 -m http.server
.Dodaj źródło do listy
chrome://flags/#unsafely-treat-insecure-origin-as-secure
„Niebezpieczne źródła traktowane jako bezpieczne” i uruchom ponownie Chrome.Zainstaluj Node.js i uruchom
npx servez --ssl
, aby udostępnić folder przez https z fałszywym certyfikatem. W Chrome nadal będziesz otrzymywać ostrzeżenie, które możesz pominąć, klikając „Zaawansowane”, a potem „Przejdź do…”.Udostępnij lokalny serwer WWW w internecie za pomocą ngrok.
Karta graficzna ma wartość null
Oto przykład błędu JavaScriptu, który może wystąpić, gdy adapter zwracany przez wywołanie requestAdapter()
jest pusty:
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 zdarzyć z jednego z tych powodów: Sprawdź je w tej kolejności:
WebGPU jest wyłączone, gdy użytkownik wyłączy opcję „Używaj akceleracji grafiki, gdy jest dostępna” w sekcji
chrome://settings/system
. Sprawdź, czy to ustawienie jest wyłączone, i włącz je ponownie.WebGPU nie jest jeszcze obsługiwany na tej platformie. Możesz włączyć flagę
chrome://flags/#enable-unsafe-webgpu
i ponownie uruchomić Chrome. Aby korzystać z eksperymentalnej obsługi Linuksa, musisz też włączyć flagęchrome://flags/#enable-vulkan
. Więcej informacji znajdziesz w artykule Wsparcie WebGPU w Chrome bez głowy.Sprzęt GPU został dodany do listy zablokowanych. Jeśli w
chrome://gpu
widzisz komunikat „WebGPU zostało wyłączone za pomocą listy blokowania lub wiersza poleceń”, możesz wyłączyć listę blokowania dla WebGPU, włączając flagęchrome://flags/#enable-unsafe-webgpu
i ponownie uruchamiając Chrome.Nie ma odpowiedniego adaptera GPU dla opcji przekazanych w parametry
requestAdapter()
. Spróbuj zadzwonić dorequestAdapter()
, wybierając różne opcje.WebGPU wymaga procesora graficznego (wywoływanego przez sprzęt lub oprogramowanie). Aby sprawdzić, czy Chrome wykrywa kartę graficzną, otwórz stronę
chrome://gpu
.Proces GPU kilka razy uległ awarii. Możesz ponownie załadować stronę lub ponownie uruchomić Chrome. Aby dowiedzieć się więcej, zapoznaj się ze sprawdzonymi metodami dotyczącymi utraty urządzenia WebGPU.
WebGPU jest wolniejsze niż WebGL
Otwórz
chrome://gpu
i upewnij się, że widzisz komunikat „WebGPU: akceleracja sprzętowa”. Jeśli widzisz komunikat „WebGPU: tylko oprogramowanie, akceleracja sprzętowa niedostępna”, być może musisz zaktualizować sterowniki GPU.Bezpośrednie przekształcanie koncepcji WebGL w WebGPU może nie pozwolić na pełne wykorzystanie unikalnych optymalizacji WebGPU. Aby dowiedzieć się więcej o różnicach między tymi technologiami, przeczytaj artykuł Od WebGL do WebGPU.
Ograniczenia dotyczące systemu Windows
Pamiętaj o tych ograniczeniach podczas korzystania z WebGPU na urządzeniach z systemem Windows:
Chrome nie obsługuje jednoczesnego używania wielu kart graficznych. Zobacz problem chromium:329211593.
Chrome zawsze używa tego samego procesora graficznego, który został przypisany do innych zadań Chrome. W przypadku laptopów jest to zwykle zintegrowana karta graficzna, ze względu na aspekt zużycia energii (np. oszczędzanie energii). Oznacza to, że opcja
powerPreference
nie ma żadnego wpływu na wywołanierequestAdapter()
.