如何在 XP 上的 Chrome 上启用 WebGL?

如何在 XP 上的 Chrome 上启用 WebGL?

我的 GPU 是 NVIDIA GeForce 8400 GS。根据 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 以避免驱动程序错误:349137
    应用解决方法:use_current_program_after_successful_link
  • 某些驱动程序无法在 GPU 进程沙箱中重置 D3D 设备
    应用解决方法:exit_on_context_lost
  • 在 Windows Vista 及更低版本上禁用 Direct3D 11
    应用解决方法:disable_d3d11
  • 在所有平台上第一次使用程序之前清除制服:124764349137
    应用解决方法:clear_uniforms_before_first_program_use
  • 在较旧的 nVidia 驱动程序上禁用 D3D11:349929
    应用解决方法:disable_d3d11
  • 始终重写 vec/mat 构造函数以保持一致:398694
    应用解决方法:scalarize_vec_and_mat_constructor_args
  • Raster 正在使用单线程。
    禁用功能:multiple_raster_threads

我尝试启用chrome://flags/#ignore-gpu-blacklist,但没有任何变化。

我的操作系统是 Windows XP Home SP3。在同一台机器上,我还有 Lubuntu 15.04,只要启用硬件加速,它就可以运行。

有没有办法在 XP 上启用它?

答案1

XP 中已经删除了 GPU 渲染,因此理论上不可能有 WebGL。

WebGL 的工作方式内部版本 291943(v39.0.2138.0),但在内部版本 291976(v39.0.2138.0)。

变更日志包含罪魁祸首犯罪

删除 d3dcompiler_43.dll 的使用。
它仅用于 Windows XP 上的 GPU 渲染,现已被列入黑名单。
错误=407177
评论网址:https://codereview.chromium.org/506633002

实际上,版本 291976 仅包含d3dcompiler_46.dll,但不包含d3dcompiler_43.dll

于是我有了一个疯狂的想法:

  1. 安装新版本的 Chromium(不带 WebGL)
  2. 用以下d3dcompiler_46.dll文件替换d3dcompiler_43.dll内部版本 291943

    这将启用 WebGL,直到内部版本 297440(v40.0.2175.0)。

    然而,它再次停止工作,因为内部版本 297795(版本 40.0.2176.0)。

    我看了看变更日志但找不到罪魁祸首。

  3. 用以下libGLESv2.dll文件替换libGLESv2.dll内部版本 297440

    这将启用 WebGL,直到内部版本 303843(v41.0.2219.0)。

    然而,它再次停止工作,因为内部版本 303851(v41.0.2219.0)。

    鉴于这个变更日志,罪魁祸首似乎是这次提交

  4. 用以下libEGL.dll文件替换libEGL.dll内部版本 303843

    这将启用 WebGL,直到内部版本 337003(v45.0.2446.0)。

    然而,它再次停止工作,因为内部版本 337025(v45.0.2446.0)。

    我看了看这个变更日志但找不到罪魁祸首。

  5. 从版本 337003 开始​​,可以通过替换chrome.dllchrome.exechrome_child.dll和在版本 337025 中再次启用 WebGL 。natives_blob.binsnapshot_blob.bin

    但是,这似乎太过分了。我不建议这样做。

警告:执行上述任何步骤都可能导致 Chromium 行为不可靠。使用时请自担风险。

上述步骤中,“替换[X].dll[Y].dllfrom build [N]”的意思是:

  1. [X].dll在 Chromium 的安装文件夹中搜索文件
  2. 如果没有该文件,则转至步骤4
  3. 否则,将文件重命名为[X].backup.dll
  4. 下载链接的便携版(ZIP)build [N]
  5. [Y].dll从下载的 ZIP 中提取文件
  6. 将解压的文件重命名为[X].dll
  7. 将该文件移动到 Chromium 的安装文件夹中

答案2

使用 BlackWingCat 的非官方更新 KB2584577,d3dcompiler_46.dll 和 d3dcompiler_47.dll 可以轻松在 XP 上运行。

谷歌搜索:WindowsXP-KB2584577-v0.4-x86-ENU.exe

我们还可以使用 WineD3D 包装器来包装 Direct3D9Ex,以便为 XP 启用 Chrome 硬件加速。

相关内容