Mesa (main): anv: dirty only state impacted by blorp_exec

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Oct 13 04:44:12 UTC 2021


Module: Mesa
Branch: main
Commit: 5bf6987873ddf94afc698c9159116a42b6942b55
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5bf6987873ddf94afc698c9159116a42b6942b55

Author: Felix DeGrood <felix.j.degrood at intel.com>
Date:   Wed Aug 25 21:12:36 2021 +0000

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 at whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12567>

---

 src/intel/vulkan/genX_blorp_exec.c | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

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;
 }



More information about the mesa-commit mailing list