diff options
-rw-r--r-- | src/mesa/shader/shader_api.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/mesa/shader/shader_api.c b/src/mesa/shader/shader_api.c index e2fedf7fa64..1914adb54ca 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 || |