From 116b17d2d191892aeccf8fd5044a20f5a2d0c64f Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Fri, 30 Aug 2019 14:35:01 -0700 Subject: [PATCH] pan/midgard: Do not propagate swizzles into writeout There's no slot for it; you'll end up writing into the void and clobbering stuff. Don't. do it. Signed-off-by: Alyssa Rosenzweig --- src/panfrost/midgard/midgard_opt_copy_prop.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/panfrost/midgard/midgard_opt_copy_prop.c b/src/panfrost/midgard/midgard_opt_copy_prop.c index 9a278876088..8f6ff2ac7db 100644 --- a/src/panfrost/midgard/midgard_opt_copy_prop.c +++ b/src/panfrost/midgard/midgard_opt_copy_prop.c @@ -53,16 +53,18 @@ midgard_opt_copy_prop(compiler_context *ctx, midgard_block *block) if (mir_nontrivial_outmod(ins)) continue; /* Shortened arguments (bias for textures, extra load/store - * arguments, etc.) do not get a swizzlw, only a start - * component and even that is restricted. */ + * arguments, etc.) do not get a swizzle, only a start + * component and even that is restricted. Fragment writeout + * doesn't even get that much */ bool skip = false; mir_foreach_instr_global(ctx, q) { bool is_tex = q->type == TAG_TEXTURE_4; bool is_ldst = q->type == TAG_LOAD_STORE_4; + bool is_writeout = q->compact_branch && q->writeout; - if (!(is_tex || is_ldst)) continue; + if (!(is_tex || is_ldst || is_writeout)) continue; /* For textures, we get one real swizzle. For stores, * we also get one. For loads, we get none. */ -- 2.30.2