Mesa (master): pan/midgard: Add support for disassembling derivatives

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Jul 30 17:02:25 UTC 2019


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

Author: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Date:   Mon Jul 29 14:07:19 2019 -0700

pan/midgard: Add support for disassembling derivatives

They're just texture ops.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>

---

 src/panfrost/midgard/disassemble.c |  2 ++
 src/panfrost/midgard/midgard.h     | 10 ++++++++++
 2 files changed, 12 insertions(+)

diff --git a/src/panfrost/midgard/disassemble.c b/src/panfrost/midgard/disassemble.c
index acc1f408e98..eb6b98a94bd 100644
--- a/src/panfrost/midgard/disassemble.c
+++ b/src/panfrost/midgard/disassemble.c
@@ -1074,6 +1074,8 @@ print_texture_op(unsigned op, bool gather)
                 DEFINE_CASE(TEXTURE_OP_NORMAL, "texture");
                 DEFINE_CASE(TEXTURE_OP_LOD, "textureLod");
                 DEFINE_CASE(TEXTURE_OP_TEXEL_FETCH, "texelFetch");
+                DEFINE_CASE(TEXTURE_OP_DFDX, "dFdx");
+                DEFINE_CASE(TEXTURE_OP_DFDY, "dFdy");
 
         default:
                 printf("tex_%d", op);
diff --git a/src/panfrost/midgard/midgard.h b/src/panfrost/midgard/midgard.h
index 84b9aa2fe08..d0e15ce86d1 100644
--- a/src/panfrost/midgard/midgard.h
+++ b/src/panfrost/midgard/midgard.h
@@ -541,6 +541,16 @@ midgard_tex_register_select;
 #define TEXTURE_OP_LOD 0x12             /* textureLod */
 #define TEXTURE_OP_TEXEL_FETCH 0x14     /* texelFetch */
 
+/* Computes horizontal and vertical derivatives respectively. Use with a float
+ * sampler and a "2D" texture.  Leave texture/sampler IDs as zero; they ought
+ * to be ignored. Only works for fp32 on 64-bit at a time, so derivatives of a
+ * vec4 require 2 texture ops.  For some reason, the blob computes both X and Y
+ * derivatives at the same time and just throws out whichever is unused; it's
+ * not known if this is a quirk of the hardware or just of the blob. */
+
+#define TEXTURE_OP_DFDX 0x0D
+#define TEXTURE_OP_DFDY 0x1D
+
 enum mali_sampler_type {
         MALI_SAMPLER_UNK        = 0x0,
         MALI_SAMPLER_FLOAT      = 0x1, /* sampler */




More information about the mesa-commit mailing list