このドキュメントでは、Chrome ブラウザで WebGPU が動作しない場合や、想定どおりに動作しない理由について説明します。また、可能な場合は問題を解決するための明確な手順も示します。
navigator.gpu が未定義
次の例は、navigator
で gpu
を使用できない場合に発生する可能性がある JavaScript エラーを示しています。
const adapter = await navigator.gpu.requestAdapter();
cancel Uncaught TypeError: Cannot read properties of undefined (reading 'requestAdapter')
原因としては次のいずれかが考えられます。次の順番で確認してください。
WebGPU を使用するには、ChromeOS、macOS、Windows では Chrome 113 以降、Android では Chrome 121 以降が必要です。
chrome://version
でバージョンを確認し、必要に応じて更新します。WebGPU にアクセスできるのは、安全なコンテキストのみです。安全でないプロトコル(
http:
、file:
など)でコードを提供する場合は、安全なhttps:
プロトコルを使用するか、ウェブアプリの開発時に次のいずれかの方法で対処してください。npx http-server
またはpython3 -m http.server
のいずれかのコマンドを使用して、http://localhost
またはhttp://127.0.0.1
でローカルにコードを配信します。chrome://flags/#unsafely-treat-insecure-origin-as-secure
の「安全として扱われる安全でないオリジン」リストにオリジンを追加し、Chrome を再起動します。Node.js をインストールして
npx servez --ssl
を実行し、偽の証明書を使用して https 経由でフォルダを提供します。Chrome では引き続き警告が表示されますが、[詳細設定]、[... に進む] の順にクリックして回避できます。ngrok を使用してローカル ウェブサーバーをインターネットに公開します。
GPU アダプターが null である
requestAdapter()
の呼び出しから取得したアダプターが null の場合に発生する可能性がある 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
フラグも有効にする必要があります。詳しくは、Headless Chrome での WebGPU のサポートをご覧ください。GPU ハードウェアがブロックリストに登録されています。
chrome://gpu
に「WebGPU がブロックリストまたはコマンドラインによって無効にされています」と表示されている場合は、chrome://flags/#enable-unsafe-webgpu
フラグを有効にして Chrome を再起動することで、WebGPU アダプターのブロックリストを無効にできます。requestAdapter()
で渡されたオプションに一致する GPU アダプターがありません。さまざまなオプションを指定してrequestAdapter()
を呼び出す。WebGPU には GPU(ハードウェアまたはソフトウェア エミュレート)が必要です。Chrome が GPU を検出しているかどうかは、
chrome://gpu
にアクセスして確認できます。GPU プロセスが複数回クラッシュしました。ページを再読み込みするか、Chrome を再起動してください。詳しくは、WebGPU デバイスの損失に関するベスト プラクティスをご覧ください。
WebGPU は WebGL よりも遅い
chrome://gpu
を開き、「WebGPU: Hardware accelerated」と表示されていることを確認します。「WebGPU: ソフトウェアのみ、ハードウェア アクセラレーションは使用不可」と表示されている場合は、GPU ドライバの更新が必要になることがあります。WebGL のコンセプトを WebGPU に直接変換すると、WebGPU の独自の最適化を十分に活用できない可能性があります。違いについては、WebGL から WebGPU へをご覧ください。
Windows 固有の制限
Windows デバイスで WebGPU を使用する場合は、次の制限事項に注意してください。
Chrome では、複数の GPU アダプターを同時に使用することはできません。問題 chromium:329211593 をご覧ください。
Chrome は、他の Chrome ワークロードに割り当てられた GPU アダプタと同じアダプタを使用します。ノートパソコンの場合は、電力使用量(省電力)の観点から、通常は統合グラフィック カードが使用されます。つまり、
requestAdapter()
を呼び出すときにpowerPreference
オプションは影響しません。