我想知道,是否可以同时在多个GPU上运行多窗口OpenGL应用程序?更具体地说,假设我创建了一个具有两个窗口的应用程序,每个窗口彼此共享它的GL上下文。现在,如果我将其中一个窗口从显示器1(在GPU 1上运行)移动到显示器2(在GPU 2上运行),这实际上是否有效?单独分享上下文是否可以解决问题?
我的第一个猜测是否定的。如果这真的不那么简单,有没有办法实现这一目标?我还可以想象这取决于两个GPU是否由相同的驱动程序控制(或者更糟糕的是,让机器有ATI和nVidia卡,两者都支持不同的GL版本。)
我很感激有关这个主题的任何见解,纯信息,因为我在快速谷歌搜索后找不到任何东西。有谁知道可能性?
编辑:顺便说一下,遗憾的是我目前还没有配备多个GPU的机器,所以我会测试一下。答案 0 :(得分:6)
简答:是的。
长答案: Windows / Mac OS X:窗口始终由一个GPU更新,并且可能将像素复制到另一个GPU。
Linux:如果Xinerama关闭,则无法在屏幕(GPU)之间移动窗口。如果启用了Xinerama,iirc至少nVidia驱动程序会同时向两个GPU发送GL命令,以便您可以移动它们。
有多种方法可以通过编程方式控制GPU选择和GPU-GPU复制。更多信息here。