Strange behaviour on Quadro cards

Hi all,
I have an Nvidia Quadro 4 900XGL and have encountered considerable drop in rendering performance after employing the following steps…
(1) Enable quad-buffer stereo in OpenGL properties.
(2) Request for stereo (tried with GLUT as well as pure windows using PFD_STEREO in pixel descriptor. In both cases, display mode request were successful.Double buffering was enabled too.
(3) In my program, I render to GL_BACK_LEFT,
GL_FRONT_LEFT etc (Display Stereo) and the performance is great!
(4) I render to GL_BACK and GL_FRONT (Display Mono) and performance drops by more than half!!

In (4) I actually drew my scene once only as oppose to (3) where it is drawn twice.
I also notice that in (4), the whole OpenGL window appears foggy.

Finally , I requested a pixel format without
PFD_STEREO and carry out (4), the performance now beats (3) as expected and the window is no longer foggy.

Has any one encountered the same problem?

Is this a driver problem (my current driver is 40.71)?
My program works normally on ATI FireGL4 and Wildcats.

Thanks
XaVinci

I’m pretty sure I had the same problem with a quadro, I don’t think it’s a driver issue. Though I don’t remember it being foggy.

For mono can you not just do the same as what you do for stereo but draw identical views for left and right. I think that’s what I ended up doing.

Thanks for your solution.
I have tried wat u did before already. It works but I m seeking the proper solution as I can’t afford to draw the scene twice unnecessary as scene complexity varies.

I can’t think of anything other than a driver problem. My code works fine on other graphics cards.

GL_BACK (with a STEREO pfd) will draw into both left and right back buffers, so it will effectively be drawing everything twice anyway.
You could try drawing into GL_BACK_LEFT when in mono mode (clear the GL_BACK_RIGHT buffer at the time you switch to mono). Maybe that will be safer.

I would understand if case (3) was fogy because you have only rendered into the left eye. Depending on the solution you chose to view the stereo image (shutter glasses) the monitor toggles between left and empty right image at monitor Hz.

If you want to switch dynamically between stereo and monoscopic views on the whole window, you could also render the scene once to GL_BACK_LEFT and do a glCopyPixels to GL_BACK_RIGHT => pseudo monoscopic, shutter still on, performance great.

Another solution is to have a second window at the exact same position with monoscopic pixelformat. (I wouldn’t do that.)

knackered, rendering into multiple buffers does not necessarily mean the geometry is sent twice, it’s just setting the same fragments in two buffers (and one depth buffer).

Thanks you guys for enlightening me.

CopyPixels would solve the problem visually i guess but bound to have some performance hit.
The question remains why the slow down occurs on a Quadro card but not on FireGL,
Wildcat and Irix machines. An different hardware implementation?

It may not mean transforming twice, but definitately rasterising twice. Anyway, the point was that he’ll still be writing twice.
Just change the pixel format and recreate the render context!

Thanks Relic for your CopyPixels.
It is working now!

Thanks Knackered for pointing out the extra
drawing that coz the performance drop!