From: Brian Date: Wed, 11 Apr 2007 15:00:56 +0000 (-0600) Subject: fix invalid error detection problem in _mesa_bind_attrib_location(), bug 10602 X-Git-Tag: mesa-7.8~6171 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9f66025f54a3a9cc33cba56ec7c9f59721ddbec7;p=platform%2Fupstream%2Fmesa.git fix invalid error detection problem in _mesa_bind_attrib_location(), bug 10602 --- diff --git a/src/mesa/shader/shader_api.c b/src/mesa/shader/shader_api.c index 1831d0f..cf42a58 100644 --- a/src/mesa/shader/shader_api.c +++ b/src/mesa/shader/shader_api.c @@ -323,7 +323,13 @@ _mesa_bind_attrib_location(GLcontext *ctx, GLuint program, GLuint index, return; } - oldIndex = _mesa_get_attrib_location(ctx, program, name); + if (shProg->LinkStatus) { + /* get current index/location for the attribute */ + oldIndex = _mesa_get_attrib_location(ctx, program, name); + } + else { + oldIndex = -1; + } /* this will replace the current value if it's already in the list */ i = _mesa_add_attribute(shProg->Attributes, name, size, index); @@ -331,14 +337,12 @@ _mesa_bind_attrib_location(GLcontext *ctx, GLuint program, GLuint index, _mesa_error(ctx, GL_OUT_OF_MEMORY, "glBindAttribLocation"); } - if (shProg->VertexProgram && oldIndex >= 0) { + if (shProg->VertexProgram && oldIndex >= 0 && oldIndex != index) { + /* If the index changed, need to search/replace references to that attribute + * in the vertex program. + */ _slang_remap_attribute(&shProg->VertexProgram->Base, oldIndex, index); } - -#if 0 - printf("===== post BindAttrib:\n"); - _mesa_print_program(&shProg->VertexProgram->Base); -#endif }