Instead of doing them in radv_cmd_buffer_set_subpass(). Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>tags/19.1-branchpoint
| @@ -2425,28 +2425,8 @@ static void radv_handle_subpass_image_transition(struct radv_cmd_buffer *cmd_buf | |||
| void | |||
| radv_cmd_buffer_set_subpass(struct radv_cmd_buffer *cmd_buffer, | |||
| const struct radv_subpass *subpass, bool transitions) | |||
| const struct radv_subpass *subpass) | |||
| { | |||
| if (transitions) { | |||
| radv_subpass_barrier(cmd_buffer, &subpass->start_barrier); | |||
| for (unsigned i = 0; i < subpass->color_count; ++i) { | |||
| if (subpass->color_attachments[i].attachment != VK_ATTACHMENT_UNUSED) | |||
| radv_handle_subpass_image_transition(cmd_buffer, | |||
| subpass->color_attachments[i]); | |||
| } | |||
| for (unsigned i = 0; i < subpass->input_count; ++i) { | |||
| radv_handle_subpass_image_transition(cmd_buffer, | |||
| subpass->input_attachments[i]); | |||
| } | |||
| if (subpass->depth_stencil_attachment.attachment != VK_ATTACHMENT_UNUSED) { | |||
| radv_handle_subpass_image_transition(cmd_buffer, | |||
| subpass->depth_stencil_attachment); | |||
| } | |||
| } | |||
| cmd_buffer->state.subpass = subpass; | |||
| cmd_buffer->state.dirty |= RADV_CMD_DIRTY_FRAMEBUFFER; | |||
| @@ -2629,7 +2609,7 @@ VkResult radv_BeginCommandBuffer( | |||
| if (result != VK_SUCCESS) | |||
| return result; | |||
| radv_cmd_buffer_set_subpass(cmd_buffer, subpass, false); | |||
| radv_cmd_buffer_set_subpass(cmd_buffer, subpass); | |||
| } | |||
| if (unlikely(cmd_buffer->device->trace_bo)) { | |||
| @@ -3419,7 +3399,25 @@ radv_cmd_buffer_begin_subpass(struct radv_cmd_buffer *cmd_buffer, | |||
| MAYBE_UNUSED unsigned cdw_max = radeon_check_space(cmd_buffer->device->ws, | |||
| cmd_buffer->cs, 2048); | |||
| radv_cmd_buffer_set_subpass(cmd_buffer, subpass, true); | |||
| radv_subpass_barrier(cmd_buffer, &subpass->start_barrier); | |||
| for (unsigned i = 0; i < subpass->color_count; ++i) { | |||
| if (subpass->color_attachments[i].attachment != VK_ATTACHMENT_UNUSED) | |||
| radv_handle_subpass_image_transition(cmd_buffer, | |||
| subpass->color_attachments[i]); | |||
| } | |||
| for (unsigned i = 0; i < subpass->input_count; ++i) { | |||
| radv_handle_subpass_image_transition(cmd_buffer, | |||
| subpass->input_attachments[i]); | |||
| } | |||
| if (subpass->depth_stencil_attachment.attachment != VK_ATTACHMENT_UNUSED) { | |||
| radv_handle_subpass_image_transition(cmd_buffer, | |||
| subpass->depth_stencil_attachment); | |||
| } | |||
| radv_cmd_buffer_set_subpass(cmd_buffer, subpass); | |||
| radv_cmd_buffer_clear_subpass(cmd_buffer); | |||
| assert(cmd_buffer->cs->cdw <= cdw_max); | |||
| @@ -426,7 +426,7 @@ emit_color_clear(struct radv_cmd_buffer *cmd_buffer, | |||
| .depth_stencil_attachment = (struct radv_subpass_attachment) { VK_ATTACHMENT_UNUSED, VK_IMAGE_LAYOUT_UNDEFINED } | |||
| }; | |||
| radv_cmd_buffer_set_subpass(cmd_buffer, &clear_subpass, false); | |||
| radv_cmd_buffer_set_subpass(cmd_buffer, &clear_subpass); | |||
| radv_CmdBindPipeline(cmd_buffer_h, VK_PIPELINE_BIND_POINT_GRAPHICS, | |||
| pipeline); | |||
| @@ -450,7 +450,7 @@ emit_color_clear(struct radv_cmd_buffer *cmd_buffer, | |||
| radv_CmdDraw(cmd_buffer_h, 3, clear_rect->layerCount, 0, clear_rect->baseArrayLayer); | |||
| } | |||
| radv_cmd_buffer_set_subpass(cmd_buffer, subpass, false); | |||
| radv_cmd_buffer_set_subpass(cmd_buffer, subpass); | |||
| } | |||
| @@ -1287,6 +1287,7 @@ radv_clear_cmask(struct radv_cmd_buffer *cmd_buffer, | |||
| image->cmask.size, value); | |||
| } | |||
| uint32_t | |||
| radv_clear_fmask(struct radv_cmd_buffer *cmd_buffer, | |||
| struct radv_image *image, uint32_t value) | |||
| @@ -678,7 +678,7 @@ radv_cmd_buffer_resolve_subpass(struct radv_cmd_buffer *cmd_buffer) | |||
| .depth_stencil_attachment = { .attachment = VK_ATTACHMENT_UNUSED }, | |||
| }; | |||
| radv_cmd_buffer_set_subpass(cmd_buffer, &resolve_subpass, false); | |||
| radv_cmd_buffer_set_subpass(cmd_buffer, &resolve_subpass); | |||
| VkResult ret = build_resolve_pipeline(cmd_buffer->device, radv_format_meta_fs_key(dst_img->vk_format)); | |||
| if (ret != VK_SUCCESS) { | |||
| @@ -623,7 +623,7 @@ radv_cmd_buffer_resolve_subpass_fs(struct radv_cmd_buffer *cmd_buffer) | |||
| .depth_stencil_attachment = { .attachment = VK_ATTACHMENT_UNUSED }, | |||
| }; | |||
| radv_cmd_buffer_set_subpass(cmd_buffer, &resolve_subpass, false); | |||
| radv_cmd_buffer_set_subpass(cmd_buffer, &resolve_subpass); | |||
| emit_resolve(cmd_buffer, | |||
| src_iview, | |||
| @@ -1183,8 +1183,7 @@ radv_cmd_buffer_upload_alloc(struct radv_cmd_buffer *cmd_buffer, | |||
| void **ptr); | |||
| void | |||
| radv_cmd_buffer_set_subpass(struct radv_cmd_buffer *cmd_buffer, | |||
| const struct radv_subpass *subpass, | |||
| bool transitions); | |||
| const struct radv_subpass *subpass); | |||
| bool | |||
| radv_cmd_buffer_upload_data(struct radv_cmd_buffer *cmd_buffer, | |||
| unsigned size, unsigned alignmnet, | |||