Hi,

 

I observe a strange slowdown when I use multi-treaded application with OSG. It seems that is in the SceneView::Draw() function.

 

Example with an osgviewer like application:

            If I have two cameras calling _sh->Draw(*this) simultaneously, first thread takes 11.45 ms, second thread takes 11.47 ms. So, it’s an overall of 11.47 ms.

 

Now, I put a mutex on the draw call:

            The cameras don’t call _sh->Draw(*this) simultaneously, first thread takes 2.51 ms, second thread takes 2.80 ms. It’s an overall of 5.31 ms. That reduce time to half with mutex.

 

If I use more and more cameras (render surfaces), sequential draw is always the fastest. Is it my computer settings? I’m using two Quadro FX 4500, 2 CPU dual core, Windows XP, not stereo. Is it the simultaneous call of glCallList()? I think that when a GPU is processing a display list, if another call is made at the same time with glCallList(), this thread yield or the pipeline of the GPU loses some cycles to process that call. Is there a way to have multiple simultaneous drawing calls working better or I continue to use my mutex?

 

Mathieu.

_______________________________________________
osg-users mailing list
[email protected]
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/

Reply via email to