hasvk: add state cache invalidation back before fast clears
authorLionel Landwerlin <lionel.g.landwerlin@intel.com>
Wed, 16 Aug 2023 08:53:24 +0000 (11:53 +0300)
committerMarge Bot <emma+marge@anholt.net>
Wed, 6 Sep 2023 19:34:28 +0000 (19:34 +0000)
Prior to 87149cc545, blorp added a state cache invalidation prior to
fast clears. This got dropped on Hasvk.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: 87149cc545 ("blorp: update and move fast clear PIPE_CONTROLs to drivers")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24719>

src/intel/blorp/blorp.h
src/intel/vulkan_hasvk/anv_blorp.c

index 21cb360..a1e2705 100644 (file)
@@ -138,6 +138,12 @@ struct blorp_address {
    bool local_hint;
 };
 
+static inline bool
+blorp_address_is_null(struct blorp_address address)
+{
+   return address.buffer == NULL && address.offset == 0;
+}
+
 struct blorp_surf
 {
    const struct isl_surf *surf;
index ca9ec7c..925046f 100644 (file)
@@ -1824,6 +1824,12 @@ anv_image_mcs_op(struct anv_cmd_buffer *cmd_buffer,
                              ANV_PIPE_END_OF_PIPE_SYNC_BIT,
                              "before fast clear mcs");
 
+   if (!blorp_address_is_null(surf.clear_color_addr)) {
+      anv_add_pending_pipe_bits(cmd_buffer,
+                                ANV_PIPE_STATE_CACHE_INVALIDATE_BIT,
+                                "before blorp clear color edit");
+   }
+
    switch (mcs_op) {
    case ISL_AUX_OP_FAST_CLEAR:
       blorp_fast_clear(&batch, &surf, format, swizzle,
@@ -1912,6 +1918,12 @@ anv_image_ccs_op(struct anv_cmd_buffer *cmd_buffer,
                              ANV_PIPE_END_OF_PIPE_SYNC_BIT,
                              "before fast clear ccs");
 
+   if (!blorp_address_is_null(surf.clear_color_addr)) {
+      anv_add_pending_pipe_bits(cmd_buffer,
+                                ANV_PIPE_STATE_CACHE_INVALIDATE_BIT,
+                                "before blorp clear color edit");
+   }
+
    switch (ccs_op) {
    case ISL_AUX_OP_FAST_CLEAR:
       blorp_fast_clear(&batch, &surf, format, swizzle,