From 5e75eb547ff7efb8dc1d2845d034e62c1ab12442 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Fri, 6 Dec 2019 16:22:06 -0500 Subject: pan/midgard: Force alignment for csel_v The swizzle on the conditional gets lost. Fixes "horizontal mirroring" in godot. See https://gitlab.freedesktop.org/mesa/mesa/issues/2108 which has attached apitrace. Signed-off-by: Alyssa Rosenzweig Fixes: d3b3daa9d3f ("pan/midgard: Use new scheduler") Reported-by: Icecream95 --- src/panfrost/midgard/midgard_ra.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/panfrost/midgard') diff --git a/src/panfrost/midgard/midgard_ra.c b/src/panfrost/midgard/midgard_ra.c index 2fe406d6e7a..c084a896a40 100644 --- a/src/panfrost/midgard/midgard_ra.c +++ b/src/panfrost/midgard/midgard_ra.c @@ -473,6 +473,14 @@ allocate_registers(compiler_context *ctx, bool *spilled) if (ins->type == TAG_LOAD_STORE_4 && ins->load_64) min_alignment[dest] = 3; + + /* We don't have a swizzle for the conditional and we don't + * want to muck with the conditional itself, so just force + * alignment for now */ + + if (ins->type == TAG_ALU_4 && OP_IS_CSEL_V(ins->alu.op)) + min_alignment[dest] = 4; /* 1 << 4= 16-byte = vec4 */ + } for (unsigned i = 0; i < ctx->temp_count; ++i) { -- cgit v1.2.3