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

Author: Rob Clark <robcl...@freedesktop.org>
Date:   Mon May 23 15:53:23 2016 -0400

freedreno/ir3: disable cp for indirect src's

The variable-indexing tests always had a few random fails, which I
usually couldn't reproduce when running tests manually.  Somehow
recently this got a lot worse.  I ported a couple of the shaders to
GLES to see what blob does, and it also seems to be avoiding to cp
indirect srcs.  So I guess indirect w/ instructions other than cat1
(mov) are not totally reliable.  Let's just switch that off until
this is better understood.

Signed-off-by: Rob Clark <robcl...@freedesktop.org>

---

 src/gallium/drivers/freedreno/ir3/ir3_cp.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/gallium/drivers/freedreno/ir3/ir3_cp.c 
b/src/gallium/drivers/freedreno/ir3/ir3_cp.c
index 6e71bee..57c37e2 100644
--- a/src/gallium/drivers/freedreno/ir3/ir3_cp.c
+++ b/src/gallium/drivers/freedreno/ir3/ir3_cp.c
@@ -102,6 +102,15 @@ static bool valid_flags(struct ir3_instruction *instr, 
unsigned n,
                        (flags & IR3_REG_RELATIV))
                return false;
 
+       /* TODO it seems to *mostly* work to cp RELATIV, except we get some
+        * intermittent piglit variable-indexing fails.  Newer blob driver
+        * doesn't seem to cp these.  Possibly this is hw workaround?  Not
+        * sure, but until that is understood better, lets just switch off
+        * cp for indirect src's:
+        */
+       if (flags & IR3_REG_RELATIV)
+               return false;
+
        /* clear flags that are 'ok' */
        switch (opc_cat(instr->opc)) {
        case 1:

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to