Mesa (main): iris: Add and use use_surface_state

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


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

Author: Nanley Chery <nanley.g.chery at intel.com>
Date:   Wed Sep 15 07:37:38 2021 -0700

iris: Add and use use_surface_state

This helper simplifies some repeated logic.

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

---

 src/gallium/drivers/iris/iris_state.c | 39 ++++++++++++++---------------------
 1 file changed, 16 insertions(+), 23 deletions(-)

diff --git a/src/gallium/drivers/iris/iris_state.c b/src/gallium/drivers/iris/iris_state.c
index 2798f25bb6a..49acc3252df 100644
--- a/src/gallium/drivers/iris/iris_state.c
+++ b/src/gallium/drivers/iris/iris_state.c
@@ -4878,6 +4878,18 @@ update_clear_value(struct iris_context *ice,
 #endif
 }
 
+static uint32_t
+use_surface_state(struct iris_batch *batch,
+                  struct iris_surface_state *surf_state,
+                  enum isl_aux_usage aux_usage)
+{
+   iris_use_pinned_bo(batch, iris_resource_bo(surf_state->ref.res), false,
+                      IRIS_DOMAIN_NONE);
+
+   return surf_state->ref.offset +
+          surf_state_offset_for_aux(surf_state->aux_usages, aux_usage);
+}
+
 /**
  * Add a surface to the validation list, as well as the buffer containing
  * the corresponding SURFACE_STATE.
@@ -4895,7 +4907,6 @@ use_surface(struct iris_context *ice,
 {
    struct iris_surface *surf = (void *) p_surf;
    struct iris_resource *res = (void *) p_surf->texture;
-   uint32_t offset = 0;
 
    if (GFX_VER == 8 && is_read_surface && !surf->surface_state_read.ref.res) {
       upload_surface_states(ice->state.surface_uploader,
@@ -4926,22 +4937,10 @@ use_surface(struct iris_context *ice,
    iris_use_pinned_bo(batch, res->bo, writeable, access);
 
    if (GFX_VER == 8 && is_read_surface) {
-      iris_use_pinned_bo(batch, iris_resource_bo(surf->surface_state_read.ref.res), false,
-                         IRIS_DOMAIN_NONE);
+      return use_surface_state(batch, &surf->surface_state_read, aux_usage);
    } else {
-      iris_use_pinned_bo(batch, iris_resource_bo(surf->surface_state.ref.res), false,
-                         IRIS_DOMAIN_NONE);
+      return use_surface_state(batch, &surf->surface_state, aux_usage);
    }
-
-   offset = (GFX_VER == 8 && is_read_surface)
-               ? surf->surface_state_read.ref.offset
-               : surf->surface_state.ref.offset;
-
-   return offset +
-          surf_state_offset_for_aux((GFX_VER == 8 && is_read_surface)
-                                       ? surf->surface_state_read.aux_usages
-                                       : surf->surface_state.aux_usages,
-                                    aux_usage);
 }
 
 static uint32_t
@@ -4973,11 +4972,8 @@ use_sampler_view(struct iris_context *ice,
    }
 
    iris_use_pinned_bo(batch, isv->res->bo, false, IRIS_DOMAIN_OTHER_READ);
-   iris_use_pinned_bo(batch, iris_resource_bo(isv->surface_state.ref.res), false,
-                      IRIS_DOMAIN_NONE);
 
-   return isv->surface_state.ref.offset +
-          surf_state_offset_for_aux(isv->surface_state.aux_usages, aux_usage);
+   return use_surface_state(batch, &isv->surface_state, aux_usage);
 }
 
 static uint32_t
@@ -5011,8 +5007,6 @@ use_image(struct iris_batch *batch, struct iris_context *ice,
    bool write = iv->base.shader_access & PIPE_IMAGE_ACCESS_WRITE;
 
    iris_use_pinned_bo(batch, res->bo, write, IRIS_DOMAIN_NONE);
-   iris_use_pinned_bo(batch, iris_resource_bo(iv->surface_state.ref.res),
-                      false, IRIS_DOMAIN_NONE);
 
    if (res->aux.bo)
       iris_use_pinned_bo(batch, res->aux.bo, write, IRIS_DOMAIN_NONE);
@@ -5020,8 +5014,7 @@ use_image(struct iris_batch *batch, struct iris_context *ice,
    enum isl_aux_usage aux_usage =
       iris_image_view_aux_usage(ice, &iv->base, info);
 
-   return iv->surface_state.ref.offset +
-      surf_state_offset_for_aux(iv->surface_state.aux_usages, aux_usage);
+   return use_surface_state(batch, &iv->surface_state, aux_usage);
 }
 
 #define push_bt_entry(addr) \



More information about the mesa-commit mailing list