From: Eric Anholt Date: Mon, 27 Sep 2010 22:46:51 +0000 (-0700) Subject: glsl: Fix broadcast_index of lower_variable_index_to_cond_assign. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=668cdbe12958247f4a563c362dbf3247de7ccc3f;p=mesa.git glsl: Fix broadcast_index of lower_variable_index_to_cond_assign. 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 --- diff --git a/src/glsl/lower_variable_index_to_cond_assign.cpp b/src/glsl/lower_variable_index_to_cond_assign.cpp index 68f30ca0ef8..5f0dd731135 100644 --- a/src/glsl/lower_variable_index_to_cond_assign.cpp +++ b/src/glsl/lower_variable_index_to_cond_assign.cpp @@ -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); }