From 225c35a5daf2eb4e563a84a7a5b4ff1cd0f97cb2 Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Tue, 9 Dec 2025 15:00:09 -0500 Subject: [PATCH] tu: Fill render pass state when resuming We forgot to call tu_fill_render_pass_state when resuming because it was mixed in with emitting commands for the start of the subpass. Fix that by pulling it out. This adds some duplication, but I think it's better than mixing command emission and CPU-side state setup in the same function. Fixes: cb0f414b2ae ("tu: Add support for suspending and resuming renderpasses") Part-of: (cherry picked from commit f734dff41994d016204e0c1e49fdbdb056b94159) Conflicts: src/freedreno/vulkan/tu_cmd_buffer.cc --- .pick_status.json | 2 +- src/freedreno/vulkan/tu_cmd_buffer.cc | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index f1a26986b41..8bb58bcd5ab 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1534,7 +1534,7 @@ "description": "tu: Fill render pass state when resuming", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "cb0f414b2aed88f48b2593dad833844be2f5f42b", "notes": null diff --git a/src/freedreno/vulkan/tu_cmd_buffer.cc b/src/freedreno/vulkan/tu_cmd_buffer.cc index 6038b7ad480..4a0111a6e4f 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.cc +++ b/src/freedreno/vulkan/tu_cmd_buffer.cc @@ -5731,8 +5731,6 @@ template static void tu_emit_subpass_begin(struct tu_cmd_buffer *cmd) { - tu_fill_render_pass_state(&cmd->state.vk_rp, cmd->state.pass, cmd->state.subpass); - struct tu_resolve_group resolve_group = {}; tu_emit_subpass_begin_gmem(cmd, &resolve_group); @@ -5831,6 +5829,7 @@ tu_CmdBeginRenderPass2(VkCommandBuffer commandBuffer, tu_lrz_begin_renderpass(cmd); + tu_fill_render_pass_state(&cmd->state.vk_rp, pass, cmd->state.subpass); tu_emit_renderpass_begin(cmd); tu_emit_subpass_begin(cmd); @@ -5974,6 +5973,8 @@ tu_CmdBeginRendering(VkCommandBuffer commandBuffer, cmd->state.suspended_pass.gmem_layout = cmd->state.gmem_layout; } + tu_fill_render_pass_state(&cmd->state.vk_rp, cmd->state.pass, cmd->state.subpass); + if (!resuming) { tu_emit_renderpass_begin(cmd); tu_emit_subpass_begin(cmd); @@ -6155,6 +6156,7 @@ tu_CmdNextSubpass2(VkCommandBuffer commandBuffer, TU_CMD_FLAG_WAIT_FOR_IDLE; } + tu_fill_render_pass_state(&cmd->state.vk_rp, cmd->state.pass, new_subpass); tu_emit_subpass_begin(cmd); } TU_GENX(tu_CmdNextSubpass2);