summaryrefslogtreecommitdiff
path: root/src/glsl/linker.cpp
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2010-08-05 16:00:46 -0700
committerEric Anholt <eric@anholt.net>2010-08-06 00:42:59 -0700
commit8d61a23b1a1d0d4b21f0fab64f6d863a8ee3d7f1 (patch)
tree99eab30c2a0a4fc426bf3ef39045237656db380a /src/glsl/linker.cpp
parent658e25987fbec3b826f500baa6d4d936b9552b13 (diff)
glsl2: Don't assert in a couple of places when encountering sampler arrays.
Fixes glean shaderAPI.
Diffstat (limited to 'src/glsl/linker.cpp')
-rw-r--r--src/glsl/linker.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp
index 9d6de242f5..e93c2f5554 100644
--- a/src/glsl/linker.cpp
+++ b/src/glsl/linker.cpp
@@ -793,11 +793,13 @@ assign_uniform_locations(struct gl_shader_program *prog)
if ((var == NULL) || (var->mode != ir_var_uniform))
continue;
- if (var->type->is_sampler())
- continue;
-
const unsigned vec4_slots = (var->component_slots() + 3) / 4;
- assert(vec4_slots != 0);
+ if (vec4_slots == 0) {
+ /* If we've got a sampler or an aggregate of them, the size can
+ * end up zero. Don't allocate any space.
+ */
+ continue;
+ }
uniform_node *n = (uniform_node *) hash_table_find(ht, var->name);
if (n == NULL) {