diff options
author | Rob Clark <[email protected]> | 2019-02-26 10:06:25 -0500 |
---|---|---|
committer | Rob Clark <[email protected]> | 2019-02-26 13:19:44 -0500 |
commit | a06bb486b0441539d46c7746fc45253bbc09b7b2 (patch) | |
tree | 9fb961a5b4bc7857fcb93dad01c04c90c77759d1 /src/freedreno/ir3 | |
parent | db1fa213745be08fd164415241f80458ee5c1a41 (diff) |
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 <[email protected]>
Diffstat (limited to 'src/freedreno/ir3')
-rw-r--r-- | src/freedreno/ir3/ir3_a6xx.c | 8 |
1 files changed, 8 insertions, 0 deletions
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]); + } } } |