Chrome 未使用 WebGL 软件回退

Chrome WebGL software fallback not being used

最初发布 here

我的印象是 WebGL 应该在 Chrome 几乎任何桌面设备上工作,但在某些情况下它可能会退回到软件渲染(假设你没有通过 failIfMajorPerformanceCaveat=true 时获取上下文)。然而在实践中,对于 Macs 和 Windows 上的大量用户而言,这似乎并非如此(尤其是但不限于某种托管公司 IT 系统中的用户)。

据我所知,在 Chrome 中禁用 WebGL 的所有 hardware/setups 上,可以 运行 使用不同的浏览器(FF,甚至 IE11) ).我相信 IE11 只使用软件,而 FF 对 GPU 的黑名单可能不那么严格,但这并不能解释为什么 Chrome 在硬件不可用时不能切换到软件。事实上,在某些情况下,覆盖 Chrome 中的 GPU 黑名单似乎确实有效(但可能不是一个好主意)。

那么首先,我可以检查一下我对情况的评估是否正确吗?其次,有人可以建议如何强制软件渲染(即标志等)and/or 指出我在讨论这个问题吗?

任何建议将不胜感激 - 即使这个过程相当复杂,它仍然值得了解,因为它可能对我们的客户可行。

更新:

@gman 指出 Chrome 中的 Mac 上没有软件模拟,但这仍然留下了 windows.[=14= 中发生了什么的问题]

更新 2:

(部分回答我自己的问题):似乎(至少在 windows 上的 32 位 Chrome 上)如果你去 chrome://components 并看到 SwiftShader 的版本是 0.0.0,然后只需点击更新按钮即可下载最新的版本,然后嘿嘿......它有效。不过不确定 64 位 Chrome。

更新 3:

正如@Nicloas 所说,Chrome 中的 M59(将在 May/June 2017 年发布)应该在 Windows 和 [=60= 的 Chrome 中解决这个问题],随后 Mac。

引用 swiftshader@googlegroups.com 我自己的回答:

很高兴地通知您,随着 Chrome 即将发布的 M59 版本,我们集成了 SwiftShader 以在 GPU 被列入黑名单的情况下为 WebGL 提供无缝回退支持。

我们之前仅将 SwiftShader 作为单独下载的组件使用,这确实不适用于托管的企业系统,并且需要重新启动浏览器。集成 SwiftShader 只有在开源并大幅减少其二进制大小后才有可能。

您今天可以在 Windows 上使用 Chrome Canary 或 Beta 通道进行测试,并指定 --disable-gpu 启动标志。 Linux 也应该可以工作,但这些库被错误地没有作为测试包的一部分发布,我们希望在下一次更新中以及在它到达稳定频道之前纠正这个问题。我们还没有开始集成 Mac OS X 支持,因为 Chrome 在那里的工作方式有很大不同,但它在我们的雷达上。