PDA

View Full Version : glGetError() blocking



spurserh
03-10-2009, 05:01 PM
Hello,

I am developing a renderer which creates a number of threads, each of which uses a separate OpenGL context. With a certain very simple test scene, and just one rendering thread, glGetError() blocks indefinitely. This does not happen the very first time glGetError() is called on the rendering thread, nor does it happen in every situation in which a separate thread is used to render.

The details are too complex to summarize here, but what I am wondering is if anyone has general insight/tips on what might cause this to happen. Could it be a deadlock of some sort in the drivers?

Thank you for your consideration, Sean

EDIT: The forum won't let me delete the post, but I believe I have figured out roughly why this was happening. I think that glGetError() was acting in a manner equivalent to glFlush(), and that a GLU NURBS draw operation was unexpectedly taking a very long time (>10 seconds). When I fiddled with the control points, the problem was resolved. I am still not sure why this operation was taking so long, since the control points were valid and reasonable, but that's another issue.

sammie381
03-14-2009, 03:13 PM
Hello,

I am developing a renderer which creates a number of threads, each of which uses a separate OpenGL context. With a certain very simple test scene, and just one rendering thread, glGetError() blocks indefinitely. This does not happen the very first time glGetError() is called on the rendering thread, nor does it happen in every situation in which a separate thread is used to render.

The details are too complex to summarize here, but what I am wondering is if anyone has general insight/tips on what might cause this to happen. Could it be a deadlock of some sort in the drivers?

Thank you for your consideration, Sean

EDIT: The forum won't let me delete the post, but I believe I have figured out roughly why this was happening. I think that glGetError() was acting in a manner equivalent to glFlush(), and that a GLU NURBS draw operation was unexpectedly taking a very long time (>10 seconds). When I fiddled with the control points, the problem was resolved. I am still not sure why this operation was taking so long, since the control points were valid and reasonable, but that's another issue.



Don't call glGetError() when there is no active rendering context.

So if wglGetCurrentContext() returns NULL, then you're in trouble.