Dual GPU control without SLI, Drawig to multiple GPUs (no SLI)

I have two Geforce 7800 GTX graphics cards and two PCI-Express slots (not adjacent) so I cannot connect them in SLI mode with the small SLI connector. Is there another cable connector ?

Without SLI:-

Say GPU1 is sitting on PCI-Ex1 and GPU2 is sitting on PCI-Ex2.

How can I create a Device context DC1 for GPU1 and DC2 for GPU2 separately so that I can draw to them independently. Is is possible on windows ?

I came across OpenVIDIA, but it is developed on Linux using PCI slots and not for PCI-Ex. How different is PCI-Ex from PCI ? Can I still use OpenVIDIA with PCI-Ex slots ?

From a low-level and device-identification level, PCI defines AGP, and PCI-E/X/Express too AFAIK. If they were not PCI compatible, it’d be like releasing a new CPU not IA32 compatible, intended for Windows.

The only thing I can see required, is to create windows on different physical display devices, and then bind RC’s to them. That’s however more Windows magic (and if it’s impossible, according to MS, I suggest you blame MS and make them fix this, as this is an FAQ).

Has anyone tried Multiple Display configrations.

I have a Geforce 7800 GTX to which I had connected my monitor. (PCI-EX slot 2)

I have another Quadro NVS quad head to which I had connected 4 projectors. (PCI slot 1

Installation:-

  1. I installed drivers for 7800 and rebooted the system. Under Properties->Setting I can see 5 display icons (1 Monitor (DVI) + 4 Projectors (VGA)). The monitor and projectors also display their part of the desktop.

Remember I am using the Driver for 7800 and still the Quadro NVS quad head can somehow recognize it.

Questions:-

  1. Will this configuration work at all ?

  2. I tried to create a window (using OpenGL + GLUT) in one of the projectors desktop area and it actually does. Now when try to draw a simple quad, it doesn’t draw anything to the window in the projectors workspace. Is it a problem with the GLUT ?

  3. I had some OpenGL code working perfectly before (Single GPU 7800 + Single Display) I put in the Quadro NVS. I have no clue what the problem is.

If anyone knows about the Multi-GPU + Multi- Display configurations that work well together and the ones that don’t work together, please share your information.

Any answers will be greatly appreciated.

You can try to create window on some monitor and then create GL context on it.

To be sure whats going on, make Qudro NVS monitor as primary display and run GL program. Also, use glGetString(GL_VENDOR) /GL_RENDERER… maybe for some unknown reason, MS generic GL implementation is used…

Download and install Realtech - GLView, and see it’s report.

Few years ago I have Matrox G450 in PCI and GeForce in AGP slot. Both cards are working properly, and I was able to create accelerate GL context on monitor attached to NV card, while Matrox control primary display. I never tried how it’s work with two NV cards.

yooyo

I guess it doesn’t matter if you use graphics cards from different vendors. Atleast you could install drivers with out any clashes.

I am using 7800 (Geforce series drivers) and Quadro NVS (quadro series drivers). When it installs it copies the dlls to System32 and both version of drivers use the same filenames, so when I try to install drivers for the second card they just overwrite the previous ones.

I tried just the 7800 with two outputs and GLUT works just fine no matter where I create the window. I guess GLUT doesn’t work well for multiple graphics cards.

bump

So, given two cards from the same vendor and all that - is it at all possible to have four separately controlled outputs from a single PC? If not, does anyone know if it’s likely to be the case using “7800-based” quadro-cards?

Am I correct in stating that OpenGL only supports quad-buffer “stereo”, and an extension would be necessary for this to work?

cheers,
\hornet

Originally posted by hornet:
[b]bump

So, given two cards from the same vendor and all that - is it at all possible to have four separately controlled outputs from a single PC? If not, does anyone know if it’s likely to be the case using “7800-based” quadro-cards?
[/b]
I haven’t tried it personally yet, but we had a report from user on the OpenSceneGraph mailing list who reported success with running two 6600GT’s under Linux with 4 indepdent outputs.

I would expect it to work with the 78000’s too.

Am I correct in stating that OpenGL only supports quad-buffer “stereo”, and an extension would be necessary for this to work?

cheers,
\hornet[/QB]
You can do various stereo modes with OpenGL beyond quad buffer stereo. You have to do the support yourself, but this isn’t hard. For split screen stereo just open two windows one per gfx card, or two viewports on a single window across both displays in twin view mode.

Robert.

I want to finish the next work int multi-GPU:the primary GPU running some shader program and get the first Image,the other GPU separate running some shader program at the same time,and get the other image,next, the other image be transformed to the primary GPU,and the primary GPU composite the images,get the finished image and displayed in the window. Can i realize this work? Can someone give me some advice or example code?My development environment is:vc6+ogl2+XPsp2. I have two GPU and one monitor.primary GPU is 6600GT,seconed GPU is Quadro FX 540. Thans to reply.

dscky:
the primary GPU running some shader program and get the first Image,the other GPU separate running some shader program at the same time,and get the other image,next, the other image be transformed to the primary GPU,and the primary GPU composite the images
Do you need multisampling (or supersampling)? Do you need 60Hz (16.6ms/frame) no matter what? Are tearing and double-/triple-vision artifacts acceptable? Do you mind seeing the channel boundaries? What spatially-subdivided resolution do you need?

The answers to the above will limit your technical approaches. Benchmark them to see what that means for how much time you have left to draw the base frame. Toss out the ones that don’t give you enough time. You may find you need some hardware.