mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-05 11:10:10 +01:00
vulkan/runtime: also copy strings on queue debug utils
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Emma Anholt <emma@anholt.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22006>
This commit is contained in:
parent
d55d74bb72
commit
1c64952e65
1 changed files with 39 additions and 26 deletions
|
|
@ -185,30 +185,27 @@ vk_common_SetDebugUtilsObjectTagEXT(
|
|||
}
|
||||
|
||||
static void
|
||||
vk_common_cmd_buffer_append_debug_label(struct vk_command_buffer *command_buffer,
|
||||
const VkDebugUtilsLabelEXT *pLabelInfo)
|
||||
vk_common_append_debug_label(struct vk_device *device,
|
||||
struct util_dynarray *labels,
|
||||
const VkDebugUtilsLabelEXT *pLabelInfo)
|
||||
{
|
||||
struct vk_device *device = command_buffer->base.device;
|
||||
|
||||
util_dynarray_append(&command_buffer->labels, VkDebugUtilsLabelEXT,
|
||||
*pLabelInfo);
|
||||
util_dynarray_append(labels, VkDebugUtilsLabelEXT, *pLabelInfo);
|
||||
VkDebugUtilsLabelEXT *current_label =
|
||||
util_dynarray_top_ptr(&command_buffer->labels, VkDebugUtilsLabelEXT);
|
||||
util_dynarray_top_ptr(labels, VkDebugUtilsLabelEXT);
|
||||
current_label->pLabelName =
|
||||
vk_strdup(&device->alloc, current_label->pLabelName,
|
||||
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
|
||||
}
|
||||
|
||||
static void
|
||||
vk_common_cmd_buffer_pop_debug_label(struct vk_command_buffer *command_buffer)
|
||||
vk_common_pop_debug_label(struct vk_device *device,
|
||||
struct util_dynarray *labels)
|
||||
{
|
||||
struct vk_device *device = command_buffer->base.device;
|
||||
|
||||
if (command_buffer->labels.size == 0)
|
||||
if (labels->size == 0)
|
||||
return;
|
||||
|
||||
VkDebugUtilsLabelEXT previous_label =
|
||||
util_dynarray_pop(&command_buffer->labels, VkDebugUtilsLabelEXT);
|
||||
util_dynarray_pop(labels, VkDebugUtilsLabelEXT);
|
||||
vk_free(&device->alloc, (void *)previous_label.pLabelName);
|
||||
}
|
||||
|
||||
|
|
@ -222,10 +219,14 @@ vk_common_CmdBeginDebugUtilsLabelEXT(
|
|||
/* If the latest label was submitted by CmdInsertDebugUtilsLabelEXT, we
|
||||
* should remove it first.
|
||||
*/
|
||||
if (!command_buffer->region_begin)
|
||||
vk_common_cmd_buffer_pop_debug_label(command_buffer);
|
||||
if (!command_buffer->region_begin) {
|
||||
vk_common_pop_debug_label(command_buffer->base.device,
|
||||
&command_buffer->labels);
|
||||
}
|
||||
|
||||
vk_common_cmd_buffer_append_debug_label(command_buffer, pLabelInfo);
|
||||
vk_common_append_debug_label(command_buffer->base.device,
|
||||
&command_buffer->labels,
|
||||
pLabelInfo);
|
||||
command_buffer->region_begin = true;
|
||||
}
|
||||
|
||||
|
|
@ -237,10 +238,13 @@ vk_common_CmdEndDebugUtilsLabelEXT(VkCommandBuffer _commandBuffer)
|
|||
/* If the latest label was submitted by CmdInsertDebugUtilsLabelEXT, we
|
||||
* should remove it first.
|
||||
*/
|
||||
if (!command_buffer->region_begin)
|
||||
vk_common_cmd_buffer_pop_debug_label(command_buffer);
|
||||
if (!command_buffer->region_begin) {
|
||||
vk_common_pop_debug_label(command_buffer->base.device,
|
||||
&command_buffer->labels);
|
||||
}
|
||||
|
||||
vk_common_cmd_buffer_pop_debug_label(command_buffer);
|
||||
vk_common_pop_debug_label(command_buffer->base.device,
|
||||
&command_buffer->labels);
|
||||
command_buffer->region_begin = true;
|
||||
}
|
||||
|
||||
|
|
@ -254,10 +258,15 @@ vk_common_CmdInsertDebugUtilsLabelEXT(
|
|||
/* If the latest label was submitted by CmdInsertDebugUtilsLabelEXT, we
|
||||
* should remove it first.
|
||||
*/
|
||||
if (!command_buffer->region_begin)
|
||||
(void)util_dynarray_pop(&command_buffer->labels, VkDebugUtilsLabelEXT);
|
||||
if (!command_buffer->region_begin) {
|
||||
vk_common_append_debug_label(command_buffer->base.device,
|
||||
&command_buffer->labels,
|
||||
pLabelInfo);
|
||||
}
|
||||
|
||||
vk_common_cmd_buffer_append_debug_label(command_buffer, pLabelInfo);
|
||||
vk_common_append_debug_label(command_buffer->base.device,
|
||||
&command_buffer->labels,
|
||||
pLabelInfo);
|
||||
command_buffer->region_begin = false;
|
||||
}
|
||||
|
||||
|
|
@ -274,7 +283,9 @@ vk_common_QueueBeginDebugUtilsLabelEXT(
|
|||
if (!queue->region_begin)
|
||||
(void)util_dynarray_pop(&queue->labels, VkDebugUtilsLabelEXT);
|
||||
|
||||
util_dynarray_append(&queue->labels, VkDebugUtilsLabelEXT, *pLabelInfo);
|
||||
vk_common_append_debug_label(queue->base.device,
|
||||
&queue->labels,
|
||||
pLabelInfo);
|
||||
queue->region_begin = true;
|
||||
}
|
||||
|
||||
|
|
@ -287,9 +298,9 @@ vk_common_QueueEndDebugUtilsLabelEXT(VkQueue _queue)
|
|||
* should remove it first.
|
||||
*/
|
||||
if (!queue->region_begin)
|
||||
(void)util_dynarray_pop(&queue->labels, VkDebugUtilsLabelEXT);
|
||||
vk_common_pop_debug_label(queue->base.device, &queue->labels);
|
||||
|
||||
(void)util_dynarray_pop(&queue->labels, VkDebugUtilsLabelEXT);
|
||||
vk_common_pop_debug_label(queue->base.device, &queue->labels);
|
||||
queue->region_begin = true;
|
||||
}
|
||||
|
||||
|
|
@ -304,8 +315,10 @@ vk_common_QueueInsertDebugUtilsLabelEXT(
|
|||
* should remove it first.
|
||||
*/
|
||||
if (!queue->region_begin)
|
||||
(void)util_dynarray_pop(&queue->labels, VkDebugUtilsLabelEXT);
|
||||
vk_common_pop_debug_label(queue->base.device, &queue->labels);
|
||||
|
||||
util_dynarray_append(&queue->labels, VkDebugUtilsLabelEXT, *pLabelInfo);
|
||||
vk_common_append_debug_label(queue->base.device,
|
||||
&queue->labels,
|
||||
pLabelInfo);
|
||||
queue->region_begin = false;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue