2011-09-24 54 views
4

我想知道,是否可以同时在多个GPU上运行多窗口OpenGL应用程序?更具体地说,我们假设我已经创建了一个应用程序,它具有两个窗口,每个窗口在彼此之间共享GL环境。现在如果我将其中一个窗口从显示器1(在GPU 1上运行)移动到显示器2(在GPU 2上运行),这实际上可行吗?单独分享上下文会有诀窍吗?OpenGL和多GPUs - 一般可能性

我的第一个猜测是否定的。如果这真的不那么简单,有没有办法做到这一点?我还可以想象,这取决于两个GPU是否由同一个驱动程序控制(或者更糟的是,让机器具有ATI以及nVidia卡,两者都支持不同的GL版本)。

我很感谢在这个话题上的任何见解,纯粹是信息性的,因为我在快速的谷歌搜索之后找不到任何东西。有谁知道可能性?

编辑:顺便说一句,不幸的是,我现在没有可用的多个GPU的机器,所以我会测试一下。

回答

6

简答:是的。

Long答案: Windows/Mac OS X:窗口总是由一个GPU更新,并且可能将像素复制到另一个GPU。

Linux:如果Xinerama处于关闭状态,则无法在屏幕(GPU)之间移动窗口。如果Xinerama处于打开状态,iirc至少会将nVidia驱动程序同时向两个GPU发送GL命令,以便您可以移动它们。

有一些方法可以通过编程来控制GPU选择和GPU-GPU拷贝。更多信息here

+1

感谢您的回答!常见问题回答了我的许多问题。而我关于上下文共享的想法实际上似乎是错误的。根据FAQ,上下文无法在多条管道上共享,因此在其他GPU上不可用。 – PuerNoctis

+1

你是对的,除了OS X.如果你在OS X上,我强烈推荐上一次WWDC的Multi-GPU对话。 – eile