From eb51fd04147418fbf71415f2e6075dc4834223b0 Mon Sep 17 00:00:00 2001 From: Nanley Chery Date: Wed, 15 Sep 2021 07:37:38 -0700 Subject: [PATCH] iris: Add and use use_surface_state This helper simplifies some repeated logic. Reviewed-by: Kenneth Graunke Part-of: --- 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) \