]> O.S.I.I.S - jp/vkhelpers.git/commitdiff
debug markers
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Thu, 4 Jul 2019 20:08:23 +0000 (22:08 +0200)
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Thu, 4 Jul 2019 20:08:23 +0000 (22:08 +0200)
include/vkh.h
src/vkh_device.c

index bdacef21db5cf090eda0b730f742ed1ad44e0538..9c665423cb24889ff469d2f349749a0300e02d00 100644 (file)
@@ -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,
index b5084d73276e2064c4b6b8023ea9d6425b6219b4..453532fc819955a4aaa2b125e45410ea5bffd8dc 100644 (file)
@@ -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"
 #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);
+}
+