pan/midgard: Lower texr/texw mixed registers
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Tue, 30 Jul 2019 15:09:51 +0000 (08:09 -0700)
committerAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Tue, 30 Jul 2019 17:01:20 +0000 (10:01 -0700)
Conceptually, r28-r29 (as used for reading) and r28-r29 (as used for
writing) aren't registers at all, merely push/pull arrangements. So you
can't feed a texture result back into itself without explicitly moving
in the middle.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
src/panfrost/midgard/midgard_ra.c

index 60dadae945ab45be00a2d65f0d47ccdb6c5fc979..48a8c94bdd76242839c50d7e8333d053d2bc9e92 100644 (file)
@@ -467,8 +467,8 @@ mir_lower_special_reads(compiler_context *ctx)
                 bool collision =
                         (is_alur && (is_ldst || is_texr)) ||
                         (is_ldst && (is_alur || is_texr || is_texw)) ||
-                        (is_texr && (is_alur || is_ldst)) ||
-                        (is_texw && (is_aluw || is_ldst));
+                        (is_texr && (is_alur || is_ldst || is_texw)) ||
+                        (is_texw && (is_aluw || is_ldst || is_texr));
         
                 if (!collision)
                         continue;