[osg-users] [3rdparty] osgCuda: Using CUDA in osg - Problem with Threading

Mick mick.svt at googlemail.com
Thu Mar 12 04:34:42 PDT 2009


Hi Robert.


Robert Osfield wrote:
> 
> I do hope OpenCL fairs a bit better in this respect.
> 


By the way: as I already mentioned in the first post the osgCuda ist based on a kit which we
call osgPipe. In the near future it should not be too difficult to add OpenCL with the help of the
community.


Robert Osfield wrote:
> 
> I'm curious, are you able to mix and match the Driver and Runtime API's?
> 


No - it is not possible to mix the APIs. 


Robert Osfield wrote:
> 
> Do you want to dive in a make changes to your local
> OpenSceneGraph/GraphicsThread classes get it working robustly for
> osgCuda and then post me your changes.
> 


Our approach using osg::Operation is quite robust. So far we did not recognize any drawbacks or
a lack of stability. We evaluated different approaches to give the GraphicsThread the chance to clean
up its resources.
The easiest and simplest way is to call OperationThread::_operationQueue->releaseAllOperations()
right before the thread stops. It is just the one new line in GraphicsThread::run() - please see the code below
(in GraphicsThread.cpp):



Code:
void GraphicsThread::run()
{
    // make the graphics context current.
    GraphicsContext* graphicsContext = dynamic_cast<GraphicsContext*>(_parent.get());
    if (graphicsContext)
    {       
        graphicsContext->makeCurrent();
       
        graphicsContext->getState()->initializeExtensionProcs();
    }

    OperationThread::run();

    OperationThread::_operationQueue->releaseAllOperations();

    if (graphicsContext)
    {   
        graphicsContext->releaseContext();
    }

} 



This works fine without touching anything else of the core code. osgCuda takes care of adding a proper
osg::Operation to the operation-queue. Its operation then releases the CUDA resources in its release-method.
That's it.

osgCuda is already in a good shape and needs to be tested by the community but there is some documentation work left.


Best regards,
Mick

-- 
SVT Group

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=8334#8334








More information about the osg-users mailing list