I'm trying to do rendering in a second thread. Actually, I already managed to do it. But now, my app is crashing in nvogl.dll with an "unknown software exception" at program exit as soon as I used the second thread for rendering a single time. Additionally I magically "loose" 1ms per frame. It looks like the time is spend when a rendering context is hand over to another thread.
Currently, "Threaded Optimization" is disabled in the driver. If set it to "enable" or "auto", wglMakeCurrent() failes sporadically without reason. But I'm not worried about that, since that Threaded Optimization stuff gains nothing anyway.
This happens on a GF8800GTS (Forceware 175.16). I have tested the same application on an ATI FireGL5600. None of the problems coud be seen there.
Are there any known issues with multithreaded rendering on nVdia cards? Anything I should look for?
Just to clarify, this is how I use the threads:
1. MainThreadA:
create context, create textures, VBO's et...
2. Per Frame:
unbind context with wglMakeCurrent(0,0)
hand over context to ThreadB
3. Thread B:
render scene
unbind context
signal finished frame
4. MainThreadA:
bind context, render additional stuff
call wglSwapBuffers()
Goto 2:
Currently, this might seem like bad usage of multithreaded rendering. But in future, there will be several ThreadB's which will work on different parts of the final image, each on its own GPU. ThreadA will compose the parts together and then present them.
thanks for your time!



