From: Alyssa Rosenzweig Date: Mon, 24 Feb 2020 14:36:18 +0000 (-0500) Subject: pan/midgard: Don't spill near a branch X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a0b90b45a9bcef058c8fc6ac88ba5e71a8cedade;p=mesa.git pan/midgard: Don't spill near a branch Fixes dEQP-GLES2.functional.shaders.indexing.varying_array.vec2_dynamic_loop_write_ static_read with register pressure forced down. Signed-off-by: Alyssa Rosenzweig Reviewed-by: Tomeu Vizoso Part-of: --- diff --git a/src/panfrost/midgard/midgard_schedule.c b/src/panfrost/midgard/midgard_schedule.c index 8dd5ac1d2e2..55fdba0b546 100644 --- a/src/panfrost/midgard/midgard_schedule.c +++ b/src/panfrost/midgard/midgard_schedule.c @@ -1054,6 +1054,14 @@ mir_schedule_alu( bundle.control |= stages[i]->unit; bytes_emitted += bytes_for_instruction(stages[i]); bundle.instructions[bundle.instruction_count++] = stages[i]; + + /* If we branch, we can't spill to TLS since the store + * instruction will never get executed. We could try to + * break the bundle but this is probably easier for + * now. */ + + if (branch) + stages[i]->no_spill |= (1 << REG_CLASS_WORK); } }