From fa7eccb8c0c590535856a54e3697982af6a630ed Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Tue, 11 Oct 2011 16:55:54 -0700 Subject: [PATCH] mesa: Move the link check from _mesa_get_uniform_location to _mesa_GetUniformLocationARB There are cases where we might want to internally query the location of a uniform in a shader that failed linking. Signed-off-by: Ian Romanick Tested-by: Tom Stellard --- src/mesa/main/uniforms.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/mesa/main/uniforms.c b/src/mesa/main/uniforms.c index 68e44b27244..6403137756a 100644 --- a/src/mesa/main/uniforms.c +++ b/src/mesa/main/uniforms.c @@ -491,11 +491,6 @@ _mesa_get_uniform_location(struct gl_context *ctx, { GLint offset = 0, location = -1; - if (shProg->LinkStatus == GL_FALSE) { - _mesa_error(ctx, GL_INVALID_OPERATION, "glGetUniformfv(program)"); - return -1; - } - /* XXX we should return -1 if the uniform was declared, but not * actually used. */ @@ -1428,6 +1423,17 @@ _mesa_GetUniformLocationARB(GLhandleARB programObj, const GLcharARB *name) if (!shProg) return -1; + /* Page 80 (page 94 of the PDF) of the OpenGL 2.1 spec says: + * + * "If program has not been successfully linked, the error + * INVALID_OPERATION is generated." + */ + if (shProg->LinkStatus == GL_FALSE) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glGetUniformLocation(program not linked)"); + return -1; + } + return _mesa_get_uniform_location(ctx, shProg, name); } -- 2.30.2