iris: Better determine map_would_stall for Z/S
authorNanley Chery <nanley.g.chery@intel.com>
Tue, 23 Jun 2020 17:23:12 +0000 (10:23 -0700)
committerMarge Bot <eric+marge@anholt.net>
Fri, 4 Sep 2020 15:29:57 +0000 (15:29 +0000)
Use iris_has_invalid_primary to determine if mapping a depth or stencil
surface would lead to a stall due to resolving.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6192>

src/gallium/drivers/iris/iris_resource.c

index b358f0c1ec5782e5b9009e6f47c01610795e4689..bfd79603ee879a90916e26fdad5edde3fcdea039 100644 (file)
@@ -1788,27 +1788,12 @@ iris_transfer_map(struct pipe_context *ctx,
       usage |= PIPE_TRANSFER_UNSYNCHRONIZED;
    }
 
-   bool need_resolve = false;
-
-   if (resource->target != PIPE_BUFFER) {
-      bool need_hiz_resolve = iris_resource_level_has_hiz(res, level);
-      bool need_stencil_resolve = res->aux.usage == ISL_AUX_USAGE_STC_CCS;
-
-      bool need_color_resolve =
-         (res->aux.usage == ISL_AUX_USAGE_CCS_D ||
-          res->aux.usage == ISL_AUX_USAGE_CCS_E ||
-          res->aux.usage == ISL_AUX_USAGE_GEN12_CCS_E) &&
-         iris_has_invalid_primary(res, level, 1, box->z, box->depth);
-
-      need_resolve = need_color_resolve ||
-                     need_hiz_resolve ||
-                     need_stencil_resolve;
-   }
-
    bool map_would_stall = false;
 
    if (!(usage & PIPE_TRANSFER_UNSYNCHRONIZED)) {
-      map_would_stall = need_resolve || resource_is_busy(ice, res);
+      map_would_stall =
+         resource_is_busy(ice, res) ||
+         iris_has_invalid_primary(res, level, 1, box->z, box->depth);
 
       if (map_would_stall && (usage & PIPE_TRANSFER_DONTBLOCK) &&
                              (usage & PIPE_TRANSFER_MAP_DIRECTLY))