2

您好 Stack Overflow 用户!

我一直在到处寻找关于我的问题的很少(实际上没有)。我努力不问已经问过的问题,但似乎我是第一个遇到这个问题的人。

我已经在 Firefox 上安装了 WebCL 扩展。(我在版本 31、32 和 33 极光上试过)

我还在 Chrome 和 Firefox 上启用了 WebGL。

我已经编写了基本的 OpenGL 程序,可以在我的本地机器上渲染盒子和东西。我已经成功编译、链接并运行了一个示例 OpenCL 程序,该程序使用 GPU 在缓冲区中生成字符串“Hello world”并将其打印到我的本地机器上。

我什至能够在 Chrome 和 Firefox 中运行 WebGL 示例。我还可以运行不需要 WebGL 的 WebCL 示例。

现在只是事先澄清一下,我只关心 Firefox。我的 Chrome 浏览器目前没有 WebCL 功能,而 Firefox 使用 WebCL 设置起来要容易得多。我只是提到 Chrome 来暗示 WebGL 在我的机器上的多个浏览器上确实可以按预期工作。

问题是,奇怪的是,如果我在 WebGL 之前运行 WebCL 示例,WebGL 会认为在 Firefox 重新启动之前没有图形驱动程序。

同样,如果我在 WebCL 之前运行 WebGL 示例,WebCL 将无法在我的机器上找到 OpenCL 驱动程序,直到重新启动 Firefox。

我只在 Firefox 中安装了 WebCL 扩展,没有别的。当使用任何这些服务时,终端不会抱怨。

目前正在运行

Distro: Arch Linux x86_64
Kernel version: Linux 3.16.1-1-ARCH
GPU: AMD Radeon HD 7850

如果有人对此问题有任何经验,我将非常感谢您的帮助。如果我以某种方式错过了有关此问题的 Stack Overflow 问题,我将非常感谢重定向。

4

2 回答 2

1

看看(Windows + Firefox) http://www.ibiblio.org/e-notes/webcl/webcl.htm 可能你需要 Linux 的 WebCL KHR_gl_sharing 扩展?

于 2014-09-25T03:42:17.483 回答
1

我同时使用了 WebGL 和 WebCL,尽管是在 Windows 上,所以总的来说这绝对是可能的。这听起来像是您的特定平台或系统的问题。很抱歉没有完全有帮助,但至少我可以证明它在某个地方有效。

至于KHR_gl_sharing,就是在WebGL和WebCL都工作的时候共享一个内存缓冲区。例如,假设您使用 WebCL 修改您希望 WebGL 绘制的纹理。与其通过 WebCL 将来自 GPU 的副本排队到 JavaScript,只是为了将其直接复制回 GPU 以用于 WebGL,您只需告诉 WebCL 在 WebGL 缓冲区上进行操作即可。您的 PCIe 总线不会颠簸。

这对你的问题没有帮助——它假设 WebGL 和 WebCL 都在运行。此外,Mozilla(Firefox 的开发者)不允许扩展访问 WebGL 缓冲区,因此诺基亚的 WebCL 插件无论如何也无法执行 KHR_gl_sharing。这是一个原生集成 WebCL 的浏览器规范,不幸的是,目前没有供应商对此感兴趣(主要是由于开发人员没有采用 OpenCL)。不过,他们肯定想要 GPU 计算,所以我们将看看他们会选择什么。WebCL 2.0?2.1/3.0/2.0 + ARB 扩展中的 WebGL 计算着色器?或者,如果有足够的开发人员压力,他们可能会恢复他们的决定并支持 WebCL?谁知道!

希望这可以帮助!

于 2015-03-23T04:47:41.993 回答