vulkan: don't leak debug utils label name
Label names are duplicated, so free them before resetting or deleting the cmdbuffer/queue. Fixes leaks when testing dEQP-VK.api.debug_utils.long_labels. Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com> Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Signed-off-by: Juan A. Suarez Romero <jasuarez@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33611>
This commit is contained in:
committed by
Marge Bot
parent
7c4a919f19
commit
18c3b296a6
@@ -23,6 +23,7 @@
|
||||
|
||||
#include "vk_command_buffer.h"
|
||||
|
||||
#include "vk_alloc.h"
|
||||
#include "vk_command_pool.h"
|
||||
#include "vk_common_entrypoints.h"
|
||||
#include "vk_device.h"
|
||||
@@ -63,6 +64,8 @@ vk_command_buffer_reset(struct vk_command_buffer *command_buffer)
|
||||
vk_cmd_queue_reset(&command_buffer->cmd_queue);
|
||||
vk_meta_object_list_reset(command_buffer->base.device,
|
||||
&command_buffer->meta_objects);
|
||||
util_dynarray_foreach (&command_buffer->labels, VkDebugUtilsLabelEXT, label)
|
||||
vk_free(&command_buffer->base.device->alloc, (void *)label->pLabelName);
|
||||
util_dynarray_clear(&command_buffer->labels);
|
||||
command_buffer->region_begin = true;
|
||||
}
|
||||
@@ -97,6 +100,8 @@ vk_command_buffer_finish(struct vk_command_buffer *command_buffer)
|
||||
list_del(&command_buffer->pool_link);
|
||||
vk_command_buffer_reset_render_pass(command_buffer);
|
||||
vk_cmd_queue_finish(&command_buffer->cmd_queue);
|
||||
util_dynarray_foreach (&command_buffer->labels, VkDebugUtilsLabelEXT, label)
|
||||
vk_free(&command_buffer->base.device->alloc, (void *)label->pLabelName);
|
||||
util_dynarray_fini(&command_buffer->labels);
|
||||
vk_meta_object_list_finish(command_buffer->base.device,
|
||||
&command_buffer->meta_objects);
|
||||
|
||||
@@ -1371,6 +1371,8 @@ vk_queue_finish(struct vk_queue *queue)
|
||||
cnd_destroy(&queue->submit.push);
|
||||
mtx_destroy(&queue->submit.mutex);
|
||||
|
||||
util_dynarray_foreach (&queue->labels, VkDebugUtilsLabelEXT, label)
|
||||
vk_free(&queue->base.device->alloc, (void *)label->pLabelName);
|
||||
util_dynarray_fini(&queue->labels);
|
||||
list_del(&queue->link);
|
||||
vk_object_base_finish(&queue->base);
|
||||
|
||||
Reference in New Issue
Block a user