Mesa (master): freedreno/ir3: disable cp for indirect src's
Rob Clark
robclark at kemper.freedesktop.org
Mon May 23 19:57:44 UTC 2016
Module: Mesa
Branch: master
Commit: 46ff17559b1369f0fe7dca000f51f077ffd1dae5
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=46ff17559b1369f0fe7dca000f51f077ffd1dae5
Author: Rob Clark <robclark at 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 <robclark at 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:
More information about the mesa-commit
mailing list