Mesa (main): iris: Drop the iris_resource aux usage bit fields

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Feb 10 05:10:56 UTC 2022


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

Author: Nanley Chery <nanley.g.chery at intel.com>
Date:   Mon Jan 17 13:34:06 2022 -0500

iris: Drop the iris_resource aux usage bit fields

A big reason we had these fields was to help create a set of surface
states for a resource. That's largely being handled through other means
now.

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

---

 src/gallium/drivers/iris/iris_resource.c | 12 ------------
 src/gallium/drivers/iris/iris_resource.h | 12 ------------
 src/gallium/drivers/iris/iris_state.c    | 16 ++++++++++------
 3 files changed, 10 insertions(+), 30 deletions(-)

diff --git a/src/gallium/drivers/iris/iris_resource.c b/src/gallium/drivers/iris/iris_resource.c
index 248dfd84826..6e0abdfa938 100644
--- a/src/gallium/drivers/iris/iris_resource.c
+++ b/src/gallium/drivers/iris/iris_resource.c
@@ -401,8 +401,6 @@ iris_resource_disable_aux(struct iris_resource *res)
    free(res->aux.state);
 
    res->aux.usage = ISL_AUX_USAGE_NONE;
-   res->aux.possible_usages = 1 << ISL_AUX_USAGE_NONE;
-   res->aux.sampler_usages = 1 << ISL_AUX_USAGE_NONE;
    res->aux.surf.size_B = 0;
    res->aux.bo = NULL;
    res->aux.extra_aux.surf.size_B = 0;
@@ -486,9 +484,6 @@ iris_alloc_resource(struct pipe_screen *pscreen,
    pipe_reference_init(&res->base.b.reference, 1);
    threaded_resource_init(&res->base.b, false, 0);
 
-   res->aux.possible_usages = 1 << ISL_AUX_USAGE_NONE;
-   res->aux.sampler_usages = 1 << ISL_AUX_USAGE_NONE;
-
    if (templ->target == PIPE_BUFFER)
       util_range_init(&res->valid_buffer_range);
 
@@ -805,11 +800,6 @@ iris_resource_configure_aux(struct iris_screen *screen,
       }
    }
 
-   res->aux.possible_usages |= 1 << res->aux.usage;
-
-   if (!has_hiz || iris_sample_with_depth_aux(devinfo, res))
-      res->aux.sampler_usages = res->aux.possible_usages;
-
    enum isl_aux_state initial_state;
    switch (res->aux.usage) {
    case ISL_AUX_USAGE_NONE:
@@ -1484,8 +1474,6 @@ iris_reallocate_resource_inplace(struct iris_context *ice,
    old_res->aux.clear_color_bo = new_res->aux.clear_color_bo;
    old_res->aux.clear_color_offset = new_res->aux.clear_color_offset;
    old_res->aux.usage = new_res->aux.usage;
-   old_res->aux.possible_usages = new_res->aux.possible_usages;
-   old_res->aux.sampler_usages = new_res->aux.sampler_usages;
 
    if (new_res->aux.state) {
       assert(old_res->aux.state);
diff --git a/src/gallium/drivers/iris/iris_resource.h b/src/gallium/drivers/iris/iris_resource.h
index 806b7dac08c..78d31ac9f00 100644
--- a/src/gallium/drivers/iris/iris_resource.h
+++ b/src/gallium/drivers/iris/iris_resource.h
@@ -144,18 +144,6 @@ struct iris_resource {
        */
       enum isl_aux_usage usage;
 
-      /**
-       * A bitfield of ISL_AUX_* modes that might this resource might use.
-       *
-       * For example, a surface might use both CCS_E and CCS_D at times.
-       */
-      unsigned possible_usages;
-
-      /**
-       * Same as possible_usages, but only with modes supported for sampling.
-       */
-      unsigned sampler_usages;
-
       /**
        * \brief Maps miptree slices to their current aux state.
        *
diff --git a/src/gallium/drivers/iris/iris_state.c b/src/gallium/drivers/iris/iris_state.c
index a607af4e810..644dc7199c7 100644
--- a/src/gallium/drivers/iris/iris_state.c
+++ b/src/gallium/drivers/iris/iris_state.c
@@ -2533,7 +2533,8 @@ iris_create_sampler_view(struct pipe_context *ctx,
               !iris_sample_with_depth_aux(devinfo, isv->res)) {
       aux_usages = 1 << ISL_AUX_USAGE_NONE;
    } else {
-      aux_usages = isv->res->aux.sampler_usages;
+      aux_usages = 1 << ISL_AUX_USAGE_NONE |
+                   1 << isv->res->aux.usage;
    }
 
    alloc_surface_states(&isv->surface_state, aux_usages);
@@ -2702,7 +2703,8 @@ iris_create_surface(struct pipe_context *ctx,
        !isl_format_supports_ccs_e(devinfo, view->format)) {
       aux_usages = 1 << ISL_AUX_USAGE_NONE;
    } else {
-      aux_usages = res->aux.possible_usages;
+      aux_usages = 1 << ISL_AUX_USAGE_NONE |
+                   1 << res->aux.usage;
    }
 
    alloc_surface_states(&surf->surface_state, aux_usages);
@@ -2736,7 +2738,7 @@ iris_create_surface(struct pipe_context *ctx,
     * and create an uncompressed view with multiple layers, however.
     */
    assert(!isl_format_is_compressed(fmt.fmt));
-   assert(res->aux.possible_usages == 1 << ISL_AUX_USAGE_NONE);
+   assert(res->aux.usage == ISL_AUX_USAGE_NONE);
    assert(res->surf.samples == 1);
    assert(view->levels == 1);
 
@@ -2837,9 +2839,11 @@ iris_set_shader_images(struct pipe_context *ctx,
 
          enum isl_format isl_fmt = iris_image_view_get_format(ice, img);
 
-         /* Render compression with images supported on gfx12+ only. */
-         unsigned aux_usages = GFX_VER >= 12 ? res->aux.possible_usages :
-            1 << ISL_AUX_USAGE_NONE;
+         unsigned aux_usages = 1 << ISL_AUX_USAGE_NONE;
+
+         /* Gfx12+ supports render compression for images */
+         if (GFX_VER >= 12)
+            aux_usages |= 1 << res->aux.usage;
 
          alloc_surface_states(&iv->surface_state, aux_usages);
          iv->surface_state.bo_address = res->bo->address;



More information about the mesa-commit mailing list