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); }