Hi Guys,

I've now got an osgmemorytest example checked into svn/trunk, it
currently supports allocating windows, pbuffers and textures/fbo for
each of the windows/pbuffers created.   I get some wierd results...

The follow test run:

   osgmemorytest --window --fbo 1024 1024 -g 150

Succeeds.  While using a smaller fbo it fails at the 145'th fbo:

    osgmemorytest --window --fbo 512 512 -g 150

With the command line output:

iteration 0
Got an X11ErrorHandling call display=0x653c50 event=0x7fff31e452c0
BadAlloc (insufficient resources for operation)
Major opcode: 128
Minor opcode: 27
Error code: 11
Request serial: 1071
Current serial: 1072
  ResourceID: 27262979
Got an X11ErrorHandling call display=0x653c50 event=0x7fff31e452c0
BadWindow (invalid Window parameter)
Major opcode: 145
Minor opcode: 4
Error code: 3
Request serial: 1072
Current serial: 1072
  ResourceID: 27262979
Warning: detected OpenGL error 'out of memory' after applying
attribute FrameBufferObject 0x6513c0

Exception caught, contexts completed = 0, gl objects successfully
applied =145, error = OpenGL error

So I get an out of memory error when I use smaller FBO's. I've tried
smaller sizes like 128x128 and also get the exactly same error.  When
I run multiple contexts I get the error when the exactly the same
total number of small FBO's are allocated.  By using -c 2 to set the
number of contexts to allocate to 2, and -g 100 to limit the number of
GL objects (FBO's in this instance) to 100 per context I get the
result:

osgmemorytest --window --fbo 512 512 -g 100 -c 2
iteration 0
iteration 1
Got an X11ErrorHandling call display=0x990bd0 event=0x7fff3824f6b0
BadAlloc (insufficient resources for operation)
Major opcode: 128
Minor opcode: 27
Error code: 11
Request serial: 363
Current serial: 364
  ResourceID: 54525955
Got an X11ErrorHandling call display=0x990bd0 event=0x7fff3824f6b0
BadWindow (invalid Window parameter)
Major opcode: 145
Minor opcode: 4
Error code: 3
Request serial: 364
Current serial: 364
  ResourceID: 54525955
Warning: detected OpenGL error 'out of memory' after applying
attribute FrameBufferObject 0x625180

Exception caught, contexts completed = 1, gl objects successfully
applied =145, error = OpenGL error


The lines iteration 0 and iteration 1, show that the first context was
created with all 100 FBO's just fine. Even stranger when I up the fbo
size to 1024x1024 it's able to allocate 156 FBO's, and when higher
still it gets even further to the point of exhausting all memory on
the machine and grinding it to nearly to a halt due to pushing swap
space too hard.

All these tests are being run single threaded on my Kubuntu 7.10,
Geforce 8800GTS 640Mb, 4GB machine. From glxinfo: OpenGL version
string: 2.1.1 NVIDIA 100.14.19.

So what does this all point to?  My best guess is that the driver is
multi-threaded and if we allocate smaller FBO's they get created more
quickly and hit a threading issue in the driver.  It's pretty clearly
a driver bug.  I'm currently compiling on one of my other machines
with Kubuntu 8.10 installed.

Robert.
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to