diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index a9c697c10f4..67b00a5149c 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -9153,6 +9153,10 @@ radv_handle_color_fbfetch_output(struct radv_cmd_buffer *cmd_buffer, uint32_t in att->layout = VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT; + cmd_buffer->state.flush_bits |= radv_dst_access_flush( + cmd_buffer, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT, + VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT | VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT, att->iview->image); + cmd_buffer->state.dirty |= RADV_CMD_DIRTY_FRAMEBUFFER; } @@ -9187,6 +9191,11 @@ radv_handle_depth_fbfetch_output(struct radv_cmd_buffer *cmd_buffer) .layerCount = att->iview->vk.layer_count, }; + /* Consider previous rendering work for WAW hazards. */ + cmd_buffer->state.flush_bits |= + radv_src_access_flush(cmd_buffer, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT, + VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT, att->iview->image); + /* Force a transition to FEEDBACK_LOOP_OPTIMAL to decompress HTILE. */ radv_handle_image_transition(cmd_buffer, att->iview->image, att->layout, VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT, RADV_QUEUE_GENERAL, @@ -9194,6 +9203,10 @@ radv_handle_depth_fbfetch_output(struct radv_cmd_buffer *cmd_buffer) att->layout = VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT; + cmd_buffer->state.flush_bits |= radv_dst_access_flush( + cmd_buffer, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT, + VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT | VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT, att->iview->image); + cmd_buffer->state.dirty |= RADV_CMD_DIRTY_FRAMEBUFFER; }