diff --git a/hw/xbox/nv2a/pgraph/vk/debug.c b/hw/xbox/nv2a/pgraph/vk/debug.c index f7a54de9fc..90f5b15a84 100644 --- a/hw/xbox/nv2a/pgraph/vk/debug.c +++ b/hw/xbox/nv2a/pgraph/vk/debug.c @@ -59,14 +59,25 @@ void pgraph_vk_debug_frame_terminator(void) } void pgraph_vk_insert_debug_marker(PGRAPHVkState *r, VkCommandBuffer cmd, - const char *name, float color[4]) + float color[4], const char *format, ...) { - if (r->debug_utils_extension_enabled) { - VkDebugUtilsLabelEXT label_info = { - .sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT, - .pLabelName = name, - }; - memcpy(label_info.color, color, 4 * sizeof(float)); - vkCmdInsertDebugUtilsLabelEXT(cmd, &label_info); + if (!r->debug_utils_extension_enabled) { + return; } + + char *buf = NULL; + + va_list args; + va_start(args, format); + int err = vasprintf(&buf, format, args); + assert(err >= 0); + va_end(args); + + VkDebugUtilsLabelEXT label_info = { + .sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT, + .pLabelName = buf, + }; + memcpy(label_info.color, color, 4 * sizeof(float)); + vkCmdInsertDebugUtilsLabelEXT(cmd, &label_info); + free(buf); } diff --git a/hw/xbox/nv2a/pgraph/vk/renderer.h b/hw/xbox/nv2a/pgraph/vk/renderer.h index aa177723ad..43279046d2 100644 --- a/hw/xbox/nv2a/pgraph/vk/renderer.h +++ b/hw/xbox/nv2a/pgraph/vk/renderer.h @@ -392,7 +392,8 @@ void pgraph_vk_check_memory_budget(PGRAPHState *pg); // debug.c void pgraph_vk_debug_init(void); -void pgraph_vk_insert_debug_marker(PGRAPHVkState *r, VkCommandBuffer cmd, const char* name, float color[4]); +void pgraph_vk_insert_debug_marker(PGRAPHVkState *r, VkCommandBuffer cmd, + float color[4], const char *format, ...) __attribute__ ((format (printf, 4, 5))); // instance.c void pgraph_vk_init_instance(PGRAPHState *pg, Error **errp);