From fee9bbe4751eb11947c1d739fbf1dd5e352fc433 Mon Sep 17 00:00:00 2001 From: Brian Date: Fri, 2 Feb 2007 18:05:43 -0700 Subject: Only glUniform1i() can be used to set sampler uniforms. Generate error otherwise. --- src/mesa/shader/shader_api.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/mesa/shader/shader_api.c b/src/mesa/shader/shader_api.c index e2fedf7fa6..1914adb54c 100644 --- a/src/mesa/shader/shader_api.c +++ b/src/mesa/shader/shader_api.c @@ -891,8 +891,22 @@ _mesa_uniform(GLcontext *ctx, GLint location, GLsizei count, FLUSH_VERTICES(ctx, _NEW_PROGRAM); + /* + * If we're setting a sampler, we must use glUniformi1()! + */ + if (shProg->Uniforms->Parameters[location].Type == PROGRAM_SAMPLER) { + if (type != GL_INT || count != 1) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glUniform(only glUniform1i can be used " + "to set sampler uniforms)"); + return; + } + } + uniformVal = shProg->Uniforms->ParameterValues[location]; + /* XXX obey 'count' parameter! */ + if (type == GL_INT || type == GL_INT_VEC2 || type == GL_INT_VEC3 || -- cgit v1.2.3