diff options
author | Felix DeGrood <felix.j.degrood@intel.com> | 2021-08-25 21:12:36 +0000 |
---|---|---|
committer | Marge Bot <eric+marge@anholt.net> | 2021-10-13 04:31:34 +0000 |
commit | 5bf6987873ddf94afc698c9159116a42b6942b55 (patch) | |
tree | dda7db973ed79f868d0491351fa0f42d05a12cd1 /src/intel | |
parent | fab1ad1a110eeadb3a913c5421875707735e7f2e (diff) |
anv: dirty only state impacted by blorp_exec
Instead of dirtying all state after blorp operations,
avoid dirtying state that blorp never touches.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5077
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12567>
Diffstat (limited to 'src/intel')
-rw-r--r-- | src/intel/vulkan/genX_blorp_exec.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/intel/vulkan/genX_blorp_exec.c b/src/intel/vulkan/genX_blorp_exec.c index ba27dbefd9e..28bf31262ac 100644 --- a/src/intel/vulkan/genX_blorp_exec.c +++ b/src/intel/vulkan/genX_blorp_exec.c @@ -332,7 +332,25 @@ genX(blorp_exec)(struct blorp_batch *batch, "after blorp BTI change"); #endif + /* Calculate state that does not get touched by blorp. + * Flush everything else. + */ + anv_cmd_dirty_mask_t skip_bits = ANV_CMD_DIRTY_DYNAMIC_SCISSOR | + ANV_CMD_DIRTY_DYNAMIC_DEPTH_BOUNDS | + ANV_CMD_DIRTY_INDEX_BUFFER | + ANV_CMD_DIRTY_XFB_ENABLE | + ANV_CMD_DIRTY_DYNAMIC_LINE_STIPPLE | + ANV_CMD_DIRTY_DYNAMIC_DEPTH_BOUNDS_TEST_ENABLE | + ANV_CMD_DIRTY_DYNAMIC_SAMPLE_LOCATIONS | + ANV_CMD_DIRTY_DYNAMIC_SHADING_RATE | + ANV_CMD_DIRTY_DYNAMIC_PRIMITIVE_RESTART_ENABLE; + + if (!params->wm_prog_data) { + skip_bits |= ANV_CMD_DIRTY_DYNAMIC_COLOR_BLEND_STATE | + ANV_CMD_DIRTY_DYNAMIC_LOGIC_OP; + } + cmd_buffer->state.gfx.vb_dirty = ~0; - cmd_buffer->state.gfx.dirty = ~0; + cmd_buffer->state.gfx.dirty |= ~skip_bits; cmd_buffer->state.push_constants_dirty = ~0; } |