Hi,

Many thanks for your speedy reply.

We were considering trying mosaic mode if we couldn't come up with something
that would fix the problem with our current display configuration.

Switching to mosaic mode will require a good bit of code rewrite, but if
that's the way to go I guess it's worth it in the long run.

I'll look into WGL_NV_swap_group extension too.

Any other ideas from the group?

Thanks,

John

On Thu, 7 Oct 2010, Wojciech Lewandowski wrote:

Hi John,

This is odd but it sounds bit like swap buffers of the windows  are somehow
waiting for each other. I believe that WGL_NV_swap_group extension is not
used by OSG. This extension could possible help you there.

But I could be wrong on above. It is not really my main point I wanted to
mention. Instead I wanted to suggest you check SLI mosaic mode. We have done
some experiments on 4 channels on Linux / Nvidia QuadroPlex D2 in the past.
At first we tried to go the same path as you describe. But later we have
read somewhere that fastest method is to use one window filing whole desktop
and split this window into 4 screen quarter slave views.  Each slave view
could be positioned so that it covers one monitor output. Such 4 monitor
setup is possible with QP D2 drivers in SLI mosaic mode.

Using producer config files one may easily create a .cfg that could be
passed from command line to osgViewer and set 4 channel slaves on single
window. Best thing with using one window is that all four views use the same
context so GL resources are shared and all four are swaped at once with
single SwapBuffer call.

In our project we ended up with 4 channel rendering using SLI mosaic and we
were pleasently surprised how fast it was performing in comparison to
separate gl contexts on 4 windows. You may check SLI mosaic if you haven't
done this before....

Hope this helps,
Wojtek Lewandowski
--------------------------------------------------
From: "John Kelso" <ke...@nist.gov>
Sent: Thursday, October 07, 2010 9:35 PM
To: <osg-users@lists.openscenegraph.org>
Subject: [osg-users] OSG seems to have a problem scaling to multiple windows
on multiple graphics cards

Hi all,

Our immersive system is a single host computer with 8 cores and 4 graphics
cards running Linux. (1)  We are using OSG 2.8.3.

We are having a heck of a hard time getting OSG to take advantage of
our multiple graphics cards.  Help!

Here's what we did:

If we load a fairly large model into our test program we can get a frame
rate of about 150 FPS when displaying in a single window. (2) We are
running single-threaded, and assign to a specific core.

When we background this and run a second copy of the program to another
graphics card and core then both programs run at 150 FPS.  Same thing for
running three and four copies at once.

That is, four processes using four graphics cards on four cores run just
as
fast as a single process.  All four cores are at near 100% CPU utilization
according to top.  So far, so good.

Now we modify the program to load the model and create multiple windows on
multiple cards.  There's one window per card and each uses a different
core. (3)

The threading model is "CullThreadPerCameraDrawThreadPerContext", the
default chosen by OSG.  The environment variable
OSG_SERIALIZE_DRAW_DISPATCH
is not set, so it defaults to ON, which we think means draw in serial.

If we draw to four windows on four different cards we get about 36 FPS.
There are four different cores being used, and each has about 25% of the
CPU.  This probably this makes sense as the draws are in serial.  150
FPS/4
is about 36 FPS.  As expected, we get nearly identical results if we
create
four windows on a single card using four different cores.

If we set OSG_SERIALIZE_DRAW_DISPATCH=OFF we hope to see better
performance,
but with four windows on four graphics cards we only get 16 FPS!  There
are
four different cores bring used, one at about 82%, and the other three at
75%, but what are they doing?  Again, we get nearly identical results if
using four windows on a single card.

So....

How can we get OSG to draw to four windows on four cards in one process as
fast as running four separate processes?

Any pointers or suggestions are welcome.

Thanks,

John


1 - Our immersive system consists of 3 projectors and a console each
driven
    by an Nvidia FX5800 graphics card all genlocked for 3D stereo
    display. The four graphics cards are in two QuardoPlex Model D2 units
    connected to the host.  The host computer is an 8 core Dell Precision
    T5400 running 64 bit Linux (CentOS 5.5). We are using Nvidia driver
    version 195.36.24

2 - the program is attached- it uses only OSG.  We run our tests with
    _GL_SYNC_TO_VBLANK=0 to get the maximum frame rate.

3 - one graphics context per window and one camera per window



_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to