glsl: Fix broadcast_index of lower_variable_index_to_cond_assign.
authorEric Anholt <eric@anholt.net>
Mon, 27 Sep 2010 22:46:51 +0000 (15:46 -0700)
committerEric Anholt <eric@anholt.net>
Mon, 27 Sep 2010 22:52:56 +0000 (15:52 -0700)
It's trying to get an int smeared across all channels, not trying to
get a 1:1 mapping of a subset of a vector's channels.  This usually
ended up not mattering with ir_to_mesa, since it just smears floats
into every chan of a vec4.

Fixes:
glsl1-temp array with swizzled variable indexing

src/glsl/lower_variable_index_to_cond_assign.cpp

index 68f30ca0ef8c7e63b68c1df981e8a3de64efc99d..5f0dd7311351e0b21482d6f4150f59d29dc70f5e 100644 (file)
@@ -117,7 +117,7 @@ struct switch_generator
            new(this->mem_ctx) ir_dereference_variable(index);
 
          if (comps) {
-           const ir_swizzle_mask m = { 0, 1, 2, 3, comps, false };
+           const ir_swizzle_mask m = { 0, 0, 0, 0, comps, false };
            broadcast_index = new(this->mem_ctx) ir_swizzle(broadcast_index, m);
         }