From a06bb486b0441539d46c7746fc45253bbc09b7b2 Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Tue, 26 Feb 2019 10:06:25 -0500 Subject: [PATCH] freedreno/ir3/a6xx: fix atomic shader outputs We also need to put in the output mov. Possibly we could just fixup the output register to read it directly from the dummy, but that is more work and I guess dEQP is probably the only time you encounter this. Fixes dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter.const_literal_fragment Signed-off-by: Rob Clark --- src/freedreno/ir3/ir3_a6xx.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/freedreno/ir3/ir3_a6xx.c b/src/freedreno/ir3/ir3_a6xx.c index 3bb9e3496f4..00260a4c534 100644 --- a/src/freedreno/ir3/ir3_a6xx.c +++ b/src/freedreno/ir3/ir3_a6xx.c @@ -427,6 +427,14 @@ ir3_a6xx_fixup_atomic_dests(struct ir3 *ir, struct ir3_shader_variant *so) reg->instr = get_atomic_dest_mov(src); } } + + /* we also need to fixup shader outputs: */ + for (unsigned i = 0; i < ir->noutputs; i++) { + if (!ir->outputs[i]) + continue; + if (is_atomic(ir->outputs[i]->opc) && (ir->outputs[i]->flags & IR3_INSTR_G)) + ir->outputs[i] = get_atomic_dest_mov(ir->outputs[i]); + } } } -- 2.30.2