From e68a9b033997c9de485c2914717d25e55fbb053e Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Mon, 6 Dec 2021 21:43:26 -0800 Subject: [PATCH] r300: Disable loop unrolling on r500. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit It's buggy, and we should just trust GLSL or NIR to do unrolling for us. Cc: mesa-stable Reviewed-by: Marek Olšák Part-of: --- src/gallium/drivers/r300/compiler/r3xx_fragprog.c | 1 - src/gallium/drivers/r300/compiler/radeon_emulate_loops.c | 16 ---------------- src/gallium/drivers/r300/compiler/radeon_emulate_loops.h | 2 -- 3 files changed, 19 deletions(-) diff --git a/src/gallium/drivers/r300/compiler/r3xx_fragprog.c b/src/gallium/drivers/r300/compiler/r3xx_fragprog.c index b3ccb7a..0a91585 100644 --- a/src/gallium/drivers/r300/compiler/r3xx_fragprog.c +++ b/src/gallium/drivers/r300/compiler/r3xx_fragprog.c @@ -121,7 +121,6 @@ void r3xx_compile_fragment_program(struct r300_fragment_program_compiler* c) /* This transformation needs to be done before any of the IF * instructions are modified. */ {"transform KILP", 1, 1, rc_transform_KILL, NULL}, - {"unroll loops", 1, is_r500, rc_unroll_loops, NULL}, {"transform loops", 1, !is_r500, rc_transform_loops, NULL}, {"emulate branches", 1, !is_r500, rc_emulate_branches, NULL}, {"force alpha to one", 1, alpha2one, rc_local_transform, force_alpha_to_one}, diff --git a/src/gallium/drivers/r300/compiler/radeon_emulate_loops.c b/src/gallium/drivers/r300/compiler/radeon_emulate_loops.c index a7f773c..ef627b9 100644 --- a/src/gallium/drivers/r300/compiler/radeon_emulate_loops.c +++ b/src/gallium/drivers/r300/compiler/radeon_emulate_loops.c @@ -499,22 +499,6 @@ void rc_transform_loops(struct radeon_compiler *c, void *user) } } -void rc_unroll_loops(struct radeon_compiler *c, void *user) -{ - struct rc_instruction * inst; - struct loop_info loop; - - for(inst = c->Program.Instructions.Next; - inst != &c->Program.Instructions; inst = inst->Next) { - - if (inst->U.I.Opcode == RC_OPCODE_BGNLOOP) { - if (build_loop_info(c, &loop, inst)) { - try_unroll_loop(c, &loop); - } - } - } -} - void rc_emulate_loops(struct radeon_compiler *c, void *user) { struct emulate_loop_state * s = &c->loop_state; diff --git a/src/gallium/drivers/r300/compiler/radeon_emulate_loops.h b/src/gallium/drivers/r300/compiler/radeon_emulate_loops.h index 01f02a6..cf0d63b4 100644 --- a/src/gallium/drivers/r300/compiler/radeon_emulate_loops.h +++ b/src/gallium/drivers/r300/compiler/radeon_emulate_loops.h @@ -50,8 +50,6 @@ struct emulate_loop_state { void rc_transform_loops(struct radeon_compiler *c, void *user); -void rc_unroll_loops(struct radeon_compiler * c, void *user); - void rc_emulate_loops(struct radeon_compiler * c, void *user); #endif /* RADEON_EMULATE_LOOPS_H */ -- 2.7.4