發布日期:2024 年 2 月 7 日,上次更新時間:2025 年 10 月 17 日
本文說明 WebGPU 可能無法運作或無法在 Chrome 瀏覽器中正常運作的原因,並提供清楚的步驟,盡可能解決問題。
navigator.gpu 未定義
以下範例顯示 navigator
中沒有 gpu
時,您可能會收到的 JavaScript 錯誤:
const adapter = await navigator.gpu.requestAdapter();
cancel Uncaught TypeError: Cannot read properties of undefined (reading 'requestAdapter')
可能原因如下:請依下列順序查看:
如要在 ChromeOS、macOS 和 Windows 上使用 WebGPU,必須安裝 Chrome 113 以上版本;如要在 Android 上使用,則必須安裝 Chrome 121 以上版本。前往
chrome://version
查看版本,並視需要更新。WebGPU 只能在安全環境中使用。如果您透過不安全的通訊協定 (例如
http:
、file:
) 提供程式碼,請使用安全的https:
通訊協定,或在開發網頁應用程式時,透過下列其中一種方式解決這個問題:使用下列任一指令,在本機的
http://localhost
或http://127.0.0.1
上提供程式碼:npx http-server
或python3 -m http.server
。將來源新增至
chrome://flags/#unsafely-treat-insecure-origin-as-secure
的「視為安全的不安全來源」清單,然後重新啟動 Chrome。安裝 Node.js 並執行
npx servez --ssl
,透過 https 和偽造憑證提供資料夾。Chrome 仍會顯示警告,但您可以點選「進階」和「繼續前往...」略過警告。使用 ngrok 將本機網路伺服器公開至網際網路。
GPU 介面卡為空值
以下是您從呼叫 requestAdapter()
取得的介面卡為空值時,可能會收到的 JavaScript 錯誤範例:
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
cancel Uncaught TypeError: Cannot read properties of undefined (reading requestDevice)
發生這種情況的原因如下。請依下列順序查看:
如果使用者在
chrome://settings/system
中關閉「使用圖形加速功能 (如果可用)」,系統就會停用 WebGPU。確認這項設定是否已關閉,並重新開啟這個平台目前不支援 WebGPU。啟用
chrome://flags/#enable-unsafe-webgpu
旗標並重新啟動 Chrome。如要使用 Linux 實驗功能,您也需要啟用chrome://flags/#enable-vulkan
標記。如要瞭解詳情,請參閱「無頭 Chrome 中的 WebGPU 支援」。GPU 硬體已加入封鎖清單。如果
chrome://gpu
中顯示「WebGPU 已透過封鎖清單或指令列停用」,您可以啟用chrome://flags/#enable-unsafe-webgpu
旗標並重新啟動 Chrome,停用 WebGPU 轉接器封鎖清單。您也可以啟用chrome://flags/#ignore-gpu-blocklist
標記並重新啟動 Chrome,覆寫內建的軟體算繪清單。requestAdapter()
中傳遞的選項沒有相符的 GPU 轉接器。嘗試使用其他選項撥打requestAdapter()
。WebGPU 需要 GPU (硬體或軟體模擬)。如要確認 Chrome 是否偵測到 GPU,請前往
chrome://gpu
。GPU 程序多次當機。你可以重新載入頁面或重新啟動 Chrome。如要瞭解詳情,請參閱 WebGPU 裝置遺失最佳做法。
WebGPU 比 WebGL 慢
開啟
chrome://gpu
,確認你可以讀取「WebGPU: Hardware accelerated」(WebGPU:硬體加速)。如果看到「WebGPU:僅限軟體,無法使用硬體加速功能」,可能需要更新 GPU 驅動程式。直接將 WebGL 概念轉換為 WebGPU,可能無法充分運用 WebGPU 的獨特最佳化功能。如要瞭解兩者之間的差異,請參閱「從 WebGL 到 WebGPU」。
Windows 特有的限制
在 Windows 裝置上使用 WebGPU 時,請注意下列限制:
Chrome 不支援同時使用多個 GPU 配接器。請參閱問題 chromium:329211593。
Chrome 一律會使用分配給其他 Chrome 工作負載的相同 GPU 配接器,由於筆電的耗電量較高 (即省電),因此通常是整合式顯示卡。也就是說,呼叫
requestAdapter()
時,powerPreference
選項不會有任何影響。如要強制使用高效能 GPU (如有),請啟用chrome://flags/#force-high-performance-gpu
旗標並重新啟動 Chrome。