From d4ad50752ffbdf9eadd6a8bb2aa88859040b275e Mon Sep 17 00:00:00 2001 From: Valentine Burley Date: Sun, 1 Feb 2026 15:41:09 +0100 Subject: [PATCH] tu: Fix memory leak of patchpoints_ctx in dynamic rendering tu_CmdBeginRendering was unconditionally allocating a new patchpoints_ctx. When resuming a render pass chain, this overwrote the existing context from the suspended pass, leaking it and all associated FDM patchpoints. Fixes: 0dd06c74d65 ("tu: Fix FDM patchpoint memory leak") Signed-off-by: Valentine Burley Part-of: --- src/freedreno/vulkan/tu_cmd_buffer.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/freedreno/vulkan/tu_cmd_buffer.cc b/src/freedreno/vulkan/tu_cmd_buffer.cc index 68afc5f4e41..0b20b70f76a 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.cc +++ b/src/freedreno/vulkan/tu_cmd_buffer.cc @@ -7300,8 +7300,6 @@ tu_CmdBeginRendering(VkCommandBuffer commandBuffer, }; vk_cmd_set_rendering_attachment_locations(&cmd->vk, &ral_info); - cmd->patchpoints_ctx = ralloc_context(NULL); - a = cmd->dynamic_subpasses[0].fsr_attachment; if (a != VK_ATTACHMENT_UNUSED) { const VkRenderingFragmentShadingRateAttachmentInfoKHR *fsr_info = @@ -7362,6 +7360,7 @@ tu_CmdBeginRendering(VkCommandBuffer commandBuffer, tu_fill_render_pass_state(&cmd->state.vk_rp, cmd->state.pass, cmd->state.subpass); if (!resuming) { + cmd->patchpoints_ctx = ralloc_context(NULL); tu_emit_renderpass_begin(cmd); tu_emit_subpass_begin(cmd); }