From 16391645efd42ba203a821691aa4840792a501c4 Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Fri, 26 Jan 2024 12:15:24 +0200 Subject: [PATCH] anv: add check that in renderpass barriers apply to attachments Signed-off-by: Lionel Landwerlin Reviewed-by: Ivan Briano Part-of: --- src/intel/vulkan/anv_private.h | 18 ++++++++++++++++++ src/intel/vulkan/genX_cmd_buffer.c | 2 ++ 2 files changed, 20 insertions(+) diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index 353b13c3cd3..cdab06c7c88 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -5329,6 +5329,24 @@ void anv_image_fill_surface_state(struct anv_device *device, enum anv_image_view_state_flags flags, struct anv_surface_state *state_inout); +static inline bool +anv_cmd_graphics_state_has_image_as_attachment(const struct anv_cmd_graphics_state *state, + const struct anv_image *image) +{ + for (unsigned a = 0; a < state->color_att_count; a++) { + if (state->color_att[a].iview && + state->color_att[a].iview->image == image) + return true; + } + + if (state->depth_att.iview && state->depth_att.iview->image == image) + return true; + if (state->stencil_att.iview && state->stencil_att.iview->image == image) + return true; + + return false; +} + struct anv_image_create_info { const VkImageCreateInfo *vk_info; diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index 941e2b4a0bd..52970d78bc5 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -3541,6 +3541,8 @@ cmd_buffer_barrier(struct anv_cmd_buffer *cmd_buffer, */ if (!cmd_buffer->vk.runtime_rp_barrier && cmd_buffer->vk.render_pass != NULL) { + assert(anv_cmd_graphics_state_has_image_as_attachment(&cmd_buffer->state.gfx, + image)); VkImageLayout subpass_att_layout, subpass_stencil_att_layout; vk_command_buffer_get_attachment_layout(