diff options
author | Jason Ekstrand <[email protected]> | 2017-06-13 10:31:41 -0700 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2017-06-14 15:11:42 -0700 |
commit | d9261275cc1328d6a30e19b92db21df23adf7219 (patch) | |
tree | 564a4a1f67389d80968d763699a3f2a63eb7e321 | |
parent | 314ec7b46ffa1640c0d9448e7752c2d7f6c18734 (diff) |
i965: Do an end-of-pipe sync after flushes
According to the docs, a simple CS stall is insufficient to ensure that
the memory from the flush is visible and an end-of-pipe sync is needed.
Cc: "17.1" <[email protected]>
Reviewed-by: Kenneth Graunke <[email protected]>
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_pipe_control.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_pipe_control.c b/src/mesa/drivers/dri/i965/brw_pipe_control.c index e6909b10ff7..a95892c44cf 100644 --- a/src/mesa/drivers/dri/i965/brw_pipe_control.c +++ b/src/mesa/drivers/dri/i965/brw_pipe_control.c @@ -184,10 +184,10 @@ brw_emit_pipe_control_flush(struct brw_context *brw, uint32_t flags) * caches are coherent with memory once the specified R/O caches are * invalidated. On pre-Gen6 hardware the (implicit) R/O cache * invalidation seems to happen at the bottom of the pipeline together - * with any write cache flush, so this shouldn't be a concern. + * with any write cache flush, so this shouldn't be a concern. In order + * to ensure a full stall, we do an end-of-pipe sync. */ - brw_emit_pipe_control_flush(brw, (flags & PIPE_CONTROL_CACHE_FLUSH_BITS) | - PIPE_CONTROL_CS_STALL); + brw_emit_end_of_pipe_sync(brw, (flags & PIPE_CONTROL_CACHE_FLUSH_BITS)); flags &= ~(PIPE_CONTROL_CACHE_FLUSH_BITS | PIPE_CONTROL_CS_STALL); } |