freedreno/ir3: set (ss) on last_input if ldlv
authorRob Clark <robdclark@chromium.org>
Wed, 29 May 2019 20:25:11 +0000 (13:25 -0700)
committerRob Clark <robdclark@chromium.org>
Fri, 31 May 2019 19:58:33 +0000 (12:58 -0700)
commit5d43b806ba3a2026d11e20ec655a9ead116c88ef
treeab5ecc7fc7a02d1fbb6c2a7a2b77450d8e882b7b
parent73fb02c5d64665385fe1751ec2f9da41c809a2e1
freedreno/ir3: set (ss) on last_input if ldlv

It seems like (ei) handling doesn't sync on (ss), so we could end up in
a situation where we release varying storage before an ldlv for flat
shaded varyings completes.  Keep track if we've done an (ss) since the
last ldlv, and if not add (ss) flag to last_input which gets (ei).

Noticed with dEQP-GLES3.functional.fragment_out.random.24 and
dEQP-GLES3.functional.fragment_out.random.27, which previously passed by
luck because ir3_sched ordered instructions in a way that resulted in a
lucky (ss).

Signed-off-by: Rob Clark <robdclark@chromium.org>
Acked-by: Eric Anholt <eric@anholt.net>
src/freedreno/ir3/ir3_legalize.c