VK_EXT_debug_utils extension, developers can obtain more information. When combined with validation layers, even more detailed feedback on the application’s use of Vulkan will be provided.
This extension provides the following capabilities:
VkQueue or VkCommandBuffer using labels to aid organization and offline analysis in external tools.The main difference between this extension and VK_EXT_debug_report and VK_EXT_debug_marker is that those extensions use VkDebugReportObjectTypeEXT to identify objects. This extension uses the core VkObjectType in place of VkDebugReportObjectTypeEXT. The primary reason for this move is that no future object type handle enumeration values will be added to VkDebugReportObjectTypeEXT since the creation of VkObjectType.
In addition, this extension combines the functionality of both VK_EXT_debug_report and VK_EXT_debug_marker by allowing object name and debug markers (now called labels) to be returned to the application’s callback function. This should assist in clarifying the details of a debug message including: what objects are involved and potentially which location within a VkQueue or VkCommandBuffer the message occurred.
Example 1
VK_EXT_debug_utils allows an application to register multiple callbacks with any Vulkan component wishing to report debug information. Some callbacks may log the information to a file, others may cause a debug break point or other application defined behavior. An application can register callbacks even when no validation layers are enabled, but they will only be called for loader and, if implemented, driver events.
To capture events that occur while creating or destroying an instance an application can link a VkDebugUtilsMessengerCreateInfoEXT structure to the pNext element of the VkInstanceCreateInfo structure given to CreateInstance.
Example uses: Create three callback objects. One will log errors and warnings to the debug console using Windows OutputDebugString. The second will cause the debugger to break at that callback when an error happens and the third will log warnings to stdout.
extern VkInstance instance;
VkResult res;
VkDebugUtilsMessengerEXT cb1, cb2, cb3;
// Must call extension functions through a function pointer:
PFN_vkCreateDebugUtilsMessengerEXT pfnCreateDebugUtilsMessengerEXT = (PFN_vkCreateDebugUtilsMessengerEXT)vkGetInstanceProcAddr(instance, "vkCreateDebugUtilsMessengerEXT");
PFN_vkDestroyDebugUtilsMessengerEXT pfnDestroyDebugUtilsMessengerEXT = (PFN_vkDestroyDebugUtilsMessengerEXT)vkGetInstanceProcAddr(instance, "vkDestroyDebugUtilsMessengerEXT");
VkDebugUtilsMessengerCreateInfoEXT callback1 = {
.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT,
.pNext = NULL,
.flags = 0,
.messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT |
VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT,
.messageType= VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT |
VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT,
.pfnUserCallback = myOutputDebugString,
.pUserData = NULL
};
res = pfnCreateDebugUtilsMessengerEXT(instance, &callback1, NULL, &cb1);
if (res != VK_SUCCESS) {
// Do error handling for VK_ERROR_OUT_OF_MEMORY
}
callback1.messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT;
callback1.pfnUserCallback = myDebugBreak;
callback1.pUserData = NULL;
res = pfnCreateDebugUtilsMessengerEXT(instance, &callback1, NULL, &cb2);
if (res != VK_SUCCESS) {
// Do error handling for VK_ERROR_OUT_OF_MEMORY
}
VkDebugUtilsMessengerCreateInfoEXT callback3 = {
.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT,
.pNext = NULL,
.flags = 0,
.messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT,
.messageType = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT |
VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT,
.pfnUserCallback = mystdOutLogger,
.pUserData = NULL
};
res = pfnCreateDebugUtilsMessengerEXT(instance, &callback3, NULL, &cb3);
if (res != VK_SUCCESS) {
// Do error handling for VK_ERROR_OUT_OF_MEMORY
}
...
// Remove callbacks when cleaning up
pfnDestroyDebugUtilsMessengerEXT(instance, cb1, NULL);
pfnDestroyDebugUtilsMessengerEXT(instance, cb2, NULL);
pfnDestroyDebugUtilsMessengerEXT(instance, cb3, NULL);
Example 2
Associate a name with an image, for easier debugging in external tools or with validation layers that can print a friendly name when referring to objects in error messages.
extern VkInstance instance;
extern VkDevice device;
extern VkImage image;
// Must call extension functions through a function pointer:
PFN_vkSetDebugUtilsObjectNameEXT pfnSetDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT)vkGetInstanceProcAddr(instance, "vkSetDebugUtilsObjectNameEXT");
// Set a name on the image
const VkDebugUtilsObjectNameInfoEXT imageNameInfo =
{
.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT,
.pNext = NULL,
.objectType = VK_OBJECT_TYPE_IMAGE,
.objectHandle = (uint64_t)image,
.pObjectName = "Brick Diffuse Texture",
};
pfnSetDebugUtilsObjectNameEXT(device, &imageNameInfo);
// A subsequent error might print:
// Image 'Brick Diffuse Texture' (0xc0dec0dedeadbeef) is used in a
// command buffer with no memory bound to it.
Example 3
Annotating regions of a workload with naming information so that offline analysis tools can display a more usable visualization of the commands submitted.
extern VkInstance instance;
extern VkCommandBuffer commandBuffer;
// Must call extension functions through a function pointer:
PFN_vkQueueBeginDebugUtilsLabelEXT pfnQueueBeginDebugUtilsLabelEXT = (PFN_vkQueueBeginDebugUtilsLabelEXT)vkGetInstanceProcAddr(instance, "vkQueueBeginDebugUtilsLabelEXT");
PFN_vkQueueEndDebugUtilsLabelEXT pfnQueueEndDebugUtilsLabelEXT = (PFN_vkQueueEndDebugUtilsLabelEXT)vkGetInstanceProcAddr(instance, "vkQueueEndDebugUtilsLabelEXT");
PFN_vkCmdBeginDebugUtilsLabelEXT pfnCmdBeginDebugUtilsLabelEXT = (PFN_vkCmdBeginDebugUtilsLabelEXT)vkGetInstanceProcAddr(instance, "vkCmdBeginDebugUtilsLabelEXT");
PFN_vkCmdEndDebugUtilsLabelEXT pfnCmdEndDebugUtilsLabelEXT = (PFN_vkCmdEndDebugUtilsLabelEXT)vkGetInstanceProcAddr(instance, "vkCmdEndDebugUtilsLabelEXT");
PFN_vkCmdInsertDebugUtilsLabelEXT pfnCmdInsertDebugUtilsLabelEXT = (PFN_vkCmdInsertDebugUtilsLabelEXT)vkGetInstanceProcAddr(instance, "vkCmdInsertDebugUtilsLabelEXT");
// Describe the area being rendered
const VkDebugUtilsLabelEXT houseLabel =
{
.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT,
.pNext = NULL,
.pLabelName = "Brick House",
.color = { 1.0f, 0.0f, 0.0f, 1.0f },
};
// Start an annotated group of calls under the 'Brick House' name
pfnCmdBeginDebugUtilsLabelEXT(commandBuffer, &houseLabel);
{
// A mutable structure for each part being rendered
VkDebugUtilsLabelEXT housePartLabel =
{
.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT,
.pNext = NULL,
.pLabelName = NULL,
.color = { 0.0f, 0.0f, 0.0f, 0.0f },
};
// Set the name and insert the marker
housePartLabel.pLabelName = "Walls";
pfnCmdInsertDebugUtilsLabelEXT(commandBuffer, &housePartLabel);
// Insert the drawcall for the walls
vkCmdDrawIndexed(commandBuffer, 1000, 1, 0, 0, 0);
// Insert a recursive region for two sets of windows
housePartLabel.pLabelName = "Windows";
pfnCmdBeginDebugUtilsLabelEXT(commandBuffer, &housePartLabel);
{
vkCmdDrawIndexed(commandBuffer, 75, 6, 1000, 0, 0);
vkCmdDrawIndexed(commandBuffer, 100, 2, 1450, 0, 0);
}
pfnCmdEndDebugUtilsLabelEXT(commandBuffer);
housePartLabel.pLabelName = "Front Door";
pfnCmdInsertDebugUtilsLabelEXT(commandBuffer, &housePartLabel);
vkCmdDrawIndexed(commandBuffer, 350, 1, 1650, 0, 0);
housePartLabel.pLabelName = "Roof";
pfnCmdInsertDebugUtilsLabelEXT(commandBuffer, &housePartLabel);
vkCmdDrawIndexed(commandBuffer, 500, 1, 2000, 0, 0);
}
// End the house annotation started above
pfnCmdEndDebugUtilsLabelEXT(commandBuffer);
// Do other work
vkEndCommandBuffer(commandBuffer);
// Describe the queue being used
const VkDebugUtilsLabelEXT queueLabel =
{
.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT,
.pNext = NULL,
.pLabelName = "Main Render Work",
.color = { 0.0f, 1.0f, 0.0f, 1.0f },
};
// Identify the queue label region
pfnQueueBeginDebugUtilsLabelEXT(queue, &queueLabel);
// Submit the work for the main render thread
const VkCommandBuffer cmd_bufs[] = {commandBuffer};
VkSubmitInfo submit_info =
{
.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO,
.pNext = NULL,
.waitSemaphoreCount = 0,
.pWaitSemaphores = NULL,
.pWaitDstStageMask = NULL,
.commandBufferCount = 1,
.pCommandBuffers = cmd_bufs,
.signalSemaphoreCount = 0,
.pSignalSemaphores = NULL
};
vkQueueSubmit(queue, 1, &submit_info, fence);
// End the queue label region
pfnQueueEndDebugUtilsLabelEXT(queue);
VK_EXT_debug_utilsVkObjectType| Modifier and Type | Field and Description |
|---|---|
| public static final int | VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT
VkDebugUtilsMessageSeverityFlagBitsEXT - Bitmask specifying which severities of events cause a debug messenger callback Description
|
| public static final int | VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT
VkDebugUtilsMessageSeverityFlagBitsEXT - Bitmask specifying which severities of events cause a debug messenger callback Description
|
| public static final int | VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT
VkDebugUtilsMessageSeverityFlagBitsEXT - Bitmask specifying which severities of events cause a debug messenger callback Description
|
| public static final int | VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT
VkDebugUtilsMessageSeverityFlagBitsEXT - Bitmask specifying which severities of events cause a debug messenger callback Description
|
| public static final int | VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT
VkDebugUtilsMessageTypeFlagBitsEXT - Bitmask specifying which types of events cause a debug messenger callback Description
|
| public static final int | VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT
VkDebugUtilsMessageTypeFlagBitsEXT - Bitmask specifying which types of events cause a debug messenger callback Description
|
| public static final int | VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT
VkDebugUtilsMessageTypeFlagBitsEXT - Bitmask specifying which types of events cause a debug messenger callback Description
|
| public static final String | VK_EXT_DEBUG_UTILS_EXTENSION_NAME
The extension name. |
| public static final int | VK_EXT_DEBUG_UTILS_SPEC_VERSION
The extension specification version. |
| public static final int | VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT
Extends |
| public static final int | VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT
Extends |
| public static final int | VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT
Extends |
| public static final int | VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT
Extends |
| public static final int | VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT
Extends |
| public static final int | VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT
Extends |
| Access | Constructor and Description |
|---|---|
| protected |
| Modifier and Type | Method and Description |
|---|---|
| public static void | nvkCmdBeginDebugUtilsLabelEXT(VkCommandBuffer commandBuffer, long pLabelInfo)
Unsafe version of: |
| public static void | nvkCmdInsertDebugUtilsLabelEXT(VkCommandBuffer commandBuffer, long pLabelInfo)
Unsafe version of: |
| public static int | nvkCreateDebugUtilsMessengerEXT(VkInstance instance, long pCreateInfo, long pAllocator, long pMessenger)
Unsafe version of: |
| public static void | nvkDestroyDebugUtilsMessengerEXT(VkInstance instance, long messenger, long pAllocator)
Unsafe version of: |
| public static void | nvkQueueBeginDebugUtilsLabelEXT(VkQueue queue, long pLabelInfo)
Unsafe version of: |
| public static void | nvkQueueInsertDebugUtilsLabelEXT(VkQueue queue, long pLabelInfo)
Unsafe version of: |
| public static int | nvkSetDebugUtilsObjectNameEXT(VkDevice device, long pNameInfo)
Unsafe version of: |
| public static int | nvkSetDebugUtilsObjectTagEXT(VkDevice device, long pTagInfo)
Unsafe version of: |
| public static void | nvkSubmitDebugUtilsMessageEXT(VkInstance instance, int messageSeverity, int messageTypes, long pCallbackData)
Unsafe version of: |
| public static void | vkCmdBeginDebugUtilsLabelEXT(VkCommandBuffer
the command buffer into which the command is recorded. commandBuffer, VkDebugUtilsLabelEXT a pointer to a pLabelInfo)VkDebugUtilsLabelEXT structure specifying parameters of the label region to open.Open a command buffer debug label region. |
| public static void | vkCmdEndDebugUtilsLabelEXT(VkCommandBuffer
the command buffer into which the command is recorded. commandBuffer)Close a command buffer label region. |
| public static void | vkCmdInsertDebugUtilsLabelEXT(VkCommandBuffer
the command buffer into which the command is recorded. commandBuffer, VkDebugUtilsLabelEXT pLabelInfo)Insert a label into a command buffer. |
| public static int | vkCreateDebugUtilsMessengerEXT(VkInstance
the instance the messenger will be used with. instance, VkDebugUtilsMessengerCreateInfoEXT a pointer to a pCreateInfo, VkAllocationCallbacks VkDebugUtilsMessengerCreateInfoEXT structure containing the callback pointer, as well as defining conditions under which this messenger will trigger the callback.controls host memory allocation as described in the Memory Allocation chapter. pAllocator, LongBuffer a pointer to a pMessenger)VkDebugUtilsMessengerEXT handle in which the created object is returned.Create a debug messenger object. |
| public static int | vkCreateDebugUtilsMessengerEXT(VkInstance instance, VkDebugUtilsMessengerCreateInfoEXT pCreateInfo, VkAllocationCallbacks pAllocator, long[] pMessenger)
Array version of: |
| public static void | vkDestroyDebugUtilsMessengerEXT(VkInstance
the instance where the callback was created. instance, long the messenger, VkAllocationCallbacks VkDebugUtilsMessengerEXT object to destroy. messenger is an externally synchronized object and must not be used on more than one thread at a time. This means that vkDestroyDebugUtilsMessengerEXT must not be called when a callback is active.controls host memory allocation as described in the Memory Allocation chapter. pAllocator)Destroy a debug messenger object. |
| public static void | vkQueueBeginDebugUtilsLabelEXT(VkQueue
the queue in which to start a debug label region. queue, VkDebugUtilsLabelEXT a pointer to a pLabelInfo)VkDebugUtilsLabelEXT structure specifying parameters of the label region to open.Open a queue debug label region. |
| public static void | vkQueueEndDebugUtilsLabelEXT(VkQueue
the queue in which a debug label region should be closed. queue)Close a queue debug label region. |
| public static void | vkQueueInsertDebugUtilsLabelEXT(VkQueue
the queue into which a debug label will be inserted. queue, VkDebugUtilsLabelEXT a pointer to a pLabelInfo)VkDebugUtilsLabelEXT structure specifying parameters of the label to insert.Insert a label into a queue. |
| public static int | vkSetDebugUtilsObjectNameEXT(VkDevice
the device that is associated with the named object passed in via device, VkDebugUtilsObjectNameInfoEXT objectHandle.a pointer to a pNameInfo)VkDebugUtilsObjectNameInfoEXT structure specifying parameters of the name to set on the object.Give a user-friendly name to an object. |
| public static int | vkSetDebugUtilsObjectTagEXT(VkDevice
the device that created the object. device, VkDebugUtilsObjectTagInfoEXT a pointer to a pTagInfo)VkDebugUtilsObjectTagInfoEXT structure specifying parameters of the tag to attach to the object.Attach arbitrary data to an object. |
| public static void | vkSubmitDebugUtilsMessageEXT(VkInstance
the debug stream’s instance, int VkInstance.a messageSeverity, int VkDebugUtilsMessageSeverityFlagBitsEXT value specifying the severity of this event/message.a bitmask of messageTypes, VkDebugUtilsMessengerCallbackDataEXT VkDebugUtilsMessageTypeFlagBitsEXT specifying which type of event(s) to identify with this message.contains all the callback related data in the pCallbackData)VkDebugUtilsMessengerCallbackDataEXT structure.Inject a message into a debug stream. |
| VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT | back to summary |
|---|---|
| public static final int VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT VkDebugUtilsMessageSeverityFlagBitsEXT - Bitmask specifying which severities of events cause a debug messenger callback Description
NoteThe values of For example:
In addition, space has been left between the enums to allow for later addition of new severities in between the existing values. See Also | |
| VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT | back to summary |
|---|---|
| public static final int VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT VkDebugUtilsMessageSeverityFlagBitsEXT - Bitmask specifying which severities of events cause a debug messenger callback Description
NoteThe values of For example:
In addition, space has been left between the enums to allow for later addition of new severities in between the existing values. See Also | |
| VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT | back to summary |
|---|---|
| public static final int VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT VkDebugUtilsMessageSeverityFlagBitsEXT - Bitmask specifying which severities of events cause a debug messenger callback Description
NoteThe values of For example:
In addition, space has been left between the enums to allow for later addition of new severities in between the existing values. See Also | |
| VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT | back to summary |
|---|---|
| public static final int VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT VkDebugUtilsMessageSeverityFlagBitsEXT - Bitmask specifying which severities of events cause a debug messenger callback Description
NoteThe values of For example:
In addition, space has been left between the enums to allow for later addition of new severities in between the existing values. See Also | |
| VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT | back to summary |
|---|---|
| public static final int VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT VkDebugUtilsMessageTypeFlagBitsEXT - Bitmask specifying which types of events cause a debug messenger callback Description
| |
| VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT | back to summary |
|---|---|
| public static final int VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT VkDebugUtilsMessageTypeFlagBitsEXT - Bitmask specifying which types of events cause a debug messenger callback Description
| |
| VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT | back to summary |
|---|---|
| public static final int VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT VkDebugUtilsMessageTypeFlagBitsEXT - Bitmask specifying which types of events cause a debug messenger callback Description
| |
| VK_EXT_DEBUG_UTILS_EXTENSION_NAME | back to summary |
|---|---|
| public static final String VK_EXT_DEBUG_UTILS_EXTENSION_NAME The extension name. | |
| VK_EXT_DEBUG_UTILS_SPEC_VERSION | back to summary |
|---|---|
| public static final int VK_EXT_DEBUG_UTILS_SPEC_VERSION The extension specification version. | |
| VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT | back to summary |
|---|---|
| public static final int VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT Extends | |
| VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT | back to summary |
|---|---|
| public static final int VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT Extends Enum values: | |
| VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT | back to summary |
|---|---|
| public static final int VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT Extends Enum values: | |
| VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT | back to summary |
|---|---|
| public static final int VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT Extends Enum values: | |
| VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT | back to summary |
|---|---|
| public static final int VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT Extends Enum values: | |
| VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT | back to summary |
|---|---|
| public static final int VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT Extends Enum values: | |
| EXTDebugUtils | back to summary |
|---|---|
| protected EXTDebugUtils() | |
| nvkCmdBeginDebugUtilsLabelEXT | back to summary |
|---|---|
| public static void nvkCmdBeginDebugUtilsLabelEXT(VkCommandBuffer commandBuffer, long pLabelInfo) Unsafe version of: | |
| nvkCmdInsertDebugUtilsLabelEXT | back to summary |
|---|---|
| public static void nvkCmdInsertDebugUtilsLabelEXT(VkCommandBuffer commandBuffer, long pLabelInfo) Unsafe version of: | |
| nvkCreateDebugUtilsMessengerEXT | back to summary |
|---|---|
| public static int nvkCreateDebugUtilsMessengerEXT(VkInstance instance, long pCreateInfo, long pAllocator, long pMessenger) Unsafe version of: | |
| nvkDestroyDebugUtilsMessengerEXT | back to summary |
|---|---|
| public static void nvkDestroyDebugUtilsMessengerEXT(VkInstance instance, long messenger, long pAllocator) Unsafe version of: | |
| nvkQueueBeginDebugUtilsLabelEXT | back to summary |
|---|---|
| public static void nvkQueueBeginDebugUtilsLabelEXT(VkQueue queue, long pLabelInfo) Unsafe version of: | |
| nvkQueueInsertDebugUtilsLabelEXT | back to summary |
|---|---|
| public static void nvkQueueInsertDebugUtilsLabelEXT(VkQueue queue, long pLabelInfo) Unsafe version of: | |
| nvkSetDebugUtilsObjectNameEXT | back to summary |
|---|---|
| public static int nvkSetDebugUtilsObjectNameEXT(VkDevice device, long pNameInfo) Unsafe version of: | |
| nvkSetDebugUtilsObjectTagEXT | back to summary |
|---|---|
| public static int nvkSetDebugUtilsObjectTagEXT(VkDevice device, long pTagInfo) Unsafe version of: | |
| nvkSubmitDebugUtilsMessageEXT | back to summary |
|---|---|
| public static void nvkSubmitDebugUtilsMessageEXT(VkInstance instance, int messageSeverity, int messageTypes, long pCallbackData) Unsafe version of: | |
| vkCmdBeginDebugUtilsLabelEXT | back to summary | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| public static void vkCmdBeginDebugUtilsLabelEXT(VkCommandBuffer commandBuffer, VkDebugUtilsLabelEXT pLabelInfo) Open a command buffer debug label region. C SpecificationA command buffer debug label region can be opened by calling:
Valid Usage (Implicit)
Host Synchronization
Command Properties
See Also
| |||||||||||
| vkCmdEndDebugUtilsLabelEXT | back to summary | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| public static void vkCmdEndDebugUtilsLabelEXT(VkCommandBuffer commandBuffer) Close a command buffer label region. C SpecificationA command buffer label region can be closed by calling:
DescriptionAn application may open a debug label region in one command buffer and close it in another, or otherwise split debug label regions across multiple command buffers or multiple queue submissions. When viewed from the linear series of submissions to a single queue, the calls to There can be problems reporting command buffer debug labels during the recording process because command buffers may be recorded out of sequence with the resulting execution order. Since the recording order may be different, a solitary command buffer may have an inconsistent view of the debug label regions by itself. Therefore, if an issue occurs during the recording of a command buffer, and the environment requires returning debug labels, the implementation may return only those labels it is aware of. This is true even if the implementation is aware of only the debug labels within the command buffer being actively recorded. Valid Usage
Valid Usage (Implicit)
Host Synchronization
Command Properties
| |||||||||||
| vkCmdInsertDebugUtilsLabelEXT | back to summary | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| public static void vkCmdInsertDebugUtilsLabelEXT(VkCommandBuffer commandBuffer, VkDebugUtilsLabelEXT pLabelInfo) Insert a label into a command buffer. C SpecificationA single debug label can be inserted into a command buffer by calling:
Valid Usage (Implicit)
Host Synchronization
Command Properties
See Also
| |||||||||||
| vkCreateDebugUtilsMessengerEXT | back to summary |
|---|---|
| public static int vkCreateDebugUtilsMessengerEXT(VkInstance instance, VkDebugUtilsMessengerCreateInfoEXT pCreateInfo, VkAllocationCallbacks pAllocator, LongBuffer pMessenger) Create a debug messenger object. C SpecificationA debug messenger triggers a debug callback with a debug message when an event of interest occurs. To create a debug messenger which will trigger a debug callback, call:
Valid Usage (Implicit)
Return Codes
The application must ensure that See Also
| |
| vkCreateDebugUtilsMessengerEXT | back to summary |
|---|---|
| public static int vkCreateDebugUtilsMessengerEXT(VkInstance instance, VkDebugUtilsMessengerCreateInfoEXT pCreateInfo, VkAllocationCallbacks pAllocator, long[] pMessenger) Array version of:
| |
| vkDestroyDebugUtilsMessengerEXT | back to summary |
|---|---|
| public static void vkDestroyDebugUtilsMessengerEXT(VkInstance instance, long messenger, VkAllocationCallbacks pAllocator) Destroy a debug messenger object. C SpecificationTo destroy a
Valid Usage
Valid Usage (Implicit)
Host Synchronization
The application must ensure that See Also
| |
| vkQueueBeginDebugUtilsLabelEXT | back to summary | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| public static void vkQueueBeginDebugUtilsLabelEXT(VkQueue queue, VkDebugUtilsLabelEXT pLabelInfo) Open a queue debug label region. C SpecificationA queue debug label region is opened by calling:
Valid Usage (Implicit)
Command Properties
See Also
| |||||||||||
| vkQueueEndDebugUtilsLabelEXT | back to summary | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| public static void vkQueueEndDebugUtilsLabelEXT(VkQueue queue) Close a queue debug label region. C SpecificationA queue debug label region is closed by calling:
DescriptionThe calls to Valid Usage
Valid Usage (Implicit)
Command Properties
| |||||||||||
| vkQueueInsertDebugUtilsLabelEXT | back to summary | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| public static void vkQueueInsertDebugUtilsLabelEXT(VkQueue queue, VkDebugUtilsLabelEXT pLabelInfo) Insert a label into a queue. C SpecificationA single label can be inserted into a queue by calling:
Valid Usage (Implicit)
Command Properties
See Also
| |||||||||||
| vkSetDebugUtilsObjectNameEXT | back to summary |
|---|---|
| public static int vkSetDebugUtilsObjectNameEXT(VkDevice device, VkDebugUtilsObjectNameInfoEXT pNameInfo) Give a user-friendly name to an object. C Specification
Valid Usage
Valid Usage (Implicit)
Host Synchronization
Return Codes
See Also
| |
| vkSetDebugUtilsObjectTagEXT | back to summary |
|---|---|
| public static int vkSetDebugUtilsObjectTagEXT(VkDevice device, VkDebugUtilsObjectTagInfoEXT pTagInfo) Attach arbitrary data to an object. C Specification
Valid Usage
Valid Usage (Implicit)
Host Synchronization
Return Codes
See Also
| |
| vkSubmitDebugUtilsMessageEXT | back to summary |
|---|---|
| public static void vkSubmitDebugUtilsMessageEXT(VkInstance instance, int messageSeverity, int messageTypes, VkDebugUtilsMessengerCallbackDataEXT pCallbackData) Inject a message into a debug stream. C SpecificationThere may be times that a user wishes to intentionally submit a debug message. To do this, call:
DescriptionThe call will propagate through the layers and generate callback(s) as indicated by the message’s flags. The parameters are passed on to the callback in addition to the Valid Usage
Valid Usage (Implicit)
See Also
| |