anv/gpu_memcpy: CS Stall before a MI memcpy on gen7
authorJason Ekstrand <jason.ekstrand@intel.com>
Sat, 17 Feb 2018 01:35:15 +0000 (17:35 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Tue, 20 Feb 2018 21:49:19 +0000 (13:49 -0800)
commit116e818ef18f62cf810de98fd3909dcef9fe4e84
tree221887f404194e5d5da88f43dd3d2a4ad4fefdff
parenta572ec2efe00981ea866baeb387cccaa62bbc9d8
anv/gpu_memcpy: CS Stall before a MI memcpy on gen7

This fixes a pile of hangs caused by the recent shuffling of resolves
and transitions.  The particularly problematic case is when you have at
least three attachments with load ops of CLEAR, LOAD, CLEAR.  In this
case, we execute the first CLEAR followed by a MI memcpy to copy the
clear values over for the LOAD followed by a second CLEAR.  The MI
commands cause the first CLEAR to hang which causes us to get stuck on
the 3DSTATE_MULTISAMPLE in the second CLEAR.

We also add guards for BLORP to fix the same issue.  These shouldn't
actually do anything right now because the only use of indirect clears
in BLORP today is for resolves which are already guarded by a render
cache flush and CS stall.  However, this will guard us against potential
issues in the future.

Acked-by: Kenneth Graunke <kenneth@whitecape.org>
Acked-by: Nanley Chery <nanley.g.chery@intel.com>
src/intel/vulkan/genX_blorp_exec.c
src/intel/vulkan/genX_gpu_memcpy.c