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

Author: Nanley Chery <[email protected]>
Date:   Wed Jun 21 11:09:41 2023 -0400

iris: Reduce accesses of mod_info->aux_usage

This field will be replaced in an upcoming patch.

Reviewed-by: Lionel Landwerlin <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24120>

---

 src/gallium/drivers/iris/iris_resolve.c  |  2 +-
 src/gallium/drivers/iris/iris_resource.c | 22 +++++++++++-----------
 2 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/src/gallium/drivers/iris/iris_resolve.c 
b/src/gallium/drivers/iris/iris_resolve.c
index 7ae2f072861..9d9ece3fd59 100644
--- a/src/gallium/drivers/iris/iris_resolve.c
+++ b/src/gallium/drivers/iris/iris_resolve.c
@@ -975,7 +975,7 @@ iris_resource_set_aux_state(struct iris_context *ice,
    }
 
    if (res->mod_info && !res->mod_info->supports_clear_color) {
-      assert(res->mod_info->aux_usage != ISL_AUX_USAGE_NONE);
+      assert(isl_drm_modifier_has_aux(res->mod_info->modifier));
       if (aux_state == ISL_AUX_STATE_CLEAR ||
           aux_state == ISL_AUX_STATE_COMPRESSED_CLEAR ||
           aux_state == ISL_AUX_STATE_PARTIAL_CLEAR) {
diff --git a/src/gallium/drivers/iris/iris_resource.c 
b/src/gallium/drivers/iris/iris_resource.c
index 29aa5221c32..5251a2277a7 100644
--- a/src/gallium/drivers/iris/iris_resource.c
+++ b/src/gallium/drivers/iris/iris_resource.c
@@ -733,7 +733,7 @@ iris_resource_configure_main(const struct iris_screen 
*screen,
 
    isl_surf_usage_flags_t usage = 0;
 
-   if (res->mod_info && res->mod_info->aux_usage == ISL_AUX_USAGE_NONE)
+   if (res->mod_info && !isl_drm_modifier_has_aux(modifier))
       usage |= ISL_SURF_USAGE_DISABLE_AUX_BIT;
 
    if (templ->usage == PIPE_USAGE_STAGING)
@@ -888,7 +888,8 @@ iris_resource_configure_aux(struct iris_screen *screen,
    switch (res->aux.usage) {
    case ISL_AUX_USAGE_NONE:
       /* Having no aux buffer is only okay if there's no modifier with aux. */
-      return !res->mod_info || res->mod_info->aux_usage == ISL_AUX_USAGE_NONE;
+      return !res->mod_info ||
+             !isl_drm_modifier_has_aux(res->mod_info->modifier);
    case ISL_AUX_USAGE_HIZ:
    case ISL_AUX_USAGE_HIZ_CCS:
    case ISL_AUX_USAGE_HIZ_CCS_WT:
@@ -1121,13 +1122,12 @@ iris_resource_finish_aux_import(struct pipe_screen 
*pscreen,
          map_aux_addresses(screen, r[0], res->external_format, 0);
          map_aux_addresses(screen, r[1], res->external_format, 1);
       }
-      assert(!isl_aux_usage_has_fast_clears(res->mod_info->aux_usage));
       break;
    case I915_FORMAT_MOD_4_TILED_DG2_MC_CCS:
-      assert(!isl_aux_usage_has_fast_clears(res->mod_info->aux_usage));
+      assert(num_main_planes == num_planes);
       break;
    default:
-      assert(res->mod_info->aux_usage == ISL_AUX_USAGE_NONE);
+      assert(!isl_drm_modifier_has_aux(res->mod_info->modifier));
       break;
    }
 }
@@ -1602,7 +1602,7 @@ iris_flush_resource(struct pipe_context *ctx, struct 
pipe_resource *resource)
    iris_resource_prepare_access(ice, res,
                                 0, INTEL_REMAINING_LEVELS,
                                 0, INTEL_REMAINING_LAYERS,
-                                mod ? mod->aux_usage : ISL_AUX_USAGE_NONE,
+                                mod ? res->aux.usage : ISL_AUX_USAGE_NONE,
                                 mod ? mod->supports_clear_color : false);
 
    if (!res->mod_info && res->aux.usage != ISL_AUX_USAGE_NONE) {
@@ -1757,7 +1757,7 @@ iris_resource_disable_aux_on_first_query(struct 
pipe_resource *resource,
 {
    struct iris_resource *res = (struct iris_resource *)resource;
    bool mod_with_aux =
-      res->mod_info && res->mod_info->aux_usage != ISL_AUX_USAGE_NONE;
+      res->mod_info && isl_drm_modifier_has_aux(res->mod_info->modifier);
 
    /* Disable aux usage if explicit flush not set and this is the first time
     * we are dealing with this resource and the resource was not created with
@@ -1784,7 +1784,7 @@ iris_resource_get_param(struct pipe_screen *pscreen,
    struct iris_screen *screen = (struct iris_screen *)pscreen;
    struct iris_resource *res = (struct iris_resource *)resource;
    bool mod_with_aux =
-      res->mod_info && res->mod_info->aux_usage != ISL_AUX_USAGE_NONE;
+      res->mod_info && isl_drm_modifier_has_aux(res->mod_info->modifier);
    bool wants_aux = mod_with_aux && plane > 0;
    bool wants_cc = mod_with_aux &&
       mod_plane_is_clear_color(res->mod_info->modifier, plane);
@@ -1879,7 +1879,7 @@ iris_resource_get_handle(struct pipe_screen *pscreen,
    struct iris_screen *screen = (struct iris_screen *) pscreen;
    struct iris_resource *res = (struct iris_resource *)resource;
    bool mod_with_aux =
-      res->mod_info && res->mod_info->aux_usage != ISL_AUX_USAGE_NONE;
+      res->mod_info && isl_drm_modifier_has_aux(res->mod_info->modifier);
 
    iris_resource_disable_aux_on_first_query(resource, usage);
    iris_resource_disable_suballoc_on_first_query(pscreen, ctx, res);
@@ -1908,8 +1908,8 @@ iris_resource_get_handle(struct pipe_screen *pscreen,
 
 #ifndef NDEBUG
    enum isl_aux_usage allowed_usage =
-      usage & PIPE_HANDLE_USAGE_EXPLICIT_FLUSH ? res->aux.usage :
-      res->mod_info ? res->mod_info->aux_usage : ISL_AUX_USAGE_NONE;
+      (usage & PIPE_HANDLE_USAGE_EXPLICIT_FLUSH) || mod_with_aux ?
+      res->aux.usage : ISL_AUX_USAGE_NONE;
 
    if (res->aux.usage != allowed_usage) {
       enum isl_aux_state aux_state = iris_resource_get_aux_state(res, 0, 0);

Reply via email to