summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Paul <brian.paul@tungstengraphics.com>2008-07-21 14:16:07 -0600
committerBrian Paul <brian.paul@tungstengraphics.com>2008-07-29 17:16:33 -0600
commitbc985b5790bcbf2d19b2e42fee0807b1a3c9bc91 (patch)
treecef082fe1b0e712b0b7b00f54691dbda23faac74
parentffbc66bf614c5a2b9bc3a68a6fa7d027405a55b9 (diff)
mesa: fix some issues in _mesa_validate_program()
-rw-r--r--src/mesa/shader/shader_api.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/mesa/shader/shader_api.c b/src/mesa/shader/shader_api.c
index b77b86c6fa..25c0484feb 100644
--- a/src/mesa/shader/shader_api.c
+++ b/src/mesa/shader/shader_api.c
@@ -1534,15 +1534,19 @@ static void
_mesa_validate_program(GLcontext *ctx, GLuint program)
{
struct gl_shader_program *shProg;
- shProg = _mesa_lookup_shader_program(ctx, program);
+
+ shProg = _mesa_lookup_shader_program_err(ctx, program, "glValidateProgram");
if (!shProg) {
- _mesa_error(ctx, GL_INVALID_VALUE, "glValidateProgram(program)");
return;
}
- /* XXX temporary */
- shProg->Validated = GL_TRUE;
- /* From the GL spec:
+ if (!shProg->LinkStatus) {
+ shProg->Validated = GL_FALSE;
+ return;
+ }
+
+ /* From the GL spec, a program is invalid if any of these are true:
+
any two active samplers in the current program object are of
different types, but refer to the same texture image unit,
@@ -1555,6 +1559,8 @@ _mesa_validate_program(GLcontext *ctx, GLuint program)
processing exceeds the combined limit on the total number of texture
image units allowed.
*/
+
+ shProg->Validated = GL_TRUE;
}