mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 13:48:06 +02:00
i965: Do an end-of-pipe sync prior to STATE_BASE_ADDRESS
Cc: "17.1" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
(cherry picked from commit 96e7b7ac54)
This commit is contained in:
parent
1161debb60
commit
ea294dd259
1 changed files with 12 additions and 6 deletions
|
|
@ -1009,13 +1009,19 @@ brw_upload_state_base_address(struct brw_context *brw)
|
|||
* and flushes prior to executing our batch. However, it doesn't seem
|
||||
* as if the kernel's flushing is always sufficient and we don't want to
|
||||
* rely on it.
|
||||
*
|
||||
* We make this an end-of-pipe sync instead of a normal flush because we
|
||||
* do not know the current status of the GPU. On Haswell at least,
|
||||
* having a fast-clear operation in flight at the same time as a normal
|
||||
* rendering operation can cause hangs. Since the kernel's flushing is
|
||||
* insufficient, we need to ensure that any rendering operations from
|
||||
* other processes are definitely complete before we try to do our own
|
||||
* rendering. It's a bit of a big hammer but it appears to work.
|
||||
*/
|
||||
brw_emit_pipe_control_flush(brw,
|
||||
PIPE_CONTROL_RENDER_TARGET_FLUSH |
|
||||
PIPE_CONTROL_DEPTH_CACHE_FLUSH |
|
||||
dc_flush |
|
||||
PIPE_CONTROL_NO_WRITE |
|
||||
PIPE_CONTROL_CS_STALL);
|
||||
brw_emit_end_of_pipe_sync(brw,
|
||||
PIPE_CONTROL_RENDER_TARGET_FLUSH |
|
||||
PIPE_CONTROL_DEPTH_CACHE_FLUSH |
|
||||
dc_flush);
|
||||
}
|
||||
|
||||
if (brw->gen >= 8) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue