i965: Make Broadwell HiZ path arrange for TC flushes.
authorKenneth Graunke <kenneth@whitecape.org>
Mon, 21 Apr 2014 21:08:49 +0000 (14:08 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Tue, 22 Apr 2014 17:57:11 +0000 (10:57 -0700)
commit34a68345e228b7cbc1bc6909704a89c08bf5368e
treefe1ef1ed05b1df0a6d7e187dd3d4d9400a26bf03
parentfe49949392f9cf80e78b4e679d79e40c4da71ded
i965: Make Broadwell HiZ path arrange for TC flushes.

HiZ operations make the depth/render caches out of sync with the sampler
caches.  We need to arrange for a TC flush to happen before the target
buffer is used by the sampler.  Calling brw_render_cache_set_add_bo
makes that happen.

On previous generations, brw_blorp_exec took care of flushing the
texture cache by calling intel_batchbuffer_emit_mi_flush after doing
any rendering.  If we were to use the normal drawing path, then
brw_postdraw_set_buffers_need_resolve would handle this.

On Broadwell, we don't use BLORP, and we don't emit a rectangle
primitive via the normal drawing path.  The 3DSTATE_WM_HZ_OP and
PIPE_CONTROL implicitly make drawing happen.  So, none of our existing
code makes this flush happen - we need to do it directly.

Fixes 11 Piglit copyteximage subtests.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=77223
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=77226
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
src/mesa/drivers/dri/i965/gen8_depth_state.c