summaryrefslogtreecommitdiffstats
path: root/src/panfrost
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <[email protected]>2019-07-31 08:50:02 -0700
committerAlyssa Rosenzweig <[email protected]>2019-07-31 10:56:11 -0700
commitcf6cad3922f85127a29a8c1e49f980efcc5e9bac (patch)
tree1f5f941edd7030fcc00eb4e23cd07be976e6a9bd /src/panfrost
parent160795429d62d6eedcd2b8dc0c26887509b58e3e (diff)
panfrost: Simplify filter_mode definition
It's just a bit field containing some flags; there's no need for all the macro magic. Signed-off-by: Alyssa Rosenzweig <[email protected]>
Diffstat (limited to 'src/panfrost')
-rw-r--r--src/panfrost/include/panfrost-job.h18
-rw-r--r--src/panfrost/pandecode/decode.c17
2 files changed, 18 insertions, 17 deletions
diff --git a/src/panfrost/include/panfrost-job.h b/src/panfrost/include/panfrost-job.h
index 5d038431cee..0b633b02c2f 100644
--- a/src/panfrost/include/panfrost-job.h
+++ b/src/panfrost/include/panfrost-job.h
@@ -1188,21 +1188,15 @@ struct mali_texture_descriptor {
mali_ptr payload[MAX_MIP_LEVELS * MAX_CUBE_FACES * MAX_ELEMENTS];
} __attribute__((packed));
-/* Used as part of filter_mode */
+/* filter_mode */
-#define MALI_LINEAR 0
-#define MALI_NEAREST 1
-#define MALI_MIP_LINEAR (0x18)
+#define MALI_SAMP_MAG_NEAREST (1 << 0)
+#define MALI_SAMP_MIN_NEAREST (1 << 1)
-/* Used to construct low bits of filter_mode */
+/* TODO: What do these bits mean individually? Only seen set together */
-#define MALI_TEX_MAG(mode) (((mode) & 1) << 0)
-#define MALI_TEX_MIN(mode) (((mode) & 1) << 1)
-
-#define MALI_TEX_MAG_MASK (1)
-#define MALI_TEX_MIN_MASK (2)
-
-#define MALI_FILTER_NAME(filter) (filter ? "MALI_NEAREST" : "MALI_LINEAR")
+#define MALI_SAMP_MIP_LINEAR_1 (1 << 3)
+#define MALI_SAMP_MIP_LINEAR_2 (1 << 4)
/* Used for lod encoding. Thanks @urjaman for pointing out these routines can
* be cleaned up a lot. */
diff --git a/src/panfrost/pandecode/decode.c b/src/panfrost/pandecode/decode.c
index f8942b0ec18..a556776b38b 100644
--- a/src/panfrost/pandecode/decode.c
+++ b/src/panfrost/pandecode/decode.c
@@ -245,6 +245,15 @@ static const struct pandecode_flag_info mfbd_flag_info [] = {
};
#undef FLAG_INFO
+#define FLAG_INFO(flag) { MALI_SAMP_##flag, "MALI_SAMP_" #flag }
+static const struct pandecode_flag_info sampler_flag_info [] = {
+ FLAG_INFO(MAG_NEAREST),
+ FLAG_INFO(MIN_NEAREST),
+ FLAG_INFO(MIP_LINEAR_1),
+ FLAG_INFO(MIP_LINEAR_2),
+ {}
+};
+#undef FLAG_INFO
extern char *replace_fragment;
extern char *replace_vertex;
@@ -1865,11 +1874,9 @@ pandecode_vertex_tiler_postfix_pre(const struct mali_vertex_tiler_postfix *p,
pandecode_log("struct mali_sampler_descriptor sampler_descriptor_%"PRIx64"_%d_%d = {\n", d + sizeof(*s) * i, job_no, i);
pandecode_indent++;
- /* Only the lower two bits are understood right now; the rest we display as hex */
- pandecode_log(".filter_mode = MALI_TEX_MIN(%s) | MALI_TEX_MAG(%s) | 0x%" PRIx32",\n",
- MALI_FILTER_NAME(s->filter_mode & MALI_TEX_MIN_MASK),
- MALI_FILTER_NAME(s->filter_mode & MALI_TEX_MAG_MASK),
- s->filter_mode & ~3);
+ pandecode_log(".filter_mode = ");
+ pandecode_log_decoded_flags(sampler_flag_info, s->filter_mode);
+ pandecode_log_cont(",\n");
pandecode_prop("min_lod = FIXED_16(%f)", DECODE_FIXED_16(s->min_lod));
pandecode_prop("max_lod = FIXED_16(%f)", DECODE_FIXED_16(s->max_lod));