I am experimenting with multi-GPU OpenGL rendering on Windows 7. I use a pair of Geforce (GTX 580) or a pair of AMD (HD 7970) graphics cards in one PC, with two LCD displays (one per graphics card). I disable SLI or Crossfire in order to have access to the two graphics cards.
The initial goal is to have two concurrent OpenGL processes, each one creating its own OpenGL window, one window per graphics card.
The short story is that it works well with Radeon, but not so much with Geforce.
With the Geforce cards, the two processes have their 3D outputs displayed on their respective screen, but we don’t get any performance benefits from the second graphics card.
As a matter of fact, when we analyze with “GPUView” (from Microsoft), we clearly see that the nVidia driver sends all the commands buffers (from both apps) to the same GPU. The second GPU does no 3D rendering at all: it is only used for the final BLIT of the frame buffer (in order to display it). With AMD cards, GPUView shows that both applications send their commands buffers to their respective GPU, as we would expect.
This limitation (from nVidia) is also confirmed by the team at http://www.equalizergraphics.com/.
I know that I can work around this limitation using the WGL_NV_gpu_affinity extension, but this is only available for Quadro cards. My application targets Geforce and Radeon users, so this is not an option.
Is there anyone developing multi-GPU OpenGL application that could shed some light on this? Is AMD really the only option?