Hi Robert, I cleaned all my singleton before quitting the application. Now i have the following crash but sometimes it's random. It seems the TextureObjectManager is deleted before the cache is cleared by Registry destructor and produce a crash somewhere. I am a bit confuse now, i continue to track it. Just for info i use the cache of the registry...
#0 0x081290a8 in ScopedLock (this=0xbf8132b4, m...@0x82d2004) at /home/mornifle/dev/osg-trunk-svn/debug/lib/../include/OpenThreads/ScopedLock:31 #1 0xb7f87645 in osg::Texture::TextureObjectSet::orphan (this=0x82d1ff8, to=0x892a078) at /home/mornifle/dev/osg-trunk-svn/src/osg/Texture.cpp:558 #2 0xb7f87723 in osg::Texture::TextureObjectManager::releaseTextureObject (this=0xa594ed90, to=0x892a078) at /home/mornifle/dev/osg-trunk-svn/src/osg/Texture.cpp:736 #3 0xb7f87796 in osg::Texture::releaseTextureObject (contextID=0, to=0x892a078) at /home/mornifle/dev/osg-trunk-svn/src/osg/Texture.cpp:819 #4 0xb7f8780a in osg::Texture::dirtyTextureObject (this=0xb3af02d8) at /home/mornifle/dev/osg-trunk-svn/src/osg/Texture.cpp:1298 #5 0xb7f87b73 in ~Texture (this=0xb3af02d8) at /home/mornifle/dev/osg-trunk-svn/src/osg/Texture.cpp:1186 #6 0xb7f7cc2f in ~Texture2D (this=0xb3af02d8) at /home/mornifle/dev/osg-trunk-svn/src/osg/Texture2D.cpp:52 #7 0x0810f6a2 in osg::Referenced::unref (this=0xb3af02d8) at /home/mornifle/dev/osg-trunk-svn/debug/lib/../include/osg/Referenced:183 #8 0x0813434c in ~ref_ptr (this=0xb3af0994) at /home/mornifle/dev/osg-trunk-svn/debug/lib/../include/osg/ref_ptr:33 #9 0x0813436c in ~pair (this=0xb3af0990) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_pair.h:73 #10 0x0813437f in __gnu_cxx::new_allocator<std::pair<int const, osg::ref_ptr<osg::Texture2D> > >::destroy (this=0xbf81343f, __p=0xb3af0990) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/ext/new_allocator.h:118 #11 0x081343b4 in std::_Rb_tree<int, std::pair<int const, osg::ref_ptr<osg::Texture2D> >, std::_Select1st<std::pair<int const, osg::ref_ptr<osg::Texture2D> > >, std::less<int>, std::allocator<std::pair<int const, osg::ref_ptr<osg::Texture2D> > > >::_M_destroy_node (this=0xb4a0a078, __p=0xb3af0980) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_tree.h:390 #12 0x0813443e in std::_Rb_tree<int, std::pair<int const, osg::ref_ptr<osg::Texture2D> >, std::_Select1st<std::pair<int const, osg::ref_ptr<osg::Texture2D> > >, std::less<int>, std::allocator<std::pair<int const, osg::ref_ptr<osg::Texture2D> > > >::_M_erase (this=0xb4a0a078, __x=0xb3af0980) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_tree.h:943 #13 0x0813441e in std::_Rb_tree<int, std::pair<int const, osg::ref_ptr<osg::Texture2D> >, std::_Select1st<std::pair<int const, osg::ref_ptr<osg::Texture2D> > >, std::less<int>, std::allocator<std::pair<int const, osg::ref_ptr<osg::Texture2D> > > >::_M_erase (this=0xb4a0a078, __x=0xb3af0a40) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_tree.h:941 #14 0x0813441e in std::_Rb_tree<int, std::pair<int const, osg::ref_ptr<osg::Texture2D> >, std::_Select1st<std::pair<int const, osg::ref_ptr<osg::Texture2D> > >, std::less<int>, std::allocator<std::pair<int const, osg::ref_ptr<osg::Texture2D> > > >::_M_erase (this=0xb4a0a078, __x=0xb3af0a20) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_tree.h:941 #15 0x0813441e in std::_Rb_tree<int, std::pair<int const, osg::ref_ptr<osg::Texture2D> >, std::_Select1st<std::pair<int const, osg::ref_ptr<osg::Texture2D> > >, std::less<int>, std::allocator<std::pair<int const, osg::ref_ptr<osg::Texture2D> > > >::_M_erase (this=0xb4a0a078, __x=0xb3af0a60) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_tree.h:941 #16 0x0813441e in std::_Rb_tree<int, std::pair<int const, osg::ref_ptr<osg::Texture2D> >, std::_Select1st<std::pair<int const, osg::ref_ptr<osg::Texture2D> > >, std::less<int>, std::allocator<std::pair<int const, osg::ref_ptr<osg::Texture2D> > > >::_M_erase (this=0xb4a0a078, __x=0xb4a09ea0) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_tree.h:941 #17 0x0813441e in std::_Rb_tree<int, std::pair<int const, osg::ref_ptr<osg::Texture2D> >, std::_Select1st<std::pair<int const, osg::ref_ptr<osg::Texture2D> > >, std::less<int>, std::allocator<std::pair<int const, osg::ref_ptr<osg::Texture2D> > > >::_M_erase (this=0xb4a0a078, __x=0xb4a09e80) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_tree.h:941 #18 0x0813441e in std::_Rb_tree<int, std::pair<int const, osg::ref_ptr<osg::Texture2D> >, std::_Select1st<std::pair<int const, osg::ref_ptr<osg::Texture2D> > >, std::less<int>, std::allocator<std::pair<int const, osg::ref_ptr<osg::Texture2D> > > >::_M_erase (this=0xb4a0a078, __x=0xb4a006b8) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_tree.h:941 #19 0x0813446e in ~_Rb_tree (this=0xb4a0a078) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_tree.h:585 #20 0x081344c1 in ~map (this=0xb4a0a078) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g++-v4/bits/stl_map.h:92 #21 0x08134cff in ~DeckNode (this=0xb4a09ff8) at /home/mornifle/dev/pokme-modelview/src/Deck.cpp:45 #22 0x0810f6a2 in osg::Referenced::unref (this=0xb4a09ff8) at /home/mornifle/dev/osg-trunk-svn/debug/lib/../include/osg/Referenced:183 #23 0x0810f6c0 in ~ref_ptr (this=0xb4a0eed4) at /home/mornifle/dev/osg-trunk-svn/debug/lib/../include/osg/ref_ptr:33 #24 0xb75615b7 in ~pair (this=0xb4a0eed4) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_pair.h:73 #25 0xb75615e0 in ~pair (this=0xb4a0eed0) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_pair.h:73 #26 0xb756164b in __gnu_cxx::new_allocator<std::pair<std::string const, std::pair<osg::ref_ptr<osg::Object>, double> > >::destroy (this=0xbf81364b, __p=0xb4a0eed0) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/ext/new_allocator.h:118 #27 0xb7561690 in std::_Rb_tree<std::string, std::pair<std::string const, std::pair<osg::ref_ptr<osg::Object>, double> >, std::_Select1st<std::pair<std::string const, std::pair<osg::ref_ptr<osg::Object>, double> > >, std::less<std::string>, std::allocator<std::pair<std::string const, std::pair<osg::ref_ptr<osg::Object>, double> > > >::_M_destroy_node (this=0x8239650, __p=0xb4a0eec0) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_tree.h:390 #28 0xb7561726 in std::_Rb_tree<std::string, std::pair<std::string const, std::pair<osg::ref_ptr<osg::Object>, double> >, std::_Select1st<std::pair<std::string const, std::pair<osg::ref_ptr<osg::Object>, double> > >, std::less<std::string>, std::allocator<std::pair<std::string const, std::pair<osg::ref_ptr<osg::Object>, double> > > >::_M_erase (this=0x8239650, __x=0xb4a0eec0) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_tree.h:943 #29 0xb7561765 in std::_Rb_tree<std::string, std::pair<std::string const, std::pair<osg::ref_ptr<osg::Object>, double> >, std::_Select1st<std::pair<std::string const, std::pair<osg::ref_ptr<osg::Object>, double> > >, std::less<std::string>, std::allocator<std::pair<std::string const, std::pair<osg::ref_ptr<osg::Object>, double> > > >::clear (this=0x8239650) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_tree.h:697 #30 0xb75617d9 in std::map<std::string, std::pair<osg::ref_ptr<osg::Object>, double>, std::less<std::string>, std::allocator<std::pair<std::string const, std::pair<osg::ref_ptr<osg::Object>, double> > > >::clear (this=0x8239650) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_map.h:582 #31 0xb754252f in osgDB::Registry::clearObjectCache (this=0x8239488) at /home/mornifle/dev/osg-trunk-svn/src/osgDB/Registry.cpp:2170 #32 0xb754281b in osgDB::Registry::destruct (this=0x8239488) at /home/mornifle/dev/osg-trunk-svn/src/osgDB/Registry.cpp:393 #33 0xb754c678 in ~Registry (this=0x8239488) at /home/mornifle/dev/osg-trunk-svn/src/osgDB/Registry.cpp:372 #34 0x0810f6a2 in osg::Referenced::unref (this=0x8239488) at /home/mornifle/dev/osg-trunk-svn/debug/lib/../include/osg/Referenced:183 #35 0xb7562e86 in ~ref_ptr (this=0xb7599730) at /home/mornifle/dev/osg-trunk-svn/include/osg/ref_ptr:33 #36 0xb6e57ed1 in exit () from /lib/libc.so.6 (gdb) bt #0 0x081290a8 in ScopedLock (this=0xbf8132b4, m...@0x82d2004) at /home/mornifle/dev/osg-trunk-svn/debug/lib/../include/OpenThreads/ScopedLock:31 #1 0xb7f87645 in osg::Texture::TextureObjectSet::orphan (this=0x82d1ff8, to=0x892a078) at /home/mornifle/dev/osg-trunk-svn/src/osg/Texture.cpp:558 #2 0xb7f87723 in osg::Texture::TextureObjectManager::releaseTextureObject (this=0xa594ed90, to=0x892a078) at /home/mornifle/dev/osg-trunk-svn/src/osg/Texture.cpp:736 #3 0xb7f87796 in osg::Texture::releaseTextureObject (contextID=0, to=0x892a078) at /home/mornifle/dev/osg-trunk-svn/src/osg/Texture.cpp:819 #4 0xb7f8780a in osg::Texture::dirtyTextureObject (this=0xb3af02d8) at /home/mornifle/dev/osg-trunk-svn/src/osg/Texture.cpp:1298 #5 0xb7f87b73 in ~Texture (this=0xb3af02d8) at /home/mornifle/dev/osg-trunk-svn/src/osg/Texture.cpp:1186 #6 0xb7f7cc2f in ~Texture2D (this=0xb3af02d8) at /home/mornifle/dev/osg-trunk-svn/src/osg/Texture2D.cpp:52 #7 0x0810f6a2 in osg::Referenced::unref (this=0xb3af02d8) at /home/mornifle/dev/osg-trunk-svn/debug/lib/../include/osg/Referenced:183 #8 0x0813434c in ~ref_ptr (this=0xb3af0994) at /home/mornifle/dev/osg-trunk-svn/debug/lib/../include/osg/ref_ptr:33 #9 0x0813436c in ~pair (this=0xb3af0990) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_pair.h:73 #10 0x0813437f in __gnu_cxx::new_allocator<std::pair<int const, osg::ref_ptr<osg::Texture2D> > >::destroy (this=0xbf81343f, __p=0xb3af0990) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/ext/new_allocator.h:118 #11 0x081343b4 in std::_Rb_tree<int, std::pair<int const, osg::ref_ptr<osg::Texture2D> >, std::_Select1st<std::pair<int const, osg::ref_ptr<osg::Texture2D> > >, std::less<int>, std::allocator<std::pair<int const, osg::ref_ptr<osg::Texture2D> > > >::_M_destroy_node (this=0xb4a0a078, __p=0xb3af0980) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_tree.h:390 #12 0x0813443e in std::_Rb_tree<int, std::pair<int const, osg::ref_ptr<osg::Texture2D> >, std::_Select1st<std::pair<int const, osg::ref_ptr<osg::Texture2D> > >, std::less<int>, std::allocator<std::pair<int const, osg::ref_ptr<osg::Texture2D> > > >::_M_erase (this=0xb4a0a078, __x=0xb3af0980) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_tree.h:943 #13 0x0813441e in std::_Rb_tree<int, std::pair<int const, osg::ref_ptr<osg::Texture2D> >, std::_Select1st<std::pair<int const, osg::ref_ptr<osg::Texture2D> > >, std::less<int>, std::allocator<std::pair<int const, osg::ref_ptr<osg::Texture2D> > > >::_M_erase (this=0xb4a0a078, __x=0xb3af0a40) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_tree.h:941 #14 0x0813441e in std::_Rb_tree<int, std::pair<int const, osg::ref_ptr<osg::Texture2D> >, std::_Select1st<std::pair<int const, osg::ref_ptr<osg::Texture2D> > >, std::less<int>, std::allocator<std::pair<int const, osg::ref_ptr<osg::Texture2D> > > >::_M_erase (this=0xb4a0a078, __x=0xb3af0a20) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_tree.h:941 #15 0x0813441e in std::_Rb_tree<int, std::pair<int const, osg::ref_ptr<osg::Texture2D> >, std::_Select1st<std::pair<int const, osg::ref_ptr<osg::Texture2D> > >, std::less<int>, std::allocator<std::pair<int const, osg::ref_ptr<osg::Texture2D> > > >::_M_erase (this=0xb4a0a078, __x=0xb3af0a60) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_tree.h:941 #16 0x0813441e in std::_Rb_tree<int, std::pair<int const, osg::ref_ptr<osg::Texture2D> >, std::_Select1st<std::pair<int const, osg::ref_ptr<osg::Texture2D> > >, std::less<int>, std::allocator<std::pair<int const, osg::ref_ptr<osg::Texture2D> > > >::_M_erase (this=0xb4a0a078, __x=0xb4a09ea0) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_tree.h:941 #17 0x0813441e in std::_Rb_tree<int, std::pair<int const, osg::ref_ptr<osg::Texture2D> >, std::_Select1st<std::pair<int const, osg::ref_ptr<osg::Texture2D> > >, std::less<int>, std::allocator<std::pair<int const, osg::ref_ptr<osg::Texture2D> > > >::_M_erase (this=0xb4a0a078, __x=0xb4a09e80) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_tree.h:941 #18 0x0813441e in std::_Rb_tree<int, std::pair<int const, osg::ref_ptr<osg::Texture2D> >, std::_Select1st<std::pair<int const, osg::ref_ptr<osg::Texture2D> > >, std::less<int>, std::allocator<std::pair<int const, osg::ref_ptr<osg::Texture2D> > > >::_M_erase (this=0xb4a0a078, __x=0xb4a006b8) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_tree.h:941 #19 0x0813446e in ~_Rb_tree (this=0xb4a0a078) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_tree.h:585 #20 0x081344c1 in ~map (this=0xb4a0a078) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g++-v4/bits/stl_map.h:92 #21 0x08134cff in ~DeckNode (this=0xb4a09ff8) at /home/mornifle/dev/pokme-modelview/src/Deck.cpp:45 #22 0x0810f6a2 in osg::Referenced::unref (this=0xb4a09ff8) at /home/mornifle/dev/osg-trunk-svn/debug/lib/../include/osg/Referenced:183 #23 0x0810f6c0 in ~ref_ptr (this=0xb4a0eed4) at /home/mornifle/dev/osg-trunk-svn/debug/lib/../include/osg/ref_ptr:33 #24 0xb75615b7 in ~pair (this=0xb4a0eed4) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_pair.h:73 #25 0xb75615e0 in ~pair (this=0xb4a0eed0) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_pair.h:73 #26 0xb756164b in __gnu_cxx::new_allocator<std::pair<std::string const, std::pair<osg::ref_ptr<osg::Object>, double> > >::destroy (this=0xbf81364b, __p=0xb4a0eed0) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/ext/new_allocator.h:118 #27 0xb7561690 in std::_Rb_tree<std::string, std::pair<std::string const, std::pair<osg::ref_ptr<osg::Object>, double> >, std::_Select1st<std::pair<std::string const, std::pair<osg::ref_ptr<osg::Object>, double> > >, std::less<std::string>, std::allocator<std::pair<std::string const, std::pair<osg::ref_ptr<osg::Object>, double> > > >::_M_destroy_node (this=0x8239650, __p=0xb4a0eec0) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_tree.h:390 #28 0xb7561726 in std::_Rb_tree<std::string, std::pair<std::string const, std::pair<osg::ref_ptr<osg::Object>, double> >, std::_Select1st<std::pair<std::string const, std::pair<osg::ref_ptr<osg::Object>, double> > >, std::less<std::string>, std::allocator<std::pair<std::string const, std::pair<osg::ref_ptr<osg::Object>, double> > > >::_M_erase (this=0x8239650, __x=0xb4a0eec0) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_tree.h:943 #29 0xb7561765 in std::_Rb_tree<std::string, std::pair<std::string const, std::pair<osg::ref_ptr<osg::Object>, double> >, std::_Select1st<std::pair<std::string const, std::pair<osg::ref_ptr<osg::Object>, double> > >, std::less<std::string>, std::allocator<std::pair<std::string const, std::pair<osg::ref_ptr<osg::Object>, double> > > >::clear (this=0x8239650) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_tree.h:697 #30 0xb75617d9 in std::map<std::string, std::pair<osg::ref_ptr<osg::Object>, double>, std::less<std::string>, std::allocator<std::pair<std::string const, std::pair<osg::ref_ptr<osg::Object>, double> > > >::clear (this=0x8239650) at /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g ++-v4/bits/stl_map.h:582 #31 0xb754252f in osgDB::Registry::clearObjectCache (this=0x8239488) at /home/mornifle/dev/osg-trunk-svn/src/osgDB/Registry.cpp:2170 #32 0xb754281b in osgDB::Registry::destruct (this=0x8239488) at /home/mornifle/dev/osg-trunk-svn/src/osgDB/Registry.cpp:393 #33 0xb754c678 in ~Registry (this=0x8239488) at /home/mornifle/dev/osg-trunk-svn/src/osgDB/Registry.cpp:372 #34 0x0810f6a2 in osg::Referenced::unref (this=0x8239488) at /home/mornifle/dev/osg-trunk-svn/debug/lib/../include/osg/Referenced:183 #35 0xb7562e86 in ~ref_ptr (this=0xb7599730) at /home/mornifle/dev/osg-trunk-svn/include/osg/ref_ptr:33 #36 0xb6e57ed1 in exit () from /lib/libc.so.6 Cheers, Cedric -- +33 659 598 614 Cedric Pinson mailto:[email protected] http://www.plopbyte.net On Thu, 2009-10-08 at 15:22 +0200, Cedric Pinson wrote: > Hi Robert, > > I updated to the svn trunk today, and i can notice a crash when quitting > my application. To be sure it was with the new texture manager i defined > USE_NEW_TEXTURE_POOL to 0 and then to 1. > > I dont have yet found the problem, but i guess it's linked with my > texture manager, i own some static that reference texture. > > The segfault appear when quitting > Program received signal SIGSEGV, Segmentation fault. > #0 0xb6ef7ddf in ?? () from /lib/libc.so.6 > #1 0xb5dddc40 in ?? () from //usr//lib/opengl/nvidia/lib/libGLcore.so.1 > #2 0xb5dddc40 in ?? () from //usr//lib/opengl/nvidia/lib/libGLcore.so.1 > #3 0xb54f2008 in ?? () > #4 0xb54f2008 in ?? () > #5 0xb6193d60 in ?? () from //usr//lib/opengl/nvidia/lib/libGLcore.so.1 > #6 0xb6fd0bcb in ?? () from /lib/libc.so.6 > #7 0xb6fd26e8 in ?? () from /lib/libc.so.6 > #8 0xb6fcf469 in ?? () from /lib/libc.so.6 > #9 0xb6fcf442 in ?? () from /lib/libc.so.6 > #10 0xbfc68254 in ?? () > #11 0xa7200010 in ?? () > #12 0x0000001d in ?? () > #13 0x00000000 in ?? () > > I guess there is something wrong with my texture management and the new > texture pool. > > I continue to dig > > Cheers, > Cedric > > -- > +33 659 598 614 Cedric Pinson mailto:[email protected] > http://www.plopbyte.net > > > On Fri, 2009-10-02 at 22:21 +0100, Robert Osfield wrote: > > Hi All, > > > > I've been pretty quiet and the public list/forum through September, > > keeping my head down developing new functionality for the OSG... and > > the new functionality I'm pleased to announce today is that we now > > have a loverly new back-end implementation for texture objects and > > buffer objects (VertexBufferObject, ElementBufferObjects and > > PixelBufferObjects's) that provides a set of GL objects pools that > > enable recycling of both orphaned GL objects and reuse of GL objects > > that are still attached to the scene graph, but are stale - i.e. > > haven't been rendered in the last frame. > > > > The benefit the GL object pools provide is that we can scale up the > > scene graph in main memory without blowing OpenGL driver and GPU > > memory as we would do without the new pools. This feature also > > reduces the likely-hood of thrashing of OpenGL driver and GPU memory > > so that where we might have previously seen frame drops due to memory > > management we avoid them completely or reduce there impact. The > > memory pools will come in there own once we scale down the GPU memory > > size, such as embedded systems, or on desktop/workstation applications > > where GPU memory can be overflowed due to massive databases being kept > > in main memory. In the later case this issue is more compounded on > > some OS's, such as Vista, that limits the amount of memory that OpenGL > > drivers can allocate, so here it should help make the app more stable > > (avoid the crashes due to out of memory errors) and faster. > > > > So... how to try out the new texture and buffer object pools? First > > up you'll need to update to the latest OpenScenGraph svn/trunk. Next > > you'll need to enable the pools by setting the env vars: (example > > below for bash) > > > > export OSG_TEXTURE_POOL_SIZE=100000000 // size in bytes (100Mb) > > export OSG_BUFFER_OBJECT_POOL_SIZE=200000000 // size in bytes (200Mb) > > > > Then run your app with some big data, such a large paged database, you > > can push the amount of main memory used by enabling the MaxPagedLOD > > feature in the DatabasePager via: > > > > export OSG_MAX_PAGEDLOD=100000 // keep in memory a maximum of > > 100,000 PagedLOD nodes > > > > You can also set these values programmatically via osg::DisplaySettings. > > > > A word of warning though, I have almost completely rewritten the way > > that the backend that drives texture objects and buffer objects, even > > when you don't enable the texture/buffer object pools, the code > > managing the GL objects is still completely different. With major > > changes like this comes the likelihood of regressions. I've been > > doing a range of tests at my end, but it's still far more limited in > > scope to what the community will expose the OSG to, so... there you > > may way see problems that I haven't. The best I can do is endeavor to > > get them fixed as quickly as possible, just let me know if you see > > something odd and I we can work together to spot what the underlying > > problem and squish it. The more testing we can get the quicker we can > > shape the code up to being release quality. > > > > Have fun with it :-) > > Robert. > > _______________________________________________ > > osg-users mailing list > > [email protected] > > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > > > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
signature.asc
Description: This is a digitally signed message part
_______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

