WebGL 中的特权扩展是什么?

What are Privileged Extensions in WebGL?

我最近遇到了一个图形密集型页面,想使用我的 Nvidia 卡(而不是内置的 Intel)来渲染它。在寻找如何做到这一点时,我需要做的一件事就是将 'webgl.enable-privileged-extensions' 的值更改为 'true'

谁能告诉我为什么它在 Firefox 中默认设置为 'false',特权扩展究竟是什么?

你在哪里看到它可能是错误的。特权扩展与启用 NVidia 卡与启用 Intel GPU 无关。

特权扩展是默认情况下被认为不可用的扩展,因为它们可能会泄露信息。它们主要用于测试和调试。所以如果你想用它们来测试或调试,你可以打开它们,否则它们应该关闭。

一个特权扩展是 WEBGL_debug_renderer_info extension. It lets a webpage know what GPU you have. Why is that bad for a webpage to know? Well for one it makes it easier to tell who you are. See the eff's https://panopticlick.eff.org/,它解释了一组小信息如何能够识别您的机器。

另一个原因是它可能有助于人们识别您的收入水平。如果 GPU id 用于 AMD FirePro D500,那么我知道您刚刚在 Mac Pro 上花费了 4000 美元,因为这是唯一具有该 GPU 的机器。我可以定位像 "Hey, I see you're using a 00 machine. Would you like a ___ to go with it?"

这样的广告

Chrome 和 Firefox 最近都决定将该扩展设为无特权(因为您可以在没有标志的情况下使用它们),因为它可以帮助网页了解如何最好地支持您机器的 GPU 限制。

另一个特权扩展是 WEBGL_debug_shaders。 WebGL 重写着色器。这个扩展可以让你看到重写的着色器是什么。它有类似的隐私问题,因为着色器是根据您使用的 GPU 和驱动程序版本重新编写的。

我相信这是仅有的 2 个有特权的扩展程序。如您所见,它们与在 Intel 卡上启用 NVidia 卡无关。