From 38f463fd3eda82350ed019f17ead06e6057b16d1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jean-Philippe=20Bruy=C3=A8re?= Date: Thu, 4 Jul 2019 22:08:23 +0200 Subject: [PATCH] debug markers --- include/vkh.h | 3 +++ src/vkh_device.c | 27 ++++++++++++++++++++++++--- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/include/vkh.h b/include/vkh.h index bdacef2..9c66542 100644 --- a/include/vkh.h +++ b/include/vkh.h @@ -150,6 +150,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); + VkShaderModule vkh_load_module(VkDevice dev, const char* path); bool vkh_memory_type_from_properties(VkPhysicalDeviceMemoryProperties* memory_properties, uint32_t typeBits, diff --git a/src/vkh_device.c b/src/vkh_device.c index b5084d7..453532f 100644 --- a/src/vkh_device.c +++ b/src/vkh_device.c @@ -20,6 +20,7 @@ * THE SOFTWARE. */ #include "vkh_device.h" +#include "string.h" #define KNRM "\x1B[0m\x1B[40m" #define KRED "\x1B[31m\x1B[40m" @@ -31,7 +32,11 @@ #define KWHT "\x1B[37m\x1B[40m" static VkDebugReportCallbackEXT msgCallback; -static PFN_vkDebugMarkerSetObjectNameEXT DebugMarkerSetObjectNameEXT; +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; VKAPI_ATTR VkBool32 VKAPI_CALL messageCallback( VkDebugReportFlagsEXT flags, @@ -82,6 +87,9 @@ VkhDevice vkh_device_create (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"); return dev; } @@ -111,14 +119,27 @@ void vkh_device_destroy (VkhDevice dev) { } void vkh_device_set_object_name (VkhDevice dev, VkDebugReportObjectTypeEXT objectType, uint64_t handle, const char* name){ - VkDebugMarkerObjectNameInfoEXT info = { + const VkDebugMarkerObjectNameInfoEXT info = { .sType = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT, .pNext = 0, .objectType = objectType, .object = handle, .pObjectName= name }; - //DebugMarkerSetObjectNameEXT (dev->dev, &info); + DebugMarkerSetObjectNameEXT (dev->dev, &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, + .pNext = 0, + .pMarkerName= name + }; + memcpy (info.color, color, 4 * sizeof(float)); + CmdDebugMarkerBegin (cmd, &info); +} +void vkh_cmd_marker_end (VkCommandBuffer cmd) { + CmdDebugMarkerEnd (cmd); +} + -- 2.47.3