From a7b8395c1519a0f9a8fad6c374bfe302c996f32b Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Thu, 7 May 2026 10:28:12 -0400 Subject: [PATCH] jay/lower_scoreboard: run RegDist globally poking around, it seems branches stall the pipelines so we don't need to do any dataflow analysis, but we do need to fall through for correctness. just keep going across block boundaries. this isn't optimal yet but it reduces a pile of A@1's already. Totals from 1389 (52.47% of 2647) affected shaders: CodeSize: 56385376 -> 56325776 (-0.11%); split: -0.13%, +0.03% -- this also fixes issues where the first instruction of a block is a SEND that has an unmet register dependency, since the old code was fundamentally broken. oops. lol. fixes dEQP-VK.compute.pipeline.workgroup_memory_explicit_layout.zero.uint8_t_array_to_uint_array_1 among many others. Signed-off-by: Alyssa Rosenzweig Reviewed-by: Kenneth Graunke Part-of: --- src/intel/compiler/jay/jay_lower_scoreboard.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/intel/compiler/jay/jay_lower_scoreboard.c b/src/intel/compiler/jay/jay_lower_scoreboard.c index 1b098b9f417..439da3ec567 100644 --- a/src/intel/compiler/jay/jay_lower_scoreboard.c +++ b/src/intel/compiler/jay/jay_lower_scoreboard.c @@ -389,12 +389,6 @@ lower_regdist_local(jay_function *func, last_sync = NULL; } - - /* Sync on block boundaries. */ - jay_inst *first = jay_first_inst(block); - if (block != jay_first_block(func) && first && first->op != JAY_OPCODE_SEND) { - first->dep = tgl_swsb_regdist(1); - } } /* @@ -426,6 +420,7 @@ jay_lower_scoreboard(jay_shader *shader) u32_per_pipe *access = malloc(sizeof(*access) * nr_keys); jay_foreach_function(shader, f) { + memset(access, 0, sizeof(*access) * nr_keys); struct swsb_state state = { .access = access }; jay_foreach_block(f, block) { @@ -433,7 +428,6 @@ jay_lower_scoreboard(jay_shader *shader) } jay_foreach_block(f, block) { - memset(access, 0, sizeof(*access) * nr_keys); lower_regdist_local(f, block, &state); } }