anv,iris: Depth stall around color fast clears

Needed for TGL (see Bspec 47704).

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Rohan Garg <rohan.garg@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14024>
This commit is contained in:
Nanley Chery 2021-11-08 11:33:19 -05:00 committed by Marge Bot
parent 34c8371e2a
commit de5f1cdd31
2 changed files with 13 additions and 4 deletions

View file

@ -258,7 +258,9 @@ fast_clear_color(struct iris_context *ice,
iris_emit_end_of_pipe_sync(batch,
"fast clear: pre-flush",
PIPE_CONTROL_RENDER_TARGET_FLUSH |
PIPE_CONTROL_TILE_CACHE_FLUSH);
PIPE_CONTROL_TILE_CACHE_FLUSH |
(devinfo->verx10 == 120 ?
PIPE_CONTROL_DEPTH_STALL : 0));
iris_batch_sync_region_start(batch);
@ -284,7 +286,8 @@ fast_clear_color(struct iris_context *ice,
"fast clear: post flush",
PIPE_CONTROL_RENDER_TARGET_FLUSH |
(devinfo->verx10 == 120 ?
PIPE_CONTROL_TILE_CACHE_FLUSH : 0));
PIPE_CONTROL_TILE_CACHE_FLUSH |
PIPE_CONTROL_DEPTH_STALL : 0));
iris_batch_sync_region_end(batch);
iris_resource_set_aux_state(ice, res, level, box->z,

View file

@ -1878,6 +1878,8 @@ anv_image_mcs_op(struct anv_cmd_buffer *cmd_buffer,
anv_add_pending_pipe_bits(cmd_buffer,
ANV_PIPE_RENDER_TARGET_CACHE_FLUSH_BIT |
ANV_PIPE_TILE_CACHE_FLUSH_BIT |
(devinfo->verx10 == 120 ?
ANV_PIPE_DEPTH_STALL_BIT : 0) |
ANV_PIPE_END_OF_PIPE_SYNC_BIT,
"before fast clear mcs");
@ -1900,7 +1902,8 @@ anv_image_mcs_op(struct anv_cmd_buffer *cmd_buffer,
anv_add_pending_pipe_bits(cmd_buffer,
ANV_PIPE_RENDER_TARGET_CACHE_FLUSH_BIT |
(devinfo->verx10 == 120 ?
ANV_PIPE_TILE_CACHE_FLUSH_BIT : 0) |
ANV_PIPE_TILE_CACHE_FLUSH_BIT |
ANV_PIPE_DEPTH_STALL_BIT : 0) |
ANV_PIPE_END_OF_PIPE_SYNC_BIT,
"after fast clear mcs");
@ -1967,6 +1970,8 @@ anv_image_ccs_op(struct anv_cmd_buffer *cmd_buffer,
anv_add_pending_pipe_bits(cmd_buffer,
ANV_PIPE_RENDER_TARGET_CACHE_FLUSH_BIT |
ANV_PIPE_TILE_CACHE_FLUSH_BIT |
(devinfo->verx10 == 120 ?
ANV_PIPE_DEPTH_STALL_BIT : 0) |
ANV_PIPE_END_OF_PIPE_SYNC_BIT,
"before fast clear ccs");
@ -1994,7 +1999,8 @@ anv_image_ccs_op(struct anv_cmd_buffer *cmd_buffer,
anv_add_pending_pipe_bits(cmd_buffer,
ANV_PIPE_RENDER_TARGET_CACHE_FLUSH_BIT |
(devinfo->verx10 == 120 ?
ANV_PIPE_TILE_CACHE_FLUSH_BIT : 0) |
ANV_PIPE_TILE_CACHE_FLUSH_BIT |
ANV_PIPE_DEPTH_STALL_BIT : 0) |
ANV_PIPE_END_OF_PIPE_SYNC_BIT,
"after fast clear ccs");