summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>2020-09-08 10:08:45 -0400
committerMarge Bot <eric+marge@anholt.net>2021-02-19 02:05:13 +0000
commit466efcb2473c0bc63318a9b8bb83f8c1481c4bdb (patch)
tree66f9219fd143158b2b390211cfad09d6b3346145
parent6cbd25c04b98e3e54e7092db78b94a431527491e (diff)
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 <bas@basnieuwenhuizen.nl> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8945>
-rw-r--r--src/gallium/drivers/zink/zink_context.c9
-rw-r--r--src/gallium/drivers/zink/zink_context.h2
-rw-r--r--src/gallium/drivers/zink/zink_draw.c8
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);
}
}