This could apply to a problem I have been having in my own application.
Please post your fix once you have it.

On Oct 17, 2017 5:01 AM, "Anish Thomas" <thomas.an...@gmail.com> wrote:

> Hi Robert,
>
> I can submit a fix then.
> Thanks for the quick reply.
>
> Cheers,
> Anish
>
>
> robertosfield wrote:
> > Hi Anish,
> >
> >
> >
> > I think you are correct, the way to handle concurrrent reading/updates
> of an osg::Image is to take a local copy of the
> osg::Image::getModifedCount() prior to reading from the image and then use
> this value.  This would still have the danger of the image data being
> updated at the same time as it's being read but at least a texture update
> wouldn't be missed.
> >
> >
> > Robert.
> >
> >
> >
> > On 17 October 2017 at 09:38, Anish Thomas < ()> wrote:
> >
> > > Hi,
> > >
> > > While modifying texture-atlases in DBPager threads we noticed an issue
> of thread-synchronization.
> > >
> > > Code like the snippet below (From Texture2D.cpp):
> > >
> > > else if (_image.valid() && getModifiedCount(contextID) !=
> _image->getModifiedCount())
> > > {
> > >             applyTexImage2D_subload(state,GL_TEXTURE_2D,_image.get(),
> > >                                     _textureWidth, _textureHeight,
> _internalFormat, _numMipmapLevels);
> > >
> > >             // update the modified tag to show that it is up to date.
> > >             getModifiedCount(contextID) = _image->getModifiedCount();
> > >
> > > }
> > >
> > > If another thread (like a DBPager thread) modifies the image of a
> texture (in this case a texture-atlas which gets more and more images added
> to it while it is also being applied on geometry), the modified count
> changes made by one or more dirty() calls can get missed.
> > >
> > > If the image got dirtied before the RenderThread tried to apply this
> texture, code-execution enters the if() described above. If the texture
> upload takes too long and the image is dirtied again, the effect of the 2nd
> dirty can be missed when the modified count of the image is put into the
> texture.
> > >
> > > A simple solution would be to use a local variable to store the
> image's modified-count, and apply it to the texture. The overhead of a
> possible redundant texture-upload on the next apply would be down-side. But
> texture-atlases would support multi-threaded updates better.
> > >
> > > Thoughts?
> > >
> > > Thank you!
> > >
> > > Cheers,
> > > Anish
> > >
> > > ------------------
> > > Read this topic online here:
> > > http://forum.openscenegraph.org/viewtopic.php?p=72188#72188 (
> http://forum.openscenegraph.org/viewtopic.php?p=72188#72188)
> > >
> > >
> > >
> > >
> > >
> > > _______________________________________________
> > > osg-submissions mailing list
> > >  ()
> > > http://lists.openscenegraph.org/listinfo.cgi/osg-
> submissions-openscenegraph.org (http://lists.openscenegraph.
> org/listinfo.cgi/osg-submissions-openscenegraph.org)
> > >
> >
> >
> >  ------------------
> > Post generated by Mail2Forum
>
>
> ------------------
> Read this topic online here:
> http://forum.openscenegraph.org/viewtopic.php?p=72191#72191
>
>
>
>
>
> _______________________________________________
> osg-submissions mailing list
> osg-submissions@lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-
> submissions-openscenegraph.org
>
_______________________________________________
osg-submissions mailing list
osg-submissions@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org

Reply via email to