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 <robdclark@gmail.com>
This commit is contained in:
Rob Clark 2019-02-26 10:06:25 -05:00
parent db1fa21374
commit a06bb486b0

View file

@ -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]);
}
}
}