[osg-users] Invalid operation on immutable texture
OpenSceneGraph Users
osg-users at lists.openscenegraph.org
Wed Mar 25 04:33:47 PDT 2020
Hi Daniel,
It should be as simple as setting up a texture, using it to draw something,
and then setting up a different texture to use instead. As long as the
first one goes out of scope properly, it should end up in the orphaned
pool, and then will eventually get reused. You might have to replace the
texture multiple times before new ones get taken from the pool, though.
The following is probably more relevant for Robert:
This also seems to be the cause of an issue OpenMW's been tracking for a
while: https://gitlab.com/OpenMW/openmw/issues/4773. We have stack traces
and APITrace traces there if that helps. We'd got as far as identifying the
commit responsible, but hadn't made the link between recycling things from
the orphaned pool and immutable storage (although I know I'd looked at the
orphaned pool already, so I guess it was before I'd done anything with
immutable storage or I'd have made the connection). I've brought it up here
in the past, but Robert didn't want to open an issue upstream until we were
sure OpenMW wasn't doing anything dumb. I'm glad someone else has appeared
who's done the hard part of tracking the problem down.
Cheers,
Chris
On Wednesday, 25 March 2020 09:17:16 UTC, OpenSceneGraph Users wrote:
>
> Hi Robert,
>
> > From your description it does sounds like reusing of the texture
> > objects should be forbidden.
>
> I think it might be fine to reuse the texture objects, because
> 'Texture::generateAndAssignTextureObject' takes all the parameters
> needed by 'glTexStorage2D', so the returned texture object should
> already have the right storage. What currently is missing, is a flag on
> the texture object, if 'glTexStorage2D' has already been called for it.
>
> > Could you create an example that reproduces the issue? We can then
> > use these as testbed for any fixes we come up with.
>
> I don't quite know how I should trigger this case in an example. I've
> suspected that if a Texture2D gets deleted, then somehow its texture
> object gets added to 'TextureObjectSet::_orphanedTextureObjects'. But
> I can't find this in the code. I'm only seeing additions to
> '_orphanedTextureObjects' in 'TextureObjectSet::deleteAllTextureObjects'
> and 'TextureObjectSet::handlePendingOrphandedTextureObjects'.
>
> Greetings,
> Daniel
> _______________________________________________
> osg-users mailing list
> osg-... at lists.openscenegraph.org <javascript:>
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
--
You received this message because you are subscribed to the Google Groups "OpenSceneGraph Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to osg-users+unsubscribe at googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/osg-users/132a649b-b316-43ce-afec-e2cd8da7db45%40googlegroups.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20200325/098f98b9/attachment.html>
More information about the osg-users
mailing list