Pekka Paalanen <[email protected]> writes: > On Wed, 18 Nov 2015 09:57:02 -0800 > Eric Anholt <[email protected]> wrote: > >> Keith Packard <[email protected]> writes: >> >> > Eric Anholt <[email protected]> writes: >> > >> >> I think it's a safe enough assumption that we're not generating non-OOM >> >> errors. And, now that we're logging errors, we should get reports of >> >> them sooner than we used to. >> > >> > Would it be sensible to wrap the glGetError call like this? >> > >> > GLenum >> > glamor_check_gl_oom() { >> > GLenum last_oom = GL_NO_ERROR; >> > GLenum error; >> > >> > while ((error = glGetError()) != GL_NO_ERROR) { >> > if (error == GL_OUT_OF_MEMORY) >> > last_oom = error; >> > } >> > return last_oom; >> > } >> > >> > I admit I haven't looked at the Mesa glGetError() implementation, so I >> > don't know if there's a queue of errors, or just a bitfield. >> >> "When an error is detected, a flag is set and the code is >> recorded. Further errors, if they occur, do not affect this recorded >> code. When GetError is called, the code is returned and the flag is >> cleared, so that a further error will again record its code." > > GL ES 2.0 spec explicitly recommends to call it in a loop: > https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetError.xml > > and GL ES 3.2: > https://www.khronos.org/opengles/sdk/docs/man32/html/glGetError.xhtml > > and OpenGL 4.5 also: > https://www.opengl.org/sdk/docs/man/html/glGetError.xhtml > > My vague recollections are from OpenGL 2.1 era and already then you > called it in a loop until it cleared to be sure.
I remember writing the loop in other code, but the Mesa implementation only stores a single error. I still stand by "If we've got other GL errors happening before this point, we're already totally screwed, and you should go figure out where they're coming from"
signature.asc
Description: PGP signature
_______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
