Mesa (master): panfrost: Document MALI_WRITES_GLOBAL bit
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Jun 3 20:59:09 UTC 2020
Module: Mesa
Branch: master
Commit: 2447b3b9d3306b33c75d503c9caf9e7322c957bf
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2447b3b9d3306b33c75d503c9caf9e7322c957bf
Author: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Date: Tue Jun 2 14:05:34 2020 -0400
panfrost: Document MALI_WRITES_GLOBAL bit
We've been setting this unconditionally -- oops!
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5300>
---
src/gallium/drivers/panfrost/pan_cmdstream.c | 2 +-
src/panfrost/include/panfrost-job.h | 7 +++++++
src/panfrost/pandecode/decode.c | 1 +
3 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/gallium/drivers/panfrost/pan_cmdstream.c b/src/gallium/drivers/panfrost/pan_cmdstream.c
index 14d013f08c9..6edc7a80ed7 100644
--- a/src/gallium/drivers/panfrost/pan_cmdstream.c
+++ b/src/gallium/drivers/panfrost/pan_cmdstream.c
@@ -353,7 +353,7 @@ panfrost_shader_meta_init(struct panfrost_context *ctx,
/* TODO: This is not conformant on ES3 */
meta->midgard1.flags_hi = MALI_SUPPRESS_INF_NAN;
- meta->midgard1.flags_lo = 0x220;
+ meta->midgard1.flags_lo = MALI_WRITES_GLOBAL | 0x20;
meta->midgard1.uniform_buffer_count = panfrost_ubo_count(ctx, st);
}
}
diff --git a/src/panfrost/include/panfrost-job.h b/src/panfrost/include/panfrost-job.h
index 66db429e3b9..0829b9bfb57 100644
--- a/src/panfrost/include/panfrost-job.h
+++ b/src/panfrost/include/panfrost-job.h
@@ -408,6 +408,13 @@ enum mali_format {
* it might read depth/stencil in particular, also set MALI_READS_ZS */
#define MALI_READS_ZS (1 << 8)
+
+/* The shader might write to global memory (via OpenCL, SSBOs, or images).
+ * Reading is okay, as are ordinary writes to the tilebuffer/varyings. Setting
+ * incurs a performance penalty. On a fragment shader, this bit implies there
+ * are side effects, hence it interacts with early-z. */
+#define MALI_WRITES_GLOBAL (1 << 9)
+
#define MALI_READS_TILEBUFFER (1 << 12)
/* Applies to midgard1.flags_hi */
diff --git a/src/panfrost/pandecode/decode.c b/src/panfrost/pandecode/decode.c
index f9bfa190fbf..8358603feaf 100644
--- a/src/panfrost/pandecode/decode.c
+++ b/src/panfrost/pandecode/decode.c
@@ -274,6 +274,7 @@ static const struct pandecode_flag_info shader_midgard1_flag_lo_info [] = {
FLAG_INFO(WRITES_Z),
FLAG_INFO(EARLY_Z),
FLAG_INFO(READS_TILEBUFFER),
+ FLAG_INFO(WRITES_GLOBAL),
FLAG_INFO(READS_ZS),
{}
};
More information about the mesa-commit
mailing list