intel/fs/gen12: Fix interaction of SWSB dependency combination with EU fusion workaround.
authorFrancisco Jerez <currojerez@riseup.net>
Thu, 19 Mar 2020 20:08:56 +0000 (13:08 -0700)
committerFrancisco Jerez <currojerez@riseup.net>
Thu, 26 Mar 2020 19:09:42 +0000 (19:09 +0000)
commit36c155a0178d6f05d65a9acfe5b7553d7a522f07
tree414a11af04a57fb531199321a11eee06c28a2bc9
parent007e623025bfc1f66686d1e1cd6a3efeff863f69
intel/fs/gen12: Fix interaction of SWSB dependency combination with EU fusion workaround.

This has been reported to fix a hang in Shadow of Mordor on Gen12.
One of its compute shaders seems to cause an in-order exec_all
dependency to be merged into an out-of-order SET dependency slot,
which would prevent us from baking the SET dependency into the parent
instruction, leading to an assert failure in emit_inst_dependencies()
(Thanks to Rafael for noticing that).  Prevent that by avoiding
combination of in-order dependencies whenever that would cause a SET
dependency to be demoted to a SYNC.NOP instruction.

Fixes: e14529ff3262a527 "intel/fs/gen12: Workaround data coherency issues due to broken NoMask control flow."
Tested-by: Rafael Antognolli <rafael.antognolli@intel.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
src/intel/compiler/brw_fs_scoreboard.cpp