From ef99ceaec290fa00e7f4a408276f7ce578b5b2f7 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 5 Apr 2022 14:56:24 -0400 Subject: [PATCH] zink: add a ctx param to zink_descriptor_util_image_layout_eval Reviewed-by: Dave Airlie Part-of: --- src/gallium/drivers/zink/zink_context.c | 8 ++++---- src/gallium/drivers/zink/zink_descriptors.c | 2 +- src/gallium/drivers/zink/zink_descriptors.h | 2 +- src/gallium/drivers/zink/zink_draw.cpp | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index f238be4d2f7..4e38cbc979c 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -1291,8 +1291,8 @@ unbind_shader_image_counts(struct zink_context *ctx, struct zink_resource *res, ALWAYS_INLINE static void check_for_layout_update(struct zink_context *ctx, struct zink_resource *res, bool is_compute) { - VkImageLayout layout = res->bind_count[is_compute] ? zink_descriptor_util_image_layout_eval(res, is_compute) : VK_IMAGE_LAYOUT_UNDEFINED; - VkImageLayout other_layout = res->bind_count[!is_compute] ? zink_descriptor_util_image_layout_eval(res, !is_compute) : VK_IMAGE_LAYOUT_UNDEFINED; + VkImageLayout layout = res->bind_count[is_compute] ? zink_descriptor_util_image_layout_eval(ctx, res, is_compute) : VK_IMAGE_LAYOUT_UNDEFINED; + VkImageLayout other_layout = res->bind_count[!is_compute] ? zink_descriptor_util_image_layout_eval(ctx, res, !is_compute) : VK_IMAGE_LAYOUT_UNDEFINED; if (res->bind_count[is_compute] && layout && res->layout != layout) _mesa_set_add(ctx->need_barriers[is_compute], res); if (res->bind_count[!is_compute] && other_layout && (layout != other_layout || res->layout != other_layout)) @@ -1695,7 +1695,7 @@ zink_make_texture_handle_resident(struct pipe_context *pctx, uint64_t handle, bo VkDescriptorImageInfo *ii = &ctx->di.bindless[0].img_infos[handle]; ii->sampler = bd->sampler->sampler; ii->imageView = ds->surface->image_view; - ii->imageLayout = zink_descriptor_util_image_layout_eval(res, false); + ii->imageLayout = zink_descriptor_util_image_layout_eval(ctx, res, false); flush_pending_clears(ctx, res); check_for_layout_update(ctx, res, false); check_for_layout_update(ctx, res, true); @@ -2940,7 +2940,7 @@ resource_check_defer_image_barrier(struct zink_context *ctx, struct zink_resourc if (res->bind_count[!is_compute] && is_shader) { /* if the layout is the same between gfx and compute, do nothing */ - if (layout == zink_descriptor_util_image_layout_eval(res, !is_compute)) + if (layout == zink_descriptor_util_image_layout_eval(ctx, res, !is_compute)) return; } /* queue a layout change if a layout change will be needed */ diff --git a/src/gallium/drivers/zink/zink_descriptors.c b/src/gallium/drivers/zink/zink_descriptors.c index de680508f9b..b638a09d457 100644 --- a/src/gallium/drivers/zink/zink_descriptors.c +++ b/src/gallium/drivers/zink/zink_descriptors.c @@ -559,7 +559,7 @@ zink_descriptor_util_push_layouts_get(struct zink_context *ctx, struct zink_desc } VkImageLayout -zink_descriptor_util_image_layout_eval(const struct zink_resource *res, bool is_compute) +zink_descriptor_util_image_layout_eval(const struct zink_context *ctx, const struct zink_resource *res, bool is_compute) { if (res->bindless[0] || res->bindless[1]) { /* bindless needs most permissive layout */ diff --git a/src/gallium/drivers/zink/zink_descriptors.h b/src/gallium/drivers/zink/zink_descriptors.h index 5e56e870b3b..0eb4cf528ce 100644 --- a/src/gallium/drivers/zink/zink_descriptors.h +++ b/src/gallium/drivers/zink/zink_descriptors.h @@ -217,7 +217,7 @@ zink_descriptor_util_init_fbfetch(struct zink_context *ctx); bool zink_descriptor_util_push_layouts_get(struct zink_context *ctx, struct zink_descriptor_layout **dsls, struct zink_descriptor_layout_key **layout_keys); VkImageLayout -zink_descriptor_util_image_layout_eval(const struct zink_resource *res, bool is_compute); +zink_descriptor_util_image_layout_eval(const struct zink_context *ctx, const struct zink_resource *res, bool is_compute); void zink_descriptors_init_bindless(struct zink_context *ctx); void diff --git a/src/gallium/drivers/zink/zink_draw.cpp b/src/gallium/drivers/zink/zink_draw.cpp index d9ff11c75fe..74672205354 100644 --- a/src/gallium/drivers/zink/zink_draw.cpp +++ b/src/gallium/drivers/zink/zink_draw.cpp @@ -420,7 +420,7 @@ update_barriers(struct zink_context *ctx, bool is_compute) if (res->base.b.target == PIPE_BUFFER) zink_resource_buffer_barrier(ctx, res, access, pipeline); else { - VkImageLayout layout = zink_descriptor_util_image_layout_eval(res, is_compute); + VkImageLayout layout = zink_descriptor_util_image_layout_eval(ctx, res, is_compute); if (layout != res->layout) zink_resource_image_barrier(ctx, res, layout, access, pipeline); }