ir_to_mesa: Fix constant array handling to return the temp we created.
authorEric Anholt <eric@anholt.net>
Mon, 23 Aug 2010 17:57:54 +0000 (10:57 -0700)
committerEric Anholt <eric@anholt.net>
Mon, 23 Aug 2010 18:03:13 +0000 (11:03 -0700)
We ended up returning CONST[loc] rather than TEMP[loc2].  Things would
*usually* end up working out OK, since the constants often ended up
getting allocated to CONST[loc..loc+columns] with no swizzle.  But for
the case where the contigous temporary copy of the swizzled constant
vec4 args was actually needed, we'd end up reading some other constant
values, possibly including ones not actually allocated.

Fixes: glsl-varying-mat3x2.
src/mesa/program/ir_to_mesa.cpp

index 676f68e5a026e377cd3a9cb3382c6d5226924f1a..17ebdbb220bae9b4f4d7a699614eba949c5b4da2 100644 (file)
@@ -1817,6 +1817,7 @@ ir_to_mesa_visitor::visit(ir_constant *ir)
       }
 
       this->result = mat;
+      return;
    }
 
    src_reg.file = PROGRAM_CONSTANT;