From 02b846b9d89340ceee42b4de3cf3a498bff726a2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jean-Philippe=20Bruy=C3=A8re?= Date: Thu, 23 Jan 2020 00:21:12 +0100 Subject: [PATCH] debug utils labels --- include/vkh.h | 9 ++-- src/vkh_device.c | 112 ++++++++++++++++------------------------------- src/vkh_image.c | 2 +- 3 files changed, 42 insertions(+), 81 deletions(-) diff --git a/include/vkh.h b/include/vkh.h index 44f937b..7f41e5a 100644 --- a/include/vkh.h +++ b/include/vkh.h @@ -92,9 +92,7 @@ VkhDevice vkh_device_create (VkhApp app, VkhPhyInfo phyInfo, VkDevic VkhDevice vkh_device_import (VkInstance inst, VkPhysicalDevice phy, VkDevice vkDev); void vkh_device_destroy (VkhDevice dev); -VkDebugReportCallbackEXT vkh_device_create_debug_report (VkhDevice dev, VkDebugReportFlagsEXT flags); -void vkh_device_destroy_debug_report (VkhDevice dev, VkDebugReportCallbackEXT dbgReport); -void vkh_device_set_object_name (VkhDevice dev, VkDebugReportObjectTypeEXT objectType, uint64_t handle, const char *name); +void vkh_device_set_object_name (VkhDevice dev, VkObjectType objectType, uint64_t handle, const char *name); VkSampler vkh_device_create_sampler (VkhDevice dev, VkFilter magFilter, VkFilter minFilter, VkSamplerMipmapMode mipmapMode, VkSamplerAddressMode addressMode); @@ -169,8 +167,9 @@ void vkh_cmd_submit (VkhQueue queue, VkCommandBuffer *pCmdBuff, VkFence fence); void vkh_cmd_submit_with_semaphores(VkhQueue queue, VkCommandBuffer *pCmdBuff, VkSemaphore waitSemaphore, VkSemaphore signalSemaphore, VkFence fence); -void vkh_cmd_marker_start (VkCommandBuffer cmd, const char* name, float color[4]); -void vkh_cmd_marker_end (VkCommandBuffer cmd); +void vkh_cmd_label_start (VkCommandBuffer cmd, const char* name, const float color[]); +void vkh_cmd_label_end (VkCommandBuffer cmd); +void vkh_cmd_label_insert (VkCommandBuffer cmd, const char* name, const float color[4]); VkShaderModule vkh_load_module(VkDevice dev, const char* path); diff --git a/src/vkh_device.c b/src/vkh_device.c index 7f508b3..c37e878 100644 --- a/src/vkh_device.c +++ b/src/vkh_device.c @@ -24,46 +24,14 @@ #include "vkh_app.h" #include "string.h" -static VkDebugReportCallbackEXT msgCallback; -static PFN_vkDebugMarkerSetObjectNameEXT DebugMarkerSetObjectNameEXT; -//I add debug markers here for convenience even if device is not part of the signature. -static PFN_vkCmdDebugMarkerBeginEXT CmdDebugMarkerBegin; -static PFN_vkCmdDebugMarkerEndEXT CmdDebugMarkerEnd; -static PFN_vkCmdDebugMarkerInsertEXT CmdDebugMarkerInsert; -VkBool32 VKAPI_CALL messageCallback( - VkDebugReportFlagsEXT flags, - VkDebugReportObjectTypeEXT objType, - uint64_t srcObject, - size_t location, - int32_t msgCode, - const char* pLayerPrefix, - const char* pMsg, - void* pUserData) -{ - switch (flags) { - case VK_DEBUG_REPORT_ERROR_BIT_EXT: - printf ("%sERR: %s%s\n",KRED, pMsg, KNRM); - break; - case VK_DEBUG_REPORT_DEBUG_BIT_EXT: - printf ("%sDBG: %s%s\n",KNRM, pMsg, KNRM); - break; - case VK_DEBUG_REPORT_WARNING_BIT_EXT: - printf ("%sWRN: %s%s\n",KYEL, pMsg, KNRM); - break; - case VK_DEBUG_REPORT_INFORMATION_BIT_EXT: - printf ("%sNFO: %s%s\n",KGRN, pMsg, KNRM); - break; - case VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT: - printf ("%sPRF: %s%s\n",KBLU, pMsg, KNRM); - break; - default: - printf ("%sMSG: %s%s\n",KBLU, pMsg, KNRM); - break; - } - fflush(stdout); - return VK_FALSE; -} +static PFN_vkSetDebugUtilsObjectNameEXT SetDebugUtilsObjectNameEXT; +static PFN_vkQueueBeginDebugUtilsLabelEXT QueueBeginDebugUtilsLabelEXT; +static PFN_vkQueueEndDebugUtilsLabelEXT QueueEndDebugUtilsLabelEXT; +static PFN_vkCmdBeginDebugUtilsLabelEXT CmdBeginDebugUtilsLabelEXT; +static PFN_vkCmdEndDebugUtilsLabelEXT CmdEndDebugUtilsLabelEXT; +static PFN_vkCmdInsertDebugUtilsLabelEXT CmdInsertDebugUtilsLabelEXT; + VkhDevice vkh_device_create (VkhApp app, VkhPhyInfo phyInfo, VkDeviceCreateInfo* pDevice_info){ VkDevice dev; VK_CHECK_RESULT(vkCreateDevice (phyInfo->phy, pDevice_info, NULL, &dev)); @@ -83,31 +51,16 @@ VkhDevice vkh_device_import (VkInstance inst, VkPhysicalDevice phy, VkDevice vkD }; vmaCreateAllocator(&allocatorInfo, &dev->allocator); - DebugMarkerSetObjectNameEXT = (PFN_vkDebugMarkerSetObjectNameEXT)vkGetInstanceProcAddr(dev->instance, "vkDebugMarkerSetObjectNameEXT"); - CmdDebugMarkerBegin = (PFN_vkCmdDebugMarkerBeginEXT)vkGetInstanceProcAddr(dev->instance, "vkCmdDebugMarkerBeginEXT"); - CmdDebugMarkerEnd = (PFN_vkCmdDebugMarkerEndEXT)vkGetInstanceProcAddr(dev->instance, "vkCmdDebugMarkerEndEXT"); - CmdDebugMarkerInsert = (PFN_vkCmdDebugMarkerInsertEXT)vkGetInstanceProcAddr(dev->instance, "vkCmdDebugMarkerInsertEXT"); + SetDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT)vkGetInstanceProcAddr(dev->instance, "vkSetDebugUtilsObjectNameEXT"); + QueueBeginDebugUtilsLabelEXT = (PFN_vkQueueBeginDebugUtilsLabelEXT)vkGetInstanceProcAddr(dev->instance, "vkQueueBeginDebugUtilsLabelEXT"); + QueueEndDebugUtilsLabelEXT = (PFN_vkQueueEndDebugUtilsLabelEXT)vkGetInstanceProcAddr(dev->instance, "vkQueueEndDebugUtilsLabelEXT"); + CmdBeginDebugUtilsLabelEXT = (PFN_vkCmdBeginDebugUtilsLabelEXT)vkGetInstanceProcAddr(dev->instance, "vkCmdBeginDebugUtilsLabelEXT"); + CmdEndDebugUtilsLabelEXT = (PFN_vkCmdEndDebugUtilsLabelEXT)vkGetInstanceProcAddr(dev->instance, "vkCmdEndDebugUtilsLabelEXT"); + CmdInsertDebugUtilsLabelEXT = (PFN_vkCmdInsertDebugUtilsLabelEXT)vkGetInstanceProcAddr(dev->instance, "vkCmdInsertDebugUtilsLabelEXT"); return dev; } -VkDebugReportCallbackEXT vkh_device_create_debug_report (VkhDevice dev, VkDebugReportFlagsEXT flags) { - - CreateDebugReportCallback = (PFN_vkCreateDebugReportCallbackEXT)vkGetInstanceProcAddr(dev->instance, "vkCreateDebugReportCallbackEXT"); - DestroyDebugReportCallback = (PFN_vkDestroyDebugReportCallbackEXT)vkGetInstanceProcAddr(dev->instance, "vkDestroyDebugReportCallbackEXT"); - - VkDebugReportCallbackCreateInfoEXT dbgCreateInfo = { - .sType = VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT, - .flags = flags, - .pfnCallback = (PFN_vkDebugReportCallbackEXT)messageCallback - }; - - CreateDebugReportCallback (dev->instance, &dbgCreateInfo, VK_NULL_HANDLE, &msgCallback); - return msgCallback; -} -void vkh_device_destroy_debug_report (VkhDevice dev, VkDebugReportCallbackEXT dbgReport){ - DestroyDebugReportCallback (dev->instance, dbgReport, VK_NULL_HANDLE); -} void vkh_device_destroy_sampler (VkhDevice dev, VkSampler sampler) { vkDestroySampler (dev->dev, sampler,NULL); } @@ -131,27 +84,36 @@ void vkh_device_destroy (VkhDevice dev) { free (dev); } -void vkh_device_set_object_name (VkhDevice dev, VkDebugReportObjectTypeEXT objectType, uint64_t handle, const char* name){ - const VkDebugMarkerObjectNameInfoEXT info = { - .sType = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT, +void vkh_device_set_object_name (VkhDevice dev, VkObjectType objectType, uint64_t handle, const char* name){ + const VkDebugUtilsObjectNameInfoEXT info = { + .sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT, + .pNext = 0, + .objectType = objectType, + .objectHandle= handle, + .pObjectName = name + }; + SetDebugUtilsObjectNameEXT (dev->dev, &info); +} +void vkh_cmd_label_start (VkCommandBuffer cmd, const char* name, const float color[4]) { + const VkDebugUtilsLabelEXT info = { + .sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT, .pNext = 0, - .objectType = objectType, - .object = handle, - .pObjectName= name + .pLabelName= name }; - DebugMarkerSetObjectNameEXT (dev->dev, &info); + memcpy ((void*)info.color, (void*)color, 4 * sizeof(float)); + CmdBeginDebugUtilsLabelEXT (cmd, &info); } -void vkh_cmd_marker_start (VkCommandBuffer cmd, const char* name, float color[4]) { - const VkDebugMarkerMarkerInfoEXT info = { - .sType = VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT, +void vkh_cmd_label_insert (VkCommandBuffer cmd, const char* name, const float color[4]) { + const VkDebugUtilsLabelEXT info = { + .sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT, .pNext = 0, - .pMarkerName= name + .pLabelName= name }; - memcpy (info.color, color, 4 * sizeof(float)); - CmdDebugMarkerBegin (cmd, &info); + memcpy ((void*)info.color, (void*)color, 4 * sizeof(float)); + CmdInsertDebugUtilsLabelEXT (cmd, &info); } -void vkh_cmd_marker_end (VkCommandBuffer cmd) { - CmdDebugMarkerEnd (cmd); +void vkh_cmd_label_end (VkCommandBuffer cmd) { + CmdEndDebugUtilsLabelEXT (cmd); } diff --git a/src/vkh_image.c b/src/vkh_image.c index 233d67f..cb033e7 100644 --- a/src/vkh_image.c +++ b/src/vkh_image.c @@ -247,5 +247,5 @@ void vkh_image_unmap (VkhImage img) { void vkh_image_set_name (VkhImage img, const char* name){ if (img==NULL) return; - vkh_device_set_object_name(img->pDev, VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT, (uint64_t)img->image, name); + vkh_device_set_object_name(img->pDev, VK_OBJECT_TYPE_IMAGE, (uint64_t)img->image, name); } -- 2.47.3