web-dev-qa-db-ja.com

XPでChrome)でWebGLを有効にする方法は?

私のGPUはNVIDIAGeForce 8400GSです。 NVIDIAによる

OpenGL®2.1の最適化とサポート:
OpenGLアプリケーションの最高の互換性とパフォーマンスを保証します。

私が正しく理解していれば、それはWebGLをサポートしていることを意味します。

WebGLは、FirefoxでネイティブおよびANGLEを介して動作します。 https://get.webgl.org/ にアクセスすると、

お使いのブラウザはWebGLをサポートしています

ただし、Chrome

お使いのブラウザはWebGLをサポートしているようですが、無効になっているか利用できません

Use hardware acceleration when availableが有効になっていて、chrome://flags/#disable-webglが無効になっていることを確認しました。

chrome://gpu/に行くと、Chrome

WebGL:利用できません

検出された問題

  • GPUプロセスを起動できませんでした:GPUプロセスの起動に失敗しました。
    無効な機能:すべて
  • ドライバーのバグを回避するために、リンクが成功した後は常にglUseProgramを呼び出してください: 49137
    適用される回避策:use_current_program_after_successful_link
  • 一部のドライバーは、GPUプロセスサンドボックスでD3Dデバイスをリセットできません
    適用される回避策:exit_on_context_lost
  • WindowsVista以下でDirect3D11の使用を無効にする
    適用される回避策:disable_d3d11
  • すべてのプラットフォームで最初のプログラムを使用する前にユニフォームをクリアします: 12476449137
    適用される回避策:clear_uniforms_before_first_program_use
  • 古いnVidiaドライバーでD3D11を無効にします: 49929
    適用される回避策:disable_d3d11
  • 常にvec/matコンストラクターを一貫性のあるものに書き直してください: 98694
    適用される回避策:scalarize_vec_and_mat_constructor_args
  • ラスターは単一のスレッドを使用しています。
    無効な機能:multiple_raster_threads

chrome://flags/#ignore-gpu-blacklistを有効にしてみましたが、何も変わりませんでした。

私のOSはWindows XP Home SP3です。同じマシンにLubuntu15.04もあり、ハードウェアアクセラレーションを有効にすると動作します。

XPでそれを有効にする方法はありますか?

2
Oriol

XPではGPUレンダリングが削除されているため、理論的にはWebGLを使用することはできません。

WebGLは ビルド29194 (v39.0.2138.0)で機能しましたが、 ビルド291976 (v39.0.2138.0)で削除されました。

changelog には犯人が含まれています commit

D3dcompiler_43.dllの使用を削除します。
これは、現在ブラックリストに登録されているWindowsXPでのGPUレンダリングにのみ使用されていました。
BUG = 407177
レビューURL: https://codereview.chromium.org/506633002

事実上、ビルド291976にはd3dcompiler_46.dllのみが含まれ、d3dcompiler_43.dllは含まれません。

だから私はクレイジーなアイデアを思いついた:

  1. Chromiumの新しいバージョンをインストールします(WebGLなし)
  2. そのd3dcompiler_46.dllファイルを ビルド29194d3dcompiler_43.dllに置き換えます

    これにより、 ビルド29744 (v40.0.2175.0)までWebGLが有効になります。

    ただし、 ビルド297795 (バージョン40.0.2176.0)以降、再び機能しなくなります。

    changelog を調べましたが、原因のコミットが見つかりませんでした。

  3. そのlibGLESv2.dllファイルを ビルド29744libGLESv2.dllに置き換えます

    これにより、 ビルド30384 (v41.0.2219.0)までWebGLが有効になります。

    ただし、 build 303851 (v41.0.2219.0)以降、再び機能しなくなります。

    この変更ログ を考えると、犯人は このコミット のようです。

  4. そのlibEGL.dllファイルを ビルド30384libEGL.dllに置き換えます

    これにより、 ビルド3370 (v45.0.2446.0)までWebGLが有効になります。

    ただし、 build 337025 (v45.0.2446.0)以降、再び機能しなくなります。

    この変更ログ を調べましたが、原因のコミットが見つかりませんでした。

  5. WebGLは、ビルド337003のchrome.dllchrome.exechrome_child.dllnatives_blob.bin、およびsnapshot_blob.binを置き換えることにより、ビルド337025で再度有効にできます。

    しかし、それは多すぎるようです。私はそれをお勧めしません。

警告:上記の手順のいずれかを実行すると、Chromiumの動作が不安定になる可能性があります。自己責任で使用してください。

上記の手順で、「[X].dll[Y].dllからbuild [N]に置き換える」とは次のことを意味します。

  1. Chromiumのインストールフォルダにある[X].dllファイルを検索します
  2. そのようなファイルがない場合は、手順4に進みます。
  3. それ以外の場合は、ファイルの名前を[X].backup.dllに変更します
  4. リンクされたbuild [N]のポータブル(Zip)バージョンをダウンロードします
  5. ダウンロードしたZipから[Y].dllファイルを抽出します
  6. 抽出したファイルの名前を[X].dllに変更します
  7. そのファイルをChromiumのインストールフォルダに移動します
2
Oriol

d3dcompiler_46.dllおよびd3dcompiler_47.dllは、BlackWingCatの非公式アップデートKB2584577を使用して、XP)で簡単に機能します。

Google this:WindowsXP-KB2584577-v0.4-x86-ENU.exe

また、WineD3Dラッパーを使用してDirect3D9Exをラップし、XPのChrome HWaccelを有効にすることもできます。

0
Svyat