From 466efcb2473c0bc63318a9b8bb83f8c1481c4bdb Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 8 Sep 2020 10:08:45 -0400 Subject: zink: add general zink_resource_barrier() wrapper this simplifies a bit of code where we may want to be throwing in barriers regardless of the resource type Reviewed-by: Bas Nieuwenhuizen Part-of: --- src/gallium/drivers/zink/zink_context.c | 9 +++++++++ src/gallium/drivers/zink/zink_context.h | 2 ++ src/gallium/drivers/zink/zink_draw.c | 8 ++------ 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index 40303f81f13..a6f5802a1b4 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -1223,6 +1223,15 @@ zink_resource_needs_barrier(struct zink_resource *res, VkImageLayout layout, VkA return zink_resource_image_needs_barrier(res, layout, flags, pipeline); } +void +zink_resource_barrier(struct zink_batch *batch, struct zink_resource *res, VkImageLayout layout, VkAccessFlags flags, VkPipelineStageFlags pipeline) +{ + if (res->base.target == PIPE_BUFFER) + zink_resource_buffer_barrier(batch, res, flags, pipeline); + else + zink_resource_image_barrier(batch, res, layout, flags, pipeline); +} + VkShaderStageFlagBits zink_shader_stage(enum pipe_shader_type type) { diff --git a/src/gallium/drivers/zink/zink_context.h b/src/gallium/drivers/zink/zink_context.h index 7de8c36a1fb..224c4f71eac 100644 --- a/src/gallium/drivers/zink/zink_context.h +++ b/src/gallium/drivers/zink/zink_context.h @@ -225,6 +225,8 @@ zink_resource_image_barrier(struct zink_batch *batch, struct zink_resource *res, bool zink_resource_needs_barrier(struct zink_resource *res, VkImageLayout layout, VkAccessFlags flags, VkPipelineStageFlags pipeline); +void +zink_resource_barrier(struct zink_batch *batch, struct zink_resource *res, VkImageLayout layout, VkAccessFlags flags, VkPipelineStageFlags pipeline); void zink_begin_render_pass(struct zink_context *ctx, diff --git a/src/gallium/drivers/zink/zink_draw.c b/src/gallium/drivers/zink/zink_draw.c index 9a8f5472170..80418dd2df6 100644 --- a/src/gallium/drivers/zink/zink_draw.c +++ b/src/gallium/drivers/zink/zink_draw.c @@ -497,12 +497,8 @@ update_descriptors(struct zink_context *ctx, struct zink_screen *screen, bool is else batch = zink_batch_no_rp(ctx); - if (transitions[i].res->base.target == PIPE_BUFFER) - zink_resource_buffer_barrier(batch, transitions[i].res, - transitions[i].access, transitions[i].stage); - else - zink_resource_image_barrier(batch, transitions[i].res, - transitions[i].layout, transitions[i].access, transitions[i].stage); + zink_resource_barrier(batch, transitions[i].res, + transitions[i].layout, transitions[i].access, transitions[i].stage); } } -- cgit v1.2.3