PDA

View Full Version : Strange GL_FRAMEBUFFER_UNSUPPORTED error



kitfox
06-05-2011, 08:07 PM
I have some code that works well when I first boot my Win 7 machine, but which stops working after my machine has been running for a while (usually more than a day).

I have a very simple FBO with an RGBA color texture and a RenderBuffer depth texture attached. If I attempt to run this after my machine has been up for a while, I get an GL_FRAMEBUFFER_UNSUPPORTED error. If I then reboot my machine, the same code works fine. I also get the same error if I run other programs I've written which use FBOs.

Does this have something to do with Windows sleep mode? Or maybe Firefox or Flash allocating too much from my graphics card? (Sometimes killing Firefox will solve the problem). If anyone has any insights, or maybe a way to tell my graphics card to reset itself without having to reboot, please let me know.

BionicBytes
06-06-2011, 02:11 AM
Do you have a dedicated GFX card or an integrated one (shared memory)?
Intel / AMD/ nVidia ?


RenderBuffer depth texture attached
You can have a depth renderbuffer attached, or a depth texture attached but not as you have stated.
Are you mixing render buffers with textures for the FBO, or are all buffers attached as textures?

kitfox
06-06-2011, 09:15 AM
I have an NVidia Quadro FX 570. I'm using a RenderBuffer depth render buffer in this particular test (not a texture - I was just writing sloppily above).

I've updated to the latest drivers and using OpenGL 3.3.0. Previously I was using the same hardware with Win Vista, OpenGL 3.0.0 and older drivers and did not encounter this problem (or at least, I don't remember having it).

l_belev
06-08-2011, 08:05 AM
I too have seen GL_FRAMEBUFFER_UNSUPPORTED given by nvidia drivers without any thinkable reason. I managed to find out one of the possible causes for this - if the window on which you have a current gl context get destroyed BEFORE you call wglMakeCurrent(NULL, NULL) to unbind the context from the window, that context becomes corrupted in very strange way - you can wglMakeCurrent it with another window successfully, also you can call many gl functions in it successfully, but any framebuffer operation (e.g. draw commands) from now on will fail with GL_FRAMEBUFFER_UNSUPPORTED. There seems to be no recovery from this - you will have to destroy the context and create new one.