Hi John,

On 19 January 2012 16:32, John Kelso <ke...@nist.gov> wrote:
> I also tried setting the traits->swapGroupEnabled value to true but nothing
> changed.

swapGroupEnabled is only currently used under GraphicsWindowWin32 so
won't effect linux systems in any way.

> So as far as I can tell we are syncing swaps within a graphics context, but
> not between graphic contexts. At least that's how I interpret what I'm
> seeing.
> This may or may not be relevant, but we use one osgViewer::Viewer object
> and all of the cameras we use are slave cameras of the master camera in the
> viewer. Our graphics loop just calls osgViewer::Viewer::frame().

As long as your run the viewer multithreaded the OSG will use a
barrier so that each graphics thread waits at the end of draw
dispatch, then once all the threads join this barrier then all move on
together and then call swap buffers.  This is done to try and achieve
synchronized swapping, however, it's not a full proof scheme as it
doesn't use any low level driver and hardware synchronization.

Extensions to some OpenGL drivers exist to enable the low level
synchronisation, such as swap groups, swap ready and gen lock.
GraphicsWindowX11 doesn't have support for these extension.  One could
potentially add this into an existing application via a custom
osg::Camera::FinalDrawCallback.  It would be nice to have support for
these extensions in the core though so feel free to pitch in ;-)

osg-users mailing list

Reply via email to