Mesa (master): ir_to_mesa: Fix constant array handling to return the temp we created.

Eric Anholt anholt at kemper.freedesktop.org
Mon Aug 23 18:05:05 UTC 2010


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

Author: Eric Anholt <eric at anholt.net>
Date:   Mon Aug 23 10:57:54 2010 -0700

ir_to_mesa: Fix constant array handling to return the temp we created.

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 |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp
index 676f68e..17ebdbb 100644
--- a/src/mesa/program/ir_to_mesa.cpp
+++ b/src/mesa/program/ir_to_mesa.cpp
@@ -1817,6 +1817,7 @@ ir_to_mesa_visitor::visit(ir_constant *ir)
       }
 
       this->result = mat;
+      return;
    }
 
    src_reg.file = PROGRAM_CONSTANT;




More information about the mesa-commit mailing list