The first case handles uniform variables whose initializers are array literals. Prior to GLSL 4.20's "binding" keyword, samplers don't have initializers at all. With the binding keyword, the "initializer" is a single integer representing the texture unit to use for the first element; consecutive array elements get consecutive texture units.
In either case, array-typed initializers for sampler uniforms do not exist, so this code should never execute. Signed-off-by: Kenneth Graunke <kenn...@whitecape.org> --- src/glsl/link_uniform_initializers.cpp | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/src/glsl/link_uniform_initializers.cpp b/src/glsl/link_uniform_initializers.cpp index 54d9bf1..3d8b181 100644 --- a/src/glsl/link_uniform_initializers.cpp +++ b/src/glsl/link_uniform_initializers.cpp @@ -127,6 +127,7 @@ set_uniform_initializer(void *mem_ctx, gl_shader_program *prog, const unsigned int elements = val->array_elements[0]->type->components(); unsigned int idx = 0; + assert(base_type != GLSL_TYPE_SAMPLER); assert(val->type->length >= storage->array_elements); for (unsigned int i = 0; i < storage->array_elements; i++) { copy_constant_to_storage(& storage->storage[idx], @@ -136,20 +137,6 @@ set_uniform_initializer(void *mem_ctx, gl_shader_program *prog, idx += elements; } - - if (base_type == GLSL_TYPE_SAMPLER) { - for (int sh = 0; sh < MESA_SHADER_TYPES; sh++) { - gl_shader *shader = prog->_LinkedShaders[sh]; - - if (shader && storage->sampler[sh].active) { - for (unsigned i = 0; i < storage->array_elements; i++) { - unsigned index = storage->sampler[sh].index + i; - - shader->SamplerUnits[index] = storage->storage[i].i; - } - } - } - } } else { copy_constant_to_storage(storage->storage, val, -- 1.8.3.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev