zink: add generic wrapper for checking whether a resource needs a barrier
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Wed, 19 Aug 2020 19:41:41 +0000 (15:41 -0400)
committerMarge Bot <eric+marge@anholt.net>
Fri, 19 Feb 2021 02:05:13 +0000 (02:05 +0000)
handy to not need to check ahead of time

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8945>

src/gallium/drivers/zink/zink_context.c
src/gallium/drivers/zink/zink_context.h

index 0d1df53..f68261f 100644 (file)
@@ -1206,6 +1206,14 @@ zink_resource_buffer_barrier(VkCommandBuffer cmdbuf, struct zink_resource *res,
    res->access_stage = pipeline;
 }
 
+bool
+zink_resource_needs_barrier(struct zink_resource *res, unsigned flags, VkPipelineStageFlags pipeline)
+{
+   if (res->base.target == PIPE_BUFFER)
+      return zink_resource_buffer_needs_barrier(res, flags, pipeline);
+   return zink_resource_image_needs_barrier(res, flags, pipeline);
+}
+
 VkShaderStageFlagBits
 zink_shader_stage(enum pipe_shader_type type)
 {
index 8a8142a..1dd832f 100644 (file)
@@ -223,6 +223,9 @@ void
 zink_resource_barrier(VkCommandBuffer cmdbuf, struct zink_resource *res,
                       VkImageLayout new_layout, VkPipelineStageFlags pipeline);
 
+bool
+zink_resource_needs_barrier(struct zink_resource *res, unsigned flags, VkPipelineStageFlags pipeline);
+
  void
  zink_begin_render_pass(struct zink_context *ctx,
                         struct zink_batch *batch);