On Fri, Jan 3, 2014 at 2:04 PM, Marek Olšák <mar...@gmail.com> wrote: > On Fri, Jan 3, 2014 at 1:27 AM, Maxence Le Doré > <maxence.led...@gmail.com> wrote: >> --- >> src/mesa/main/texobj.c | 52 >> ++++++++++++++++++++++++++++++++++++++++++++++++++ >> src/mesa/main/texobj.h | 3 +++ >> 2 files changed, 55 insertions(+) >> >> diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c >> index bddbc50..66e2fb0 100644 >> --- a/src/mesa/main/texobj.c >> +++ b/src/mesa/main/texobj.c >> @@ -1686,4 +1686,56 @@ _mesa_InvalidateTexImage(GLuint texture, GLint level) >> return; >> } >> >> +/** ARB_multi_bind / OpenGL 4.4 */ >> + >> +void GLAPIENTRY >> +_mesa_BindTextures(GLuint first, GLsizei count, const GLuint *textures) >> +{ >> + GET_CURRENT_CONTEXT(ctx); >> + struct GLuint currentTexUnit = 0; >> + int i = 0; >> + >> + currentTexUnit = ctx->Texture.CurrentUnit; >> + >> + if(first + count > ctx->Const.MaxCombinedTextureImageUnits) { >> + _mesa_error(ctx, GL_INVALID_OPERATION, "glBindTextures(first+count)"); >> + return; >> + } >> + >> + for(i = 0 ; i < count ; i++) { >> + GLuint texture; >> + struct gl_texture_object *texObj; >> + GLenum texTarget; >> + int j = 0; >> + >> + if(textures == NULL) >> + texture = 0; >> + else >> + texture = textures[i]; >> + >> + _mesa_ActiveTexture(GL_TEXTURE0 + first + i); >> + if(texture != 0) { >> + texObj = _mesa_lookup_texture(ctx, texture); >> + if(texObj) { >> + texTarget = texObj->Target; >> + _mesa_BindTexture(texTarget, texture); >> + } >> + else >> + _mesa_error(ctx, GL_INVALID_OPERATION, >> + "glBindTextures(textures[%i])", i); > > This error is set too late. It should be done before changing textures.
Note that you make the same mistake in the other patches too. Also please double-check that none of the _mesa_ functions generate errors. Marek _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev