Mesa (master): glsl: Fix broadcast_index of lower_variable_index_to_cond_assign.

Eric Anholt anholt at kemper.freedesktop.org
Mon Sep 27 23:00:18 UTC 2010


Module: Mesa
Branch: master
Commit: 668cdbe12958247f4a563c362dbf3247de7ccc3f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=668cdbe12958247f4a563c362dbf3247de7ccc3f

Author: Eric Anholt <eric at anholt.net>
Date:   Mon Sep 27 15:46:51 2010 -0700

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

---

 src/glsl/lower_variable_index_to_cond_assign.cpp |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/glsl/lower_variable_index_to_cond_assign.cpp b/src/glsl/lower_variable_index_to_cond_assign.cpp
index 68f30ca..5f0dd73 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);
 	 }
 




More information about the mesa-commit mailing list