glsl: Handle the binding qualifier for arrays of samplers.
authorKenneth Graunke <kenneth@whitecape.org>
Wed, 17 Jul 2013 18:24:11 +0000 (11:24 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 18 Jul 2013 23:57:24 +0000 (16:57 -0700)
commit34e2ccc9f099affa78298203db015b9a17ab6de3
tree2297b437d8ccce258291fca07e3c1678d7020938
parent67038c6ba27ea55d8d65557922bfe758a01101ef
glsl: Handle the binding qualifier for arrays of samplers.

Normally, uniform array variables are initialized by array literals.
That is, val->type->array_elements >= storage->array_elements.

However, samplers are different.  Consider a declaration such as:

   layout(binding = 5) uniform sampler2D[3];

The initializer value is a single integer (5), while the storage has 3
array elements.  The proper behavior here is to increment one for each
element; they should be initialized to 5, 6, and 7.

This patch introduces new code for sampler types which handles both
arrays of samplers and single samplers correctly.

v2: Move into the other function; use binding, not constant_value.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Acked-by: Paul Berry <stereotype441@gmail.com>
src/glsl/link_uniform_initializers.cpp