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

Author: Alyssa Rosenzweig <[email protected]>
Date:   Thu Aug 22 16:31:03 2019 -0700

pan/midgard: Analyze helper invocations

We check for texture ops which calculate derivatives (either explicitly
via dFd* or implicitly) and mark the shader as requiring helper
invocations.

Signed-off-by: Alyssa Rosenzweig <[email protected]>

---

 src/panfrost/midgard/disassemble.c | 19 +++++++++++++++++++
 src/panfrost/midgard/disassemble.h |  3 +++
 2 files changed, 22 insertions(+)

diff --git a/src/panfrost/midgard/disassemble.c 
b/src/panfrost/midgard/disassemble.c
index b26dfb84e8d..a7f407bdef8 100644
--- a/src/panfrost/midgard/disassemble.c
+++ b/src/panfrost/midgard/disassemble.c
@@ -1221,6 +1221,22 @@ print_texture_format(int format)
         }
 }
 
+static bool
+midgard_op_has_helpers(unsigned op, bool gather)
+{
+        if (gather)
+                return true;
+
+        switch (op) {
+        case TEXTURE_OP_NORMAL:
+        case TEXTURE_OP_DFDX:
+        case TEXTURE_OP_DFDY:
+                return true;
+        default:
+                return false;
+        }
+}
+
 static void
 print_texture_op(unsigned op, bool gather)
 {
@@ -1281,6 +1297,9 @@ print_texture_word(uint32_t *word, unsigned tabs)
 {
         midgard_texture_word *texture = (midgard_texture_word *) word;
 
+        midg_stats.helper_invocations |=
+                midgard_op_has_helpers(texture->op, texture->is_gather);
+
         /* Broad category of texture operation in question */
         print_texture_op(texture->op, texture->is_gather);
 
diff --git a/src/panfrost/midgard/disassemble.h 
b/src/panfrost/midgard/disassemble.h
index dacc7a16d5d..fc39875007a 100644
--- a/src/panfrost/midgard/disassemble.h
+++ b/src/panfrost/midgard/disassemble.h
@@ -17,6 +17,9 @@ struct midgard_disasm_stats {
         unsigned instruction_count;
         unsigned bundle_count;
         unsigned quadword_count;
+
+        /* Should we enable helper invocations? */
+        bool helper_invocations;
 };
 
 struct midgard_disasm_stats

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to