https://bugs.freedesktop.org/show_bug.cgi?id=85696
David Heidelberg (okias) david@ixit.cz changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords|bisected, regression | Summary|[regression] r600g+nine: |r600g+nine: Bioshock shader |Bioshock shader failure |failure after |after |7b1c0cbc90d456384b0950ad21f |7b1c0cbc90d456384b0950ad21f |aa3c61a6b43ff |aa3c61a6b43ff |
--- Comment #4 from David Heidelberg (okias) david@ixit.cz --- It's bug in Nine.
Instead of one available ADDR[0], we try use DCL ADDR[0..1].
ADDR[0] is allocated by LOOP (for counter purposes) and then later is allocated ADDR[1].
0 is the address register (already allocated by LOOP, but in this case unused) 1 is UBO index register (misused by location for MOVA (coverted)-> ARR) 2 is sampler index register (not used, correctly).
Axel had idea we could do something like:
. if wants to use rL to index constant register . . if a0 is used somewhere in the shader . . then copy the content to temp. load rL to a0. do the op. restore a0 . . else copy rL to a0 and use it . else do nothing particular