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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user