pan/bi: Add nosched debug option

Forces a trivial schedule to replicate the old behaviour (for debugging
or benchmarking). Actually the new scheduler is still used, just highly
constrained; the net result should still do what's expected.

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/8354>
This commit is contained in:
Alyssa Rosenzweig 2021-01-20 17:36:03 -05:00 committed by Marge Bot
parent ced55f0bcc
commit 4f4bb72745
3 changed files with 14 additions and 0 deletions

View File

@ -761,6 +761,12 @@ bi_take_instr(bi_context *ctx, struct bi_worklist st,
struct bi_tuple_state *tuple,
bool fma)
{
#ifndef NDEBUG
/* Don't pair instructions if debugging */
if ((bifrost_debug & BIFROST_DBG_NOSCHED) && tuple->add)
return NULL;
#endif
if (tuple->add && tuple->add->op == BI_OPCODE_CUBEFACE)
return bi_lower_cubeface(ctx, clause, tuple);
@ -1229,6 +1235,12 @@ bi_schedule_clause(bi_context *ctx, bi_block *block, struct bi_worklist st)
if (!bi_space_for_more_constants(&clause_state))
break;
#ifndef NDEBUG
/* Don't schedule more than 1 tuple if debugging */
if (bifrost_debug & BIFROST_DBG_NOSCHED)
break;
#endif
/* Link through the register state */
STATIC_ASSERT(sizeof(prev_reads) == sizeof(tuple_state.reg.reads));
memcpy(prev_reads, tuple_state.reg.reads, sizeof(prev_reads));

View File

@ -35,6 +35,7 @@
#define BIFROST_DBG_SHADERDB 0x0004
#define BIFROST_DBG_VERBOSE 0x0008
#define BIFROST_DBG_INTERNAL 0x0010
#define BIFROST_DBG_NOSCHED 0x0020
extern int bifrost_debug;

View File

@ -43,6 +43,7 @@ static const struct debug_named_value bifrost_debug_options[] = {
{"shaderdb", BIFROST_DBG_SHADERDB, "Print statistics"},
{"verbose", BIFROST_DBG_VERBOSE, "Disassemble verbosely"},
{"internal", BIFROST_DBG_INTERNAL, "Dump even internal shaders"},
{"nosched", BIFROST_DBG_NOSCHED, "Force trivial scheduling"},
DEBUG_NAMED_VALUE_END
};