diff options
author | Francisco Jerez <[email protected]> | 2016-06-30 17:49:18 -0700 |
---|---|---|
committer | Francisco Jerez <[email protected]> | 2016-07-07 14:16:39 -0700 |
commit | 37b901003b7bb0c0b003550b1255b42b4fc68695 (patch) | |
tree | d870e5b1c137a51422cac8fb8c8ad61ca56d60b1 /src/mesa/drivers/dri/i965/brw_tes.c | |
parent | 0bd3a121c6ea818b656082676f992b41204c5b41 (diff) |
i965: Fix remaining flush vs invalidate race conditions in brw_emit_pipe_control_flush.
This hardware race condition has caused problems several times already
(see "i965: Fix cache pollution race during L3 partitioning set-up.",
"i965: Fix brw_render_cache_set_check_flush's PIPE_CONTROLs." and
"i965: intel_texture_barrier reimplemented"). The problem is that
whenever we attempt to both flush and invalidate multiple caches with
a single pipe control command the flush and invalidation happen in
reverse order, so the contents flushed from the R/W caches aren't
guaranteed to become visible from the invalidated caches after the
PIPE_CONTROL command completes execution if some concurrent rendering
workload happened to pollute any of the invalidated R/O caches in the
short window of time between the invalidation and flush.
This makes sure that brw_emit_pipe_control_flush() has the effect
expected by most callers of making the contents flushed from any R/W
caches visible from the invalidated R/O caches.
Cc: "12.0 11.1 11.2" <[email protected]>
Reviewed-by: Jason Ekstrand <[email protected]>
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_tes.c')
0 files changed, 0 insertions, 0 deletions