freedreno/ir3: handle quirky atomic dst for a6xx
authorRob Clark <robdclark@gmail.com>
Mon, 18 Feb 2019 16:15:52 +0000 (11:15 -0500)
committerRob Clark <robdclark@gmail.com>
Mon, 18 Feb 2019 17:01:36 +0000 (12:01 -0500)
commitd6c43cceff2502d89843e1f251cb7118b744afc0
tree6680c504d1baf98b88a4beca413f3d66fd244733
parent28fc6733cd2d3af2ce12bfda5953ed0f582663c0
freedreno/ir3: handle quirky atomic dst for a6xx

The new encoding returns a value via the 2nd src.  The legalize pass
needs to be aware of this to set the correct needs_sy flag, otherwise we
can, in cases where the atomic dst is not used, overwrite the register
that hardware will asynchronously load result into without (sy) flag, so
it gets clobbered by the atomic result.

This fixes a whole lot of rando ssbo+atomic fails, like
dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.highp_vec4.

Signed-off-by: Rob Clark <robdclark@gmail.com>
src/freedreno/ir3/ir3_legalize.c