OpenGL和多个GPU - 一般可能性

Pue*_*tis 5 opengl gpu sharing openglcontext

我想知道,是否有可能同时在多个GPU上运行多窗口OpenGL应用程序?更具体地说,假设我创建了一个具有两个窗口的应用程序,每个窗口彼此共享它的GL上下文.现在,如果我将其中一个窗口从显示器1(在GPU 1上运行)移动到显示器2(在GPU 2上运行),这实际上是否有效?单独分享上下文是否可以解决问题?

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

我很感激有关这个主题的任何见解,纯信息,因为我快速谷歌搜索后找不到任何东西.有谁知道可能性?

编辑:顺便说一句,不幸的是我目前没有多台GPU可用的机器,所以我会测试一下.

eil*_*ile 6

简答:是的.

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

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

有一些方法可以通过编程方式控制GPU选择和GPU-GPU复制.更多信息在这里.