From 22be08a21e9ec7dbe5d6d0be8cbce931d064a554 Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Fri, 24 Jun 2022 16:39:53 +0200 Subject: [PATCH] tu: Remove usage of RenderPassBeginInfo More preparation for using this with dynamic rendering. Part-of: --- src/freedreno/vulkan/tu_clear_blit.c | 20 ++++++++++---------- src/freedreno/vulkan/tu_cmd_buffer.c | 10 +++++----- src/freedreno/vulkan/tu_lrz.c | 4 ++-- src/freedreno/vulkan/tu_private.h | 6 +++--- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/freedreno/vulkan/tu_clear_blit.c b/src/freedreno/vulkan/tu_clear_blit.c index 7a374628c1e..ca0b1fcf2a1 100644 --- a/src/freedreno/vulkan/tu_clear_blit.c +++ b/src/freedreno/vulkan/tu_clear_blit.c @@ -2836,7 +2836,7 @@ clear_sysmem_attachment(struct tu_cmd_buffer *cmd, struct tu_cs *cs, VkFormat vk_format, VkImageAspectFlags clear_mask, - const VkRenderPassBeginInfo *info, + const VkClearValue *value, uint32_t a, bool separate_ds) { @@ -2852,8 +2852,9 @@ clear_sysmem_attachment(struct tu_cmd_buffer *cmd, ops->setup(cmd, cs, format, format, clear_mask, 0, true, iview->view.ubwc_enabled, cmd->state.pass->attachments[a].samples); - ops->coords(cs, &info->renderArea.offset, NULL, &info->renderArea.extent); - ops->clear_value(cs, format, &info->pClearValues[a]); + ops->coords(cs, &cmd->state.render_area.offset, NULL, + &cmd->state.render_area.extent); + ops->clear_value(cs, format, value); for_each_layer(i, clear_views, fb->layers) { if (separate_ds) { @@ -2879,7 +2880,7 @@ void tu_clear_sysmem_attachment(struct tu_cmd_buffer *cmd, struct tu_cs *cs, uint32_t a, - const VkRenderPassBeginInfo *info) + const VkClearValue *value) { const struct tu_render_pass_attachment *attachment = &cmd->state.pass->attachments[a]; @@ -2890,15 +2891,15 @@ tu_clear_sysmem_attachment(struct tu_cmd_buffer *cmd, if (attachment->format == VK_FORMAT_D32_SFLOAT_S8_UINT) { if (attachment->clear_mask & VK_IMAGE_ASPECT_DEPTH_BIT) { clear_sysmem_attachment(cmd, cs, VK_FORMAT_D32_SFLOAT, VK_IMAGE_ASPECT_COLOR_BIT, - info, a, true); + value, a, true); } if (attachment->clear_mask & VK_IMAGE_ASPECT_STENCIL_BIT) { clear_sysmem_attachment(cmd, cs, VK_FORMAT_S8_UINT, VK_IMAGE_ASPECT_COLOR_BIT, - info, a, true); + value, a, true); } } else { clear_sysmem_attachment(cmd, cs, attachment->format, attachment->clear_mask, - info, a, false); + value, a, false); } /* The spec doesn't explicitly say, but presumably the initial renderpass @@ -2926,7 +2927,7 @@ void tu_clear_gmem_attachment(struct tu_cmd_buffer *cmd, struct tu_cs *cs, uint32_t a, - const VkRenderPassBeginInfo *info) + const VkClearValue *value) { const struct tu_render_pass_attachment *attachment = &cmd->state.pass->attachments[a]; @@ -2936,8 +2937,7 @@ tu_clear_gmem_attachment(struct tu_cmd_buffer *cmd, tu_cs_emit_regs(cs, A6XX_RB_MSAA_CNTL(tu_msaa_samples(attachment->samples))); - tu_emit_clear_gmem_attachment(cmd, cs, a, attachment->clear_mask, - &info->pClearValues[a]); + tu_emit_clear_gmem_attachment(cmd, cs, a, attachment->clear_mask, value); } static void diff --git a/src/freedreno/vulkan/tu_cmd_buffer.c b/src/freedreno/vulkan/tu_cmd_buffer.c index 4a6ad580e51..c246d90293b 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.c +++ b/src/freedreno/vulkan/tu_cmd_buffer.c @@ -1235,7 +1235,7 @@ tu_set_input_attachments(struct tu_cmd_buffer *cmd, const struct tu_subpass *sub static void tu_emit_renderpass_begin(struct tu_cmd_buffer *cmd, - const VkRenderPassBeginInfo *info) + const VkClearValue *clear_values) { struct tu_cs *cs = &cmd->draw_cs; @@ -1246,14 +1246,14 @@ tu_emit_renderpass_begin(struct tu_cmd_buffer *cmd, tu6_emit_blit_scissor(cmd, cs, false); for (uint32_t i = 0; i < cmd->state.pass->attachment_count; ++i) - tu_clear_gmem_attachment(cmd, cs, i, info); + tu_clear_gmem_attachment(cmd, cs, i, &clear_values[i]); tu_cond_exec_end(cs); tu_cond_exec_start(cs, CP_COND_EXEC_0_RENDER_MODE_SYSMEM); for (uint32_t i = 0; i < cmd->state.pass->attachment_count; ++i) - tu_clear_sysmem_attachment(cmd, cs, i, info); + tu_clear_sysmem_attachment(cmd, cs, i, &clear_values[i]); tu_cond_exec_end(cs); } @@ -3582,11 +3582,11 @@ tu_CmdBeginRenderPass2(VkCommandBuffer commandBuffer, if (pass->subpasses[0].feedback_invalidate) cmd->state.renderpass_cache.flush_bits |= TU_CMD_FLAG_CACHE_INVALIDATE; - tu_lrz_begin_renderpass(cmd, pRenderPassBegin); + tu_lrz_begin_renderpass(cmd, pRenderPassBegin->pClearValues); cmd->trace_renderpass_start = u_trace_end_iterator(&cmd->trace); - tu_emit_renderpass_begin(cmd, pRenderPassBegin); + tu_emit_renderpass_begin(cmd, pRenderPassBegin->pClearValues); tu_emit_subpass_begin(cmd); } diff --git a/src/freedreno/vulkan/tu_lrz.c b/src/freedreno/vulkan/tu_lrz.c index d820823f0d8..07d05087c51 100644 --- a/src/freedreno/vulkan/tu_lrz.c +++ b/src/freedreno/vulkan/tu_lrz.c @@ -277,7 +277,7 @@ tu_lrz_init_secondary(struct tu_cmd_buffer *cmd, void tu_lrz_begin_renderpass(struct tu_cmd_buffer *cmd, - const VkRenderPassBeginInfo *pRenderPassBegin) + const VkClearValue *clear_values) { const struct tu_render_pass *pass = cmd->state.pass; @@ -310,7 +310,7 @@ tu_lrz_begin_renderpass(struct tu_cmd_buffer *cmd, const struct tu_render_pass_attachment *att = &cmd->state.pass->attachments[a]; tu_lrz_init_state(cmd, att, cmd->state.attachments[a]); if (att->clear_mask & (VK_IMAGE_ASPECT_COLOR_BIT | VK_IMAGE_ASPECT_DEPTH_BIT)) { - VkClearValue clear = pRenderPassBegin->pClearValues[a]; + VkClearValue clear = clear_values[a]; cmd->state.lrz.depth_clear_value = clear; cmd->state.lrz.fast_clear = cmd->state.lrz.fast_clear && (clear.depthStencil.depth == 0.f || diff --git a/src/freedreno/vulkan/tu_private.h b/src/freedreno/vulkan/tu_private.h index f7e5d4a3695..7eeef5c0f2f 100644 --- a/src/freedreno/vulkan/tu_private.h +++ b/src/freedreno/vulkan/tu_private.h @@ -1725,7 +1725,7 @@ tu_lrz_clear_depth_image(struct tu_cmd_buffer *cmd, void tu_lrz_begin_renderpass(struct tu_cmd_buffer *cmd, - const VkRenderPassBeginInfo *pRenderPassBegin); + const VkClearValue *clear_values); void tu_lrz_begin_secondary_cmdbuf(struct tu_cmd_buffer *cmd); @@ -1821,13 +1821,13 @@ void tu_clear_sysmem_attachment(struct tu_cmd_buffer *cmd, struct tu_cs *cs, uint32_t a, - const VkRenderPassBeginInfo *info); + const VkClearValue *value); void tu_clear_gmem_attachment(struct tu_cmd_buffer *cmd, struct tu_cs *cs, uint32_t a, - const VkRenderPassBeginInfo *info); + const VkClearValue *value); void tu_load_gmem_attachment(struct tu_cmd_buffer *cmd,