Diligent Engine  v.2.4.g
VulkanDebug.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <string>
4 #include "VulkanHeaders.h"
5 
6 namespace VulkanUtilities
7 {
8 
9 // clang-format off
10 // Unified validation layer used on Desktop and Mobile platforms
11 static constexpr const char* ValidationLayerNames[] =
12 {
13  "VK_LAYER_KHRONOS_validation"
14 };
15 // clang-format on
16 
17 // Load debug function pointers and set debug callback
18 // if callBack is NULL, default message callback will be used
19 void SetupDebugging(VkInstance instance,
20  VkDebugUtilsMessageSeverityFlagsEXT messageSeverity,
21  VkDebugUtilsMessageTypeFlagsEXT messageType,
22  void* pUserData = nullptr);
23 // Clear debug callback
24 void FreeDebugging(VkInstance instance);
25 
26 // Setup and functions for the VK_EXT_debug_marker_extension
27 // Extension spec can be found at https://github.com/KhronosGroup/Vulkan-Docs/blob/1.0-VK_EXT_debug_marker/doc/specs/vulkan/appendices/VK_EXT_debug_marker.txt
28 // Note that the extension will only be present if run from an offline debugging application
29 // The actual check for extension presence and enabling it on the device is done in the example base class
30 // See VulkanExampleBase::createInstance and VulkanExampleBase::createDevice (base/vulkanexamplebase.cpp)
31 
32 // Sets the debug name of an object
33 // All Objects in Vulkan are represented by their 64-bit handles which are passed into this function
34 // along with the object type
35 void SetObjectName(VkDevice device, uint64_t object, VkObjectType objectType, const char* name);
36 
37 // Set the tag for an object
38 void SetObjectTag(VkDevice device, uint64_t objectHandle, VkObjectType objectType, uint64_t name, size_t tagSize, const void* tag);
39 
40 // Start a new label region
41 void BeginCmdQueueLabelRegion(VkQueue cmdQueue, const char* pLabelName, const float* color);
42 
43 // End the label region
44 void EndCmdQueueLabelRegion(VkQueue cmdQueue);
45 
46 // Insert a single label
47 void InsertCmdQueueLabel(VkQueue cmdQueue, const char* pLabelName, const float* color);
48 
49 // Start a new label region
50 void BeginCmdBufferLabelRegion(VkCommandBuffer cmdBuffer, const char* pLabelName, const float* color);
51 
52 // End the label region
53 void EndCmdBufferLabelRegion(VkCommandBuffer cmdBuffer);
54 
55 // Insert a single label
56 void InsertCmdBufferLabel(VkCommandBuffer cmdBuffer, const char* pLabelName, const float* color);
57 
58 // clang-format off
59 // Object specific naming functions
60 void SetCommandPoolName (VkDevice device, VkCommandPool cmdPool, const char * name);
61 void SetCommandBufferName (VkDevice device, VkCommandBuffer cmdBuffer, const char * name);
62 void SetQueueName (VkDevice device, VkQueue queue, const char * name);
63 void SetImageName (VkDevice device, VkImage image, const char * name);
64 void SetImageViewName (VkDevice device, VkImageView imageView, const char * name);
65 void SetSamplerName (VkDevice device, VkSampler sampler, const char * name);
66 void SetBufferName (VkDevice device, VkBuffer buffer, const char * name);
67 void SetBufferViewName (VkDevice device, VkBufferView bufferView, const char * name);
68 void SetDeviceMemoryName (VkDevice device, VkDeviceMemory memory, const char * name);
69 void SetShaderModuleName (VkDevice device, VkShaderModule shaderModule, const char * name);
70 void SetPipelineName (VkDevice device, VkPipeline pipeline, const char * name);
71 void SetPipelineLayoutName (VkDevice device, VkPipelineLayout pipelineLayout, const char * name);
72 void SetRenderPassName (VkDevice device, VkRenderPass renderPass, const char * name);
73 void SetFramebufferName (VkDevice device, VkFramebuffer framebuffer, const char * name);
74 void SetDescriptorSetLayoutName (VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const char * name);
75 void SetDescriptorSetName (VkDevice device, VkDescriptorSet descriptorSet, const char * name);
76 void SetDescriptorPoolName (VkDevice device, VkDescriptorPool descriptorPool, const char * name);
77 void SetSemaphoreName (VkDevice device, VkSemaphore semaphore, const char * name);
78 void SetFenceName (VkDevice device, VkFence fence, const char * name);
79 void SetEventName (VkDevice device, VkEvent _event, const char * name);
80 void SetQueryPoolName (VkDevice device, VkQueryPool queryPool, const char * name);
81 
82 enum class VulkanHandleTypeId : uint32_t;
83 
84 template<typename VulkanObjectType, VulkanHandleTypeId>
85 void SetVulkanObjectName(VkDevice device, VulkanObjectType vkObject, const char * name);
86 
87 const char* VkResultToString (VkResult errorCode);
88 const char* VkAccessFlagBitToString(VkAccessFlagBits Bit);
89 const char* VkImageLayoutToString (VkImageLayout Layout);
90 std::string VkAccessFlagsToString (VkAccessFlags Flags);
91 const char* VkObjectTypeToString (VkObjectType ObjectType);
92 // clang-format on
93 
94 } // namespace VulkanUtilities
VulkanUtilities::SetPipelineName
void SetPipelineName(VkDevice device, VkPipeline pipeline, const char *name)
Definition: VulkanDebug.cpp:362
VulkanHeaders.h
VulkanUtilities::SetFramebufferName
void SetFramebufferName(VkDevice device, VkFramebuffer framebuffer, const char *name)
Definition: VulkanDebug.cpp:377
VulkanUtilities::SetupDebugging
void SetupDebugging(VkInstance instance, VkDebugUtilsMessageSeverityFlagsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageType, void *pUserData=nullptr)
Definition: VulkanDebug.cpp:160
VulkanUtilities::SetQueueName
void SetQueueName(VkDevice device, VkQueue queue, const char *name)
Definition: VulkanDebug.cpp:322
VulkanUtilities::SetDescriptorSetName
void SetDescriptorSetName(VkDevice device, VkDescriptorSet descriptorSet, const char *name)
Definition: VulkanDebug.cpp:387
VulkanUtilities::SetEventName
void SetEventName(VkDevice device, VkEvent _event, const char *name)
Definition: VulkanDebug.cpp:407
VulkanUtilities::SetDescriptorPoolName
void SetDescriptorPoolName(VkDevice device, VkDescriptorPool descriptorPool, const char *name)
Definition: VulkanDebug.cpp:392
VulkanUtilities::SetBufferName
void SetBufferName(VkDevice device, VkBuffer buffer, const char *name)
Definition: VulkanDebug.cpp:342
VulkanUtilities::InsertCmdQueueLabel
void InsertCmdQueueLabel(VkQueue cmdQueue, const char *pLabelName, const float *color)
Definition: VulkanDebug.cpp:224
VulkanUtilities::SetPipelineLayoutName
void SetPipelineLayoutName(VkDevice device, VkPipelineLayout pipelineLayout, const char *name)
Definition: VulkanDebug.cpp:367
VulkanUtilities::VulkanHandleTypeId
VulkanHandleTypeId
Definition: VulkanLogicalDevice.hpp:38
VulkanUtilities::BeginCmdBufferLabelRegion
void BeginCmdBufferLabelRegion(VkCommandBuffer cmdBuffer, const char *pLabelName, const float *color)
Definition: VulkanDebug.cpp:243
VulkanUtilities::SetFenceName
void SetFenceName(VkDevice device, VkFence fence, const char *name)
Definition: VulkanDebug.cpp:402
VulkanUtilities::FreeDebugging
void FreeDebugging(VkInstance instance)
Definition: VulkanDebug.cpp:204
VulkanUtilities::SetDeviceMemoryName
void SetDeviceMemoryName(VkDevice device, VkDeviceMemory memory, const char *name)
Definition: VulkanDebug.cpp:352
VulkanUtilities::SetCommandPoolName
void SetCommandPoolName(VkDevice device, VkCommandPool cmdPool, const char *name)
Definition: VulkanDebug.cpp:312
VulkanUtilities::VkImageLayoutToString
const char * VkImageLayoutToString(VkImageLayout Layout)
Definition: VulkanDebug.cpp:638
VulkanUtilities::VkAccessFlagBitToString
const char * VkAccessFlagBitToString(VkAccessFlagBits Bit)
Definition: VulkanDebug.cpp:606
VulkanUtilities::EndCmdBufferLabelRegion
void EndCmdBufferLabelRegion(VkCommandBuffer cmdBuffer)
Definition: VulkanDebug.cpp:256
VulkanUtilities::SetImageName
void SetImageName(VkDevice device, VkImage image, const char *name)
Definition: VulkanDebug.cpp:327
VulkanUtilities::SetCommandBufferName
void SetCommandBufferName(VkDevice device, VkCommandBuffer cmdBuffer, const char *name)
Definition: VulkanDebug.cpp:317
VulkanUtilities::SetVulkanObjectName
enum VulkanHandleTypeId uint32_t void SetVulkanObjectName(VkDevice device, VulkanObjectType vkObject, const char *name)
VulkanUtilities::VkResultToString
const char * VkResultToString(VkResult errorCode)
Definition: VulkanDebug.cpp:556
VulkanUtilities::VkObjectTypeToString
const char * VkObjectTypeToString(VkObjectType ObjectType)
Definition: VulkanDebug.cpp:677
VulkanUtilities::InsertCmdBufferLabel
void InsertCmdBufferLabel(VkCommandBuffer cmdBuffer, const char *pLabelName, const float *color)
Definition: VulkanDebug.cpp:262
VulkanUtilities::SetDescriptorSetLayoutName
void SetDescriptorSetLayoutName(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const char *name)
Definition: VulkanDebug.cpp:382
VulkanUtilities::SetRenderPassName
void SetRenderPassName(VkDevice device, VkRenderPass renderPass, const char *name)
Definition: VulkanDebug.cpp:372
VulkanUtilities::SetQueryPoolName
void SetQueryPoolName(VkDevice device, VkQueryPool queryPool, const char *name)
Definition: VulkanDebug.cpp:412
VulkanUtilities::SetShaderModuleName
void SetShaderModuleName(VkDevice device, VkShaderModule shaderModule, const char *name)
Definition: VulkanDebug.cpp:357
VulkanUtilities::SetSemaphoreName
void SetSemaphoreName(VkDevice device, VkSemaphore semaphore, const char *name)
Definition: VulkanDebug.cpp:397
VulkanUtilities::SetSamplerName
void SetSamplerName(VkDevice device, VkSampler sampler, const char *name)
Definition: VulkanDebug.cpp:337
VulkanUtilities::BeginCmdQueueLabelRegion
void BeginCmdQueueLabelRegion(VkQueue cmdQueue, const char *pLabelName, const float *color)
Definition: VulkanDebug.cpp:212
VulkanUtilities::SetObjectName
void SetObjectName(VkDevice device, uint64_t object, VkObjectType objectType, const char *name)
Definition: VulkanDebug.cpp:275
VulkanUtilities::SetObjectTag
void SetObjectTag(VkDevice device, uint64_t objectHandle, VkObjectType objectType, uint64_t name, size_t tagSize, const void *tag)
Definition: VulkanDebug.cpp:294
VulkanUtilities::VkAccessFlagsToString
std::string VkAccessFlagsToString(VkAccessFlags Flags)
Definition: VulkanDebug.cpp:663
VulkanUtilities
Definition: VulkanCommandBuffer.hpp:33
VulkanUtilities::EndCmdQueueLabelRegion
void EndCmdQueueLabelRegion(VkQueue cmdQueue)
Definition: VulkanDebug.cpp:236
VulkanUtilities::SetBufferViewName
void SetBufferViewName(VkDevice device, VkBufferView bufferView, const char *name)
Definition: VulkanDebug.cpp:347
VulkanUtilities::SetImageViewName
void SetImageViewName(VkDevice device, VkImageView imageView, const char *name)
Definition: VulkanDebug.cpp:332