diff options
author | Brian <brian@yutani.localnet.net> | 2007-02-02 18:05:43 -0700 |
---|---|---|
committer | Brian <brian@yutani.localnet.net> | 2007-02-02 18:05:43 -0700 |
commit | fee9bbe4751eb11947c1d739fbf1dd5e352fc433 (patch) | |
tree | 5a79fffacc157f943e912aed50e4e179aff212c7 /src | |
parent | a90e4c3ddfcdf9f0b9a0424a1a6a9d6496c6f218 (diff) |
Only glUniform1i() can be used to set sampler uniforms. Generate error otherwise.
Diffstat (limited to 'src')
-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 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 || |