nvk: free leaked cmd_buffer descriptors state.

This wasn't been freed, free it in reset and destroy paths.

Spotted with valgrind

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27870>
This commit is contained in:
Dave Airlie
2024-02-29 16:17:36 +10:00
committed by Marge Bot
parent b588cb29a3
commit d5b6f8a414
+18
View File
@@ -28,6 +28,18 @@
#include "nvk_cla0c0.h"
#include "nvk_clc597.h"
static void
nvk_descriptor_state_fini(struct nvk_cmd_buffer *cmd,
struct nvk_descriptor_state *desc)
{
struct nvk_cmd_pool *pool = nvk_cmd_buffer_pool(cmd);
for (unsigned i = 0; i < NVK_MAX_SETS; i++) {
vk_free(&pool->vk.alloc, desc->push[i]);
desc->push[i] = NULL;
}
}
static void
nvk_destroy_cmd_buffer(struct vk_command_buffer *vk_cmd_buffer)
{
@@ -35,6 +47,9 @@ nvk_destroy_cmd_buffer(struct vk_command_buffer *vk_cmd_buffer)
container_of(vk_cmd_buffer, struct nvk_cmd_buffer, vk);
struct nvk_cmd_pool *pool = nvk_cmd_buffer_pool(cmd);
nvk_descriptor_state_fini(cmd, &cmd->state.gfx.descriptors);
nvk_descriptor_state_fini(cmd, &cmd->state.cs.descriptors);
nvk_cmd_pool_free_bo_list(pool, &cmd->bos);
nvk_cmd_pool_free_bo_list(pool, &cmd->gart_bos);
util_dynarray_fini(&cmd->pushes);
@@ -86,6 +101,9 @@ nvk_reset_cmd_buffer(struct vk_command_buffer *vk_cmd_buffer,
vk_command_buffer_reset(&cmd->vk);
nvk_descriptor_state_fini(cmd, &cmd->state.gfx.descriptors);
nvk_descriptor_state_fini(cmd, &cmd->state.cs.descriptors);
nvk_cmd_pool_free_bo_list(pool, &cmd->bos);
nvk_cmd_pool_free_gart_bo_list(pool, &cmd->gart_bos);
cmd->upload_bo = NULL;