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