mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-28 16:50:10 +01:00
glsl: fix bug in sampler array indexing
Need to add the 'offset' parameter when indexing the parameter array. Before, if we were setting arrays of samplers, we were actually only setting the 0th sampler's value. Because of how progs/glsl/samplers.c is constructed, this wasn't showing up as a failure in the samplers_array output.
This commit is contained in:
parent
bf7e4b10cb
commit
04d170794a
1 changed files with 7 additions and 3 deletions
|
|
@ -1624,7 +1624,6 @@ set_program_uniform(GLcontext *ctx, struct gl_program *program,
|
|||
|
||||
if (param->Type == PROGRAM_SAMPLER) {
|
||||
/* This controls which texture unit which is used by a sampler */
|
||||
GLuint texUnit, sampler;
|
||||
GLint i;
|
||||
|
||||
/* data type for setting samplers must be int */
|
||||
|
|
@ -1639,8 +1638,9 @@ set_program_uniform(GLcontext *ctx, struct gl_program *program,
|
|||
* common thing...
|
||||
*/
|
||||
for (i = 0; i < count; i++) {
|
||||
sampler = (GLuint) program->Parameters->ParameterValues[index + i][0];
|
||||
texUnit = ((GLuint *) values)[i];
|
||||
GLuint sampler =
|
||||
(GLuint) program->Parameters->ParameterValues[index + offset + i][0];
|
||||
GLuint texUnit = ((GLuint *) values)[i];
|
||||
|
||||
/* check that the sampler (tex unit index) is legal */
|
||||
if (texUnit >= ctx->Const.MaxTextureImageUnits) {
|
||||
|
|
@ -1651,6 +1651,10 @@ set_program_uniform(GLcontext *ctx, struct gl_program *program,
|
|||
|
||||
/* This maps a sampler to a texture unit: */
|
||||
if (sampler < MAX_SAMPLERS) {
|
||||
#if 0
|
||||
_mesa_printf("Set program %p sampler %d '%s' to unit %u\n",
|
||||
program, sampler, param->Name, texUnit);
|
||||
#endif
|
||||
program->SamplerUnits[sampler] = texUnit;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue