From f14cc46c3a8145501bb85ddc349c22094310e740 Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Mon, 11 May 2026 15:30:22 -0700 Subject: [PATCH] ir3: Add an env var to prefer single wavesize. I used this for debugging an issue recently, and it seems handy to have around. Part-of: --- src/freedreno/ir3/ir3.c | 2 ++ src/freedreno/ir3/ir3_compiler.c | 1 + src/freedreno/ir3/ir3_compiler.h | 9 +++++---- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/freedreno/ir3/ir3.c b/src/freedreno/ir3/ir3.c index 7dc042c9a55..521ce04f09f 100644 --- a/src/freedreno/ir3/ir3.c +++ b/src/freedreno/ir3/ir3.c @@ -202,6 +202,8 @@ ir3_should_double_threadsize(struct ir3_shader_variant *v, unsigned regs_count) return false; if (v->shader_options.real_wavesize == IR3_DOUBLE_ONLY) return true; + if (ir3_shader_debug & IR3_DBG_THREAD64) + return false; /* We can't support more than compiler->max_branchstack diverging threads * in a wave. Thus, doubling the threadsize is only possible if we don't diff --git a/src/freedreno/ir3/ir3_compiler.c b/src/freedreno/ir3/ir3_compiler.c index 61e40c95e56..df7f68d8f3b 100644 --- a/src/freedreno/ir3/ir3_compiler.c +++ b/src/freedreno/ir3/ir3_compiler.c @@ -39,6 +39,7 @@ static const struct debug_named_value shader_debug_options[] = { {"noaliastex", IR3_DBG_NOALIASTEX, "Don't use alias.tex"}, {"noaliasrt", IR3_DBG_NOALIASRT, "Don't use alias.rt"}, {"asmroundtrip", IR3_DBG_ASM_ROUNDTRIP, "Disassemble, reassemble and compare every shader"}, + {"thread64", IR3_DBG_THREAD64, "Prefer 64-thread wave size (when available)"}, #if MESA_DEBUG /* MESA_DEBUG-only options: */ {"schedmsgs", IR3_DBG_SCHEDMSGS, "Enable scheduler debug messages"}, diff --git a/src/freedreno/ir3/ir3_compiler.h b/src/freedreno/ir3/ir3_compiler.h index a95e0a3a977..2a581a26a50 100644 --- a/src/freedreno/ir3/ir3_compiler.h +++ b/src/freedreno/ir3/ir3_compiler.h @@ -314,12 +314,13 @@ enum ir3_shader_debug { IR3_DBG_NODESCPREFETCH = BITFIELD_BIT(18), IR3_DBG_EXPANDRPT = BITFIELD_BIT(19), IR3_DBG_ASM_ROUNDTRIP = BITFIELD_BIT(20), + IR3_DBG_THREAD64 = BITFIELD_BIT(21), /* MESA_DEBUG-only options: */ - IR3_DBG_SCHEDMSGS = BITFIELD_BIT(21), - IR3_DBG_RAMSGS = BITFIELD_BIT(22), - IR3_DBG_NOALIASTEX = BITFIELD_BIT(23), - IR3_DBG_NOALIASRT = BITFIELD_BIT(24), + IR3_DBG_SCHEDMSGS = BITFIELD_BIT(22), + IR3_DBG_RAMSGS = BITFIELD_BIT(23), + IR3_DBG_NOALIASTEX = BITFIELD_BIT(24), + IR3_DBG_NOALIASRT = BITFIELD_BIT(25), }; extern enum ir3_shader_debug ir3_shader_debug;