From fa6299cb31b62ff2418138cbb789b900d19a0bca Mon Sep 17 00:00:00 2001
From: Brian Paul <brianp@vmware.com>
Date: Tue, 25 Aug 2009 17:36:28 -0600
Subject: progs/util: added ValidateShaderProgram() to shaderutil.c

---
 progs/util/shaderutil.c | 20 ++++++++++++++++++++
 progs/util/shaderutil.h |  3 +++
 2 files changed, 23 insertions(+)

(limited to 'progs/util')

diff --git a/progs/util/shaderutil.c b/progs/util/shaderutil.c
index c58c249..4db9500 100644
--- a/progs/util/shaderutil.c
+++ b/progs/util/shaderutil.c
@@ -140,6 +140,25 @@ LinkShaders(GLuint vertShader, GLuint fragShader)
 }
 
 
+GLboolean
+ValidateShaderProgram(GLuint program)
+{
+   GLint stat;
+   glValidateProgramARB(program);
+   glGetProgramiv(program, GL_VALIDATE_STATUS, &stat);
+
+   if (!stat) {
+      GLchar log[1000];
+      GLsizei len;
+      glGetProgramInfoLog(program, 1000, &len, log);
+      fprintf(stderr, "Program validation error:\n%s\n", log);
+      return 0;
+   }
+
+   return (GLboolean) stat;
+}
+
+
 GLdouble
 GetShaderCompileTime(void)
 {
@@ -170,6 +189,7 @@ SetUniformValues(GLuint program, struct uniform_info uniforms[])
       case GL_SAMPLER_3D:
       case GL_SAMPLER_CUBE:
       case GL_SAMPLER_2D_RECT_ARB:
+         assert(uniforms[i].value[0] >= 0.0F);
          glUniform1i(uniforms[i].location,
                      (GLint) uniforms[i].value[0]);
          break;
diff --git a/progs/util/shaderutil.h b/progs/util/shaderutil.h
index 91c0d40..98c7181 100644
--- a/progs/util/shaderutil.h
+++ b/progs/util/shaderutil.h
@@ -36,6 +36,9 @@ CompileShaderFile(GLenum shaderType, const char *filename);
 extern GLuint
 LinkShaders(GLuint vertShader, GLuint fragShader);
 
+extern GLboolean
+ValidateShaderProgram(GLuint program);
+
 extern GLdouble
 GetShaderCompileTime(void);
 
-- 
cgit v1.1