From: Dave Airlie <airl...@redhat.com>

When we schedule an instructions with undefined value, we
eventually will use 0, which is a constant, however sb wasn't
taking this into account and creating ops with illegal scalar
swizzles.

this replaces my fix for op3 in t slots.

Signed-off-by: Dave Airlie <airl...@redhat.com>
---
 src/gallium/drivers/r600/sb/sb_sched.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/r600/sb/sb_sched.cpp 
b/src/gallium/drivers/r600/sb/sb_sched.cpp
index 4fbdc4f..63e7464 100644
--- a/src/gallium/drivers/r600/sb/sb_sched.cpp
+++ b/src/gallium/drivers/r600/sb/sb_sched.cpp
@@ -266,7 +266,7 @@ bool rp_gpr_tracker::try_reserve(alu_node* n) {
 
        for (i = 0; i < nsrc; ++i) {
                value *v = n->src[i];
-               if (v->is_readonly()) {
+               if (v->is_readonly() || v->is_undef()) {
                        const_count++;
                        if (trans && const_count == 3)
                                break;
@@ -295,7 +295,7 @@ bool rp_gpr_tracker::try_reserve(alu_node* n) {
        if (need_unreserve && i--) {
                do {
                        value *v = n->src[i];
-                       if (!v->is_readonly()) {
+                       if (!v->is_readonly() && !v->is_undef()) {
                        if (i == 1 && opt)
                                continue;
                        unreserve(bs_cycle(trans, bs, i), n->bc.src[i].sel,
-- 
2.1.0

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to