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

Although we don't use SB on geom shaders, the VS copy shader will use it
so we might as well implement MEM_RING support in sb.

Signed-off-by: Dave Airlie <airl...@redhat.com>
---
 src/gallium/drivers/r600/sb/sb_bc_dump.cpp     | 3 +++
 src/gallium/drivers/r600/sb/sb_bc_finalize.cpp | 2 +-
 src/gallium/drivers/r600/sb/sb_bc_parser.cpp   | 6 +++---
 src/gallium/drivers/r600/sb/sb_dump.cpp        | 2 +-
 4 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/gallium/drivers/r600/sb/sb_bc_dump.cpp 
b/src/gallium/drivers/r600/sb/sb_bc_dump.cpp
index f79dff1..1551e6d 100644
--- a/src/gallium/drivers/r600/sb/sb_bc_dump.cpp
+++ b/src/gallium/drivers/r600/sb/sb_bc_dump.cpp
@@ -150,6 +150,9 @@ void bc_dump::dump(cf_node& n) {
                if ((n.bc.op_ptr->flags & CF_RAT) && (n.bc.type & 1)) {
                        s << ", @R" << n.bc.index_gpr << ".xyz";
                }
+               if ((n.bc.op_ptr->flags & CF_MEM) && (n.bc.type & 1)) {
+                       s << ", @R" << n.bc.index_gpr << ".x";
+               }
 
                s << "  ES:" << n.bc.elem_size;
 
diff --git a/src/gallium/drivers/r600/sb/sb_bc_finalize.cpp 
b/src/gallium/drivers/r600/sb/sb_bc_finalize.cpp
index d965483..54717f9 100644
--- a/src/gallium/drivers/r600/sb/sb_bc_finalize.cpp
+++ b/src/gallium/drivers/r600/sb/sb_bc_finalize.cpp
@@ -695,7 +695,7 @@ void bc_finalizer::finalize_cf(cf_node* c) {
                c->bc.rw_gpr = reg >= 0 ? reg : 0;
                c->bc.comp_mask = mask;
 
-               if ((flags & CF_RAT) && (c->bc.type & 1)) {
+               if (((flags & CF_RAT) || (!(flags & CF_STRM))) && (c->bc.type & 
1)) {
 
                        reg = -1;
 
diff --git a/src/gallium/drivers/r600/sb/sb_bc_parser.cpp 
b/src/gallium/drivers/r600/sb/sb_bc_parser.cpp
index 24c4854..7181e27 100644
--- a/src/gallium/drivers/r600/sb/sb_bc_parser.cpp
+++ b/src/gallium/drivers/r600/sb/sb_bc_parser.cpp
@@ -209,7 +209,7 @@ int bc_parser::decode_cf(unsigned &i, bool &eop) {
                if (cf->bc.rw_rel)
                        gpr_reladdr = true;
                assert(!cf->bc.rw_rel);
-       } else if (flags & (CF_STRM | CF_RAT)) {
+       } else if (flags & CF_MEM) {
                if (cf->bc.rw_rel)
                        gpr_reladdr = true;
                assert(!cf->bc.rw_rel);
@@ -683,7 +683,7 @@ int bc_parser::prepare_ir() {
                        } while (1);
 
                        c->bc.end_of_program = eop;
-               } else if (flags & (CF_STRM | CF_RAT)) {
+               } else if (flags & CF_MEM) {
 
                        unsigned burst_count = c->bc.burst_count;
                        unsigned eop = c->bc.end_of_program;
@@ -701,7 +701,7 @@ int bc_parser::prepare_ir() {
                                                                
sh->get_gpr_value(true, c->bc.rw_gpr, s, false);
                                }
 
-                               if ((flags & CF_RAT) && (c->bc.type & 1)) { // 
indexed write
+                               if (((flags & CF_RAT) || (!(flags & CF_STRM))) 
&& (c->bc.type & 1)) { // indexed write
                                        c->src.resize(8);
                                        for(int s = 0; s < 3; ++s) {
                                                c->src[4 + s] =
diff --git a/src/gallium/drivers/r600/sb/sb_dump.cpp 
b/src/gallium/drivers/r600/sb/sb_dump.cpp
index 7e317ab..b2130a4 100644
--- a/src/gallium/drivers/r600/sb/sb_dump.cpp
+++ b/src/gallium/drivers/r600/sb/sb_dump.cpp
@@ -349,7 +349,7 @@ void dump::dump_op(node &n, const char *name) {
                        static const char *exp_type[] = {"PIXEL", "POS  ", 
"PARAM"};
                        sblog << "  " << exp_type[c->bc.type] << " " << 
c->bc.array_base;
                        has_dst = false;
-               } else if (c->bc.op_ptr->flags & CF_STRM) {
+               } else if (c->bc.op_ptr->flags & (CF_MEM)) {
                        static const char *exp_type[] = {"WRITE", "WRITE_IND", 
"WRITE_ACK",
                                        "WRITE_IND_ACK"};
                        sblog << "  " << exp_type[c->bc.type] << " " << 
c->bc.array_base
-- 
1.8.3.1

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

Reply via email to