OSDN Git Service

mesa: fix glUniform error checking for samplers
authorBrian <brian.paul@tungstengraphics.com>
Tue, 22 Jul 2008 02:42:05 +0000 (20:42 -0600)
committerBrian <brian.paul@tungstengraphics.com>
Tue, 22 Jul 2008 02:42:05 +0000 (20:42 -0600)
src/mesa/shader/shader_api.c

index f390e3c..99bcc0a 100644 (file)
@@ -1209,6 +1209,27 @@ update_textures_used(struct gl_program *prog)
 }
 
 
+static GLboolean
+is_sampler_type(GLenum type)
+{
+   switch (type) {
+   case GL_SAMPLER_1D:
+   case GL_SAMPLER_2D:
+   case GL_SAMPLER_3D:
+   case GL_SAMPLER_CUBE:
+   case GL_SAMPLER_1D_SHADOW:
+   case GL_SAMPLER_2D_SHADOW:
+   case GL_SAMPLER_2D_RECT_ARB:
+   case GL_SAMPLER_2D_RECT_SHADOW_ARB:
+   case GL_SAMPLER_1D_ARRAY_EXT:
+   case GL_SAMPLER_2D_ARRAY_EXT:
+      return GL_TRUE;
+   default:
+      return GL_FALSE;
+   }
+}
+
+
 /**
  * Check if the type given by userType is allowed to set a uniform of the
  * target type.  Generally, equivalence is required, but setting Boolean
@@ -1235,6 +1256,9 @@ compatible_types(GLenum userType, GLenum targetType)
                                       userType == GL_INT_VEC4))
       return GL_TRUE;
 
+   if (is_sampler_type(targetType) && userType == GL_INT)
+      return GL_TRUE;
+
    return GL_FALSE;
 }