summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>2021-02-09 09:48:48 -0500
committerMarge Bot <eric+marge@anholt.net>2021-02-11 17:24:37 +0000
commit73bbf08897545a97edd0e7e1d202ba317bc69968 (patch)
tree4cd53f78f54ff57995b2af0eb494f68066e26abc
parentc7bcc40ec1b0ed82183eccb9c47db4166c2f7af4 (diff)
pan/mdg: Add MIDGARD_MESA_DEBUG=inorder option
Helpful to disable the scheduler when debugging, so the assembly can be compared against the NIR directly when lost in a big dEQP test. Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8973>
-rw-r--r--src/panfrost/midgard/midgard.h1
-rw-r--r--src/panfrost/midgard/midgard_compile.c1
-rw-r--r--src/panfrost/midgard/midgard_schedule.c6
3 files changed, 8 insertions, 0 deletions
diff --git a/src/panfrost/midgard/midgard.h b/src/panfrost/midgard/midgard.h
index 955c172cbc9..36c36c5bfcf 100644
--- a/src/panfrost/midgard/midgard.h
+++ b/src/panfrost/midgard/midgard.h
@@ -34,6 +34,7 @@
#define MIDGARD_DBG_MSGS 0x0001
#define MIDGARD_DBG_SHADERS 0x0002
#define MIDGARD_DBG_SHADERDB 0x0004
+#define MIDGARD_DBG_INORDER 0x0008
extern int midgard_debug;
diff --git a/src/panfrost/midgard/midgard_compile.c b/src/panfrost/midgard/midgard_compile.c
index 17709e8997e..c42b1b784f0 100644
--- a/src/panfrost/midgard/midgard_compile.c
+++ b/src/panfrost/midgard/midgard_compile.c
@@ -58,6 +58,7 @@ static const struct debug_named_value midgard_debug_options[] = {
{"msgs", MIDGARD_DBG_MSGS, "Print debug messages"},
{"shaders", MIDGARD_DBG_SHADERS, "Dump shaders in NIR and MIR"},
{"shaderdb", MIDGARD_DBG_SHADERDB, "Prints shader-db statistics"},
+ {"inorder", MIDGARD_DBG_INORDER, "Disables out-of-order scheduling"},
DEBUG_NAMED_VALUE_END
};
diff --git a/src/panfrost/midgard/midgard_schedule.c b/src/panfrost/midgard/midgard_schedule.c
index 7bd8229fe33..973af220c2e 100644
--- a/src/panfrost/midgard/midgard_schedule.c
+++ b/src/panfrost/midgard/midgard_schedule.c
@@ -674,6 +674,12 @@ mir_choose_instruction(
unsigned max_active = 0;
unsigned max_distance = 36;
+#ifndef NDEBUG
+ /* Force in-order scheduling */
+ if (midgard_debug & MIDGARD_DBG_INORDER)
+ max_distance = 1;
+#endif
+
BITSET_FOREACH_SET(i, worklist, count) {
max_active = MAX2(max_active, i);
}