From fe4cf26687cc9a2abd737b0a3fb368a1832cc3b8 Mon Sep 17 00:00:00 2001 From: Yiwei Zhang Date: Tue, 4 Jul 2023 16:17:47 -0700 Subject: [PATCH] venus: fix leaks from tracked present src images The cmd can be reset and freed during render pass recording as well. Cc: mesa-stable Signed-off-by: Yiwei Zhang Part-of: --- src/virtio/vulkan/vn_command_buffer.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/virtio/vulkan/vn_command_buffer.c b/src/virtio/vulkan/vn_command_buffer.c index b1ee4334264..772dc3fd21f 100644 --- a/src/virtio/vulkan/vn_command_buffer.c +++ b/src/virtio/vulkan/vn_command_buffer.c @@ -701,6 +701,9 @@ vn_DestroyCommandPool(VkDevice device, vn_cs_encoder_fini(&cmd->cs); vn_object_base_fini(&cmd->base); + if (cmd->builder.present_src_images) + vk_free(&cmd->allocator, cmd->builder.present_src_images); + if (cmd->builder.tmp.data) vk_free(&cmd->allocator, cmd->builder.tmp.data); @@ -721,6 +724,11 @@ static void vn_cmd_reset(struct vn_command_buffer *cmd) { vn_cs_encoder_reset(&cmd->cs); + if (cmd->builder.present_src_images) { + vk_free(&cmd->allocator, cmd->builder.present_src_images); + cmd->builder.present_src_images = NULL; + } + cmd->state = VN_COMMAND_BUFFER_STATE_INITIAL; cmd->draw_cmd_batched = 0; @@ -845,6 +853,9 @@ vn_FreeCommandBuffers(VkDevice device, if (cmd->builder.tmp.data) vk_free(alloc, cmd->builder.tmp.data); + if (cmd->builder.present_src_images) + vk_free(&cmd->allocator, cmd->builder.present_src_images); + vn_cs_encoder_fini(&cmd->cs); list_del(&cmd->head);