Top Description Fields Constructors Methods
org.lwjgl.vulkan

public Class EXTDebugUtils

extends Object
Class Inheritance
Imports
javax.annotation.*, java.nio.*, org.lwjgl.system.*

Due to the nature of the Vulkan interface, there is very little error information available to the developer and application. By using the 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:

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.

Examples

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_utils
Name String
VK_EXT_debug_utils
Extension Type
Instance extension
Registered Extension Number
129
Revision
2
Special Use
Contact
Other Extension Metadata
Last Modified Date
2020-04-03
Revision
2
IP Status
No known IP claims.
Dependencies
  • This extension is written against version 1.0 of the Vulkan API.
  • Requires VkObjectType
Contributors
  • Mark Young, LunarG
  • Baldur Karlsson
  • Ian Elliott, Google
  • Courtney Goeltzenleuchter, Google
  • Karl Schultz, LunarG
  • Mark Lobodzinski, LunarG
  • Mike Schuchardt, LunarG
  • Jaakko Konttinen, AMD
  • Dan Ginsburg, Valve Software
  • Rolando Olivares, Epic Games
  • Dan Baker, Oxide Games
  • Kyle Spagnoli, NVIDIA
  • Jon Ashburn, LunarG
  • Piers Daniell, NVIDIA

Field Summary

Modifier and TypeField 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

  • DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT specifies the most verbose output indicating all diagnostic messages from the Vulkan loader, layers, and drivers should be captured.
  • DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT specifies an informational message such as resource details that may be handy when debugging an application.
  • DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT specifies use of Vulkan that may expose an app bug. Such cases may not be immediately harmful, such as a fragment shader outputting to a location with no attachment. Other cases may point to behavior that is almost certainly bad when unintended such as using an image whose memory has not been filled. In general if you see a warning but you know that the behavior is intended/desired, then simply ignore the warning.
  • DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT specifies that the application has violated a valid usage condition of the specification.
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

  • DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT specifies the most verbose output indicating all diagnostic messages from the Vulkan loader, layers, and drivers should be captured.
  • DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT specifies an informational message such as resource details that may be handy when debugging an application.
  • DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT specifies use of Vulkan that may expose an app bug. Such cases may not be immediately harmful, such as a fragment shader outputting to a location with no attachment. Other cases may point to behavior that is almost certainly bad when unintended such as using an image whose memory has not been filled. In general if you see a warning but you know that the behavior is intended/desired, then simply ignore the warning.
  • DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT specifies that the application has violated a valid usage condition of the specification.
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

  • DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT specifies the most verbose output indicating all diagnostic messages from the Vulkan loader, layers, and drivers should be captured.
  • DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT specifies an informational message such as resource details that may be handy when debugging an application.
  • DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT specifies use of Vulkan that may expose an app bug. Such cases may not be immediately harmful, such as a fragment shader outputting to a location with no attachment. Other cases may point to behavior that is almost certainly bad when unintended such as using an image whose memory has not been filled. In general if you see a warning but you know that the behavior is intended/desired, then simply ignore the warning.
  • DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT specifies that the application has violated a valid usage condition of the specification.
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

  • DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT specifies the most verbose output indicating all diagnostic messages from the Vulkan loader, layers, and drivers should be captured.
  • DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT specifies an informational message such as resource details that may be handy when debugging an application.
  • DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT specifies use of Vulkan that may expose an app bug. Such cases may not be immediately harmful, such as a fragment shader outputting to a location with no attachment. Other cases may point to behavior that is almost certainly bad when unintended such as using an image whose memory has not been filled. In general if you see a warning but you know that the behavior is intended/desired, then simply ignore the warning.
  • DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT specifies that the application has violated a valid usage condition of the specification.
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
public static final int
VK_EXT_DEBUG_UTILS_SPEC_VERSION

The extension specification version.

public static final int
public static final int
public static final int
public static final int
public static final int
public static final int

Constructor Summary

AccessConstructor and Description
protected

Method Summary

Modifier and TypeMethod and Description
public static void
nvkCmdBeginDebugUtilsLabelEXT(VkCommandBuffer commandBuffer, long pLabelInfo)

Unsafe version of: CmdBeginDebugUtilsLabelEXT

public static void
nvkCmdInsertDebugUtilsLabelEXT(VkCommandBuffer commandBuffer, long pLabelInfo)

Unsafe version of: CmdInsertDebugUtilsLabelEXT

public static int
nvkCreateDebugUtilsMessengerEXT(VkInstance instance, long pCreateInfo, long pAllocator, long pMessenger)

Unsafe version of: CreateDebugUtilsMessengerEXT

public static void
nvkDestroyDebugUtilsMessengerEXT(VkInstance instance, long messenger, long pAllocator)

Unsafe version of: DestroyDebugUtilsMessengerEXT

public static void
nvkQueueBeginDebugUtilsLabelEXT(VkQueue queue, long pLabelInfo)

Unsafe version of: QueueBeginDebugUtilsLabelEXT

public static void
public static int
nvkSetDebugUtilsObjectNameEXT(VkDevice device, long pNameInfo)

Unsafe version of: SetDebugUtilsObjectNameEXT

public static int
nvkSetDebugUtilsObjectTagEXT(VkDevice device, long pTagInfo)

Unsafe version of: SetDebugUtilsObjectTagEXT

public static void
nvkSubmitDebugUtilsMessageEXT(VkInstance instance, int messageSeverity, int messageTypes, long pCallbackData)

Unsafe version of: SubmitDebugUtilsMessageEXT

public static void
vkCmdBeginDebugUtilsLabelEXT(VkCommandBuffer
the command buffer into which the command is recorded.
commandBuffer
,
VkDebugUtilsLabelEXT
a pointer to a VkDebugUtilsLabelEXT structure specifying parameters of the label region to open.
pLabelInfo
)

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 VkDebugUtilsMessengerCreateInfoEXT structure containing the callback pointer, as well as defining conditions under which this messenger will trigger the callback.
pCreateInfo
,
VkAllocationCallbacks
controls host memory allocation as described in the Memory Allocation chapter.
pAllocator
,
LongBuffer
a pointer to a VkDebugUtilsMessengerEXT handle in which the created object is returned.
pMessenger
)

Create a debug messenger object.

public static int
public static void
vkDestroyDebugUtilsMessengerEXT(VkInstance
the instance where the callback was created.
instance
,
long
the 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.
messenger
,
VkAllocationCallbacks
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 VkDebugUtilsLabelEXT structure specifying parameters of the label region to open.
pLabelInfo
)

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 VkDebugUtilsLabelEXT structure specifying parameters of the label to insert.
pLabelInfo
)

Insert a label into a queue.

public static int
vkSetDebugUtilsObjectNameEXT(VkDevice
the device that is associated with the named object passed in via objectHandle.
device
,
VkDebugUtilsObjectNameInfoEXT
a pointer to a VkDebugUtilsObjectNameInfoEXT structure specifying parameters of the name to set on the object.
pNameInfo
)

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 VkDebugUtilsObjectTagInfoEXT structure specifying parameters of the tag to attach to the object.
pTagInfo
)

Attach arbitrary data to an object.

public static void
vkSubmitDebugUtilsMessageEXT(VkInstance
the debug stream’s VkInstance.
instance
,
int
a VkDebugUtilsMessageSeverityFlagBitsEXT value specifying the severity of this event/message.
messageSeverity
,
int
a bitmask of VkDebugUtilsMessageTypeFlagBitsEXT specifying which type of event(s) to identify with this message.
messageTypes
,
VkDebugUtilsMessengerCallbackDataEXT
contains all the callback related data in the VkDebugUtilsMessengerCallbackDataEXT structure.
pCallbackData
)

Inject a message into a debug stream.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXTback 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
  • DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT specifies the most verbose output indicating all diagnostic messages from the Vulkan loader, layers, and drivers should be captured.
  • DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT specifies an informational message such as resource details that may be handy when debugging an application.
  • DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT specifies use of Vulkan that may expose an app bug. Such cases may not be immediately harmful, such as a fragment shader outputting to a location with no attachment. Other cases may point to behavior that is almost certainly bad when unintended such as using an image whose memory has not been filled. In general if you see a warning but you know that the behavior is intended/desired, then simply ignore the warning.
  • DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT specifies that the application has violated a valid usage condition of the specification.
Note

The values of VkDebugUtilsMessageSeverityFlagBitsEXT are sorted based on severity. The higher the flag value, the more severe the message. This allows for simple boolean operation comparisons when looking at VkDebugUtilsMessageSeverityFlagBitsEXT values.

For example:


    if (messageSeverity >= VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT) {
        // Do something for warnings and errors
    }

In addition, space has been left between the enums to allow for later addition of new severities in between the existing values.

See Also

SubmitDebugUtilsMessageEXT

VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXTback 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
  • DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT specifies the most verbose output indicating all diagnostic messages from the Vulkan loader, layers, and drivers should be captured.
  • DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT specifies an informational message such as resource details that may be handy when debugging an application.
  • DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT specifies use of Vulkan that may expose an app bug. Such cases may not be immediately harmful, such as a fragment shader outputting to a location with no attachment. Other cases may point to behavior that is almost certainly bad when unintended such as using an image whose memory has not been filled. In general if you see a warning but you know that the behavior is intended/desired, then simply ignore the warning.
  • DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT specifies that the application has violated a valid usage condition of the specification.
Note

The values of VkDebugUtilsMessageSeverityFlagBitsEXT are sorted based on severity. The higher the flag value, the more severe the message. This allows for simple boolean operation comparisons when looking at VkDebugUtilsMessageSeverityFlagBitsEXT values.

For example:


    if (messageSeverity >= VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT) {
        // Do something for warnings and errors
    }

In addition, space has been left between the enums to allow for later addition of new severities in between the existing values.

See Also

SubmitDebugUtilsMessageEXT

VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXTback 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
  • DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT specifies the most verbose output indicating all diagnostic messages from the Vulkan loader, layers, and drivers should be captured.
  • DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT specifies an informational message such as resource details that may be handy when debugging an application.
  • DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT specifies use of Vulkan that may expose an app bug. Such cases may not be immediately harmful, such as a fragment shader outputting to a location with no attachment. Other cases may point to behavior that is almost certainly bad when unintended such as using an image whose memory has not been filled. In general if you see a warning but you know that the behavior is intended/desired, then simply ignore the warning.
  • DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT specifies that the application has violated a valid usage condition of the specification.
Note

The values of VkDebugUtilsMessageSeverityFlagBitsEXT are sorted based on severity. The higher the flag value, the more severe the message. This allows for simple boolean operation comparisons when looking at VkDebugUtilsMessageSeverityFlagBitsEXT values.

For example:


    if (messageSeverity >= VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT) {
        // Do something for warnings and errors
    }

In addition, space has been left between the enums to allow for later addition of new severities in between the existing values.

See Also

SubmitDebugUtilsMessageEXT

VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXTback 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
  • DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT specifies the most verbose output indicating all diagnostic messages from the Vulkan loader, layers, and drivers should be captured.
  • DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT specifies an informational message such as resource details that may be handy when debugging an application.
  • DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT specifies use of Vulkan that may expose an app bug. Such cases may not be immediately harmful, such as a fragment shader outputting to a location with no attachment. Other cases may point to behavior that is almost certainly bad when unintended such as using an image whose memory has not been filled. In general if you see a warning but you know that the behavior is intended/desired, then simply ignore the warning.
  • DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT specifies that the application has violated a valid usage condition of the specification.
Note

The values of VkDebugUtilsMessageSeverityFlagBitsEXT are sorted based on severity. The higher the flag value, the more severe the message. This allows for simple boolean operation comparisons when looking at VkDebugUtilsMessageSeverityFlagBitsEXT values.

For example:


    if (messageSeverity >= VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT) {
        // Do something for warnings and errors
    }

In addition, space has been left between the enums to allow for later addition of new severities in between the existing values.

See Also

SubmitDebugUtilsMessageEXT

VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXTback 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_EXTback 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_EXTback 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_NAMEback to summary
public static final String VK_EXT_DEBUG_UTILS_EXTENSION_NAME

The extension name.

VK_EXT_DEBUG_UTILS_SPEC_VERSIONback to summary
public static final int VK_EXT_DEBUG_UTILS_SPEC_VERSION

The extension specification version.

VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXTback to summary
public static final int VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT

Extends VkObjectType.

VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXTback to summary
public static final int VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT

Extends VkStructureType.

Enum values:
VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXTback to summary
public static final int VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT

Extends VkStructureType.

Enum values:
VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXTback to summary
public static final int VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT

Extends VkStructureType.

Enum values:
VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXTback to summary
public static final int VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT

Extends VkStructureType.

Enum values:
VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXTback to summary
public static final int VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT

Extends VkStructureType.

Enum values:

Constructor Detail

EXTDebugUtilsback to summary
protected EXTDebugUtils()

Method Detail

nvkCmdBeginDebugUtilsLabelEXTback to summary
public static void nvkCmdBeginDebugUtilsLabelEXT(VkCommandBuffer commandBuffer, long pLabelInfo)

Unsafe version of: CmdBeginDebugUtilsLabelEXT

nvkCmdInsertDebugUtilsLabelEXTback to summary
public static void nvkCmdInsertDebugUtilsLabelEXT(VkCommandBuffer commandBuffer, long pLabelInfo)

Unsafe version of: CmdInsertDebugUtilsLabelEXT

nvkCreateDebugUtilsMessengerEXTback to summary
public static int nvkCreateDebugUtilsMessengerEXT(VkInstance instance, long pCreateInfo, long pAllocator, long pMessenger)

Unsafe version of: CreateDebugUtilsMessengerEXT

nvkDestroyDebugUtilsMessengerEXTback to summary
public static void nvkDestroyDebugUtilsMessengerEXT(VkInstance instance, long messenger, long pAllocator)

Unsafe version of: DestroyDebugUtilsMessengerEXT

nvkQueueBeginDebugUtilsLabelEXTback to summary
public static void nvkQueueBeginDebugUtilsLabelEXT(VkQueue queue, long pLabelInfo)

Unsafe version of: QueueBeginDebugUtilsLabelEXT

nvkQueueInsertDebugUtilsLabelEXTback to summary
public static void nvkQueueInsertDebugUtilsLabelEXT(VkQueue queue, long pLabelInfo)

Unsafe version of: QueueInsertDebugUtilsLabelEXT

nvkSetDebugUtilsObjectNameEXTback to summary
public static int nvkSetDebugUtilsObjectNameEXT(VkDevice device, long pNameInfo)

Unsafe version of: SetDebugUtilsObjectNameEXT

nvkSetDebugUtilsObjectTagEXTback to summary
public static int nvkSetDebugUtilsObjectTagEXT(VkDevice device, long pTagInfo)

Unsafe version of: SetDebugUtilsObjectTagEXT

nvkSubmitDebugUtilsMessageEXTback to summary
public static void nvkSubmitDebugUtilsMessageEXT(VkInstance instance, int messageSeverity, int messageTypes, long pCallbackData)

Unsafe version of: SubmitDebugUtilsMessageEXT

vkCmdBeginDebugUtilsLabelEXTback to summary
public static void vkCmdBeginDebugUtilsLabelEXT(VkCommandBuffer commandBuffer, VkDebugUtilsLabelEXT pLabelInfo)

Open a command buffer debug label region.

C Specification

A command buffer debug label region can be opened by calling:


void vkCmdBeginDebugUtilsLabelEXT(
    VkCommandBuffer                             commandBuffer,
    const VkDebugUtilsLabelEXT*                 pLabelInfo);
Valid Usage (Implicit)
  • commandBuffer must be a valid VkCommandBuffer handle
  • pLabelInfo must be a valid pointer to a valid VkDebugUtilsLabelEXT structure
  • commandBuffer must be in the recording state
  • The VkCommandPool that commandBuffer was allocated from must support graphics, or compute operations
  • This command must only be called outside of a video coding scope
Host Synchronization
  • Host access to commandBuffer must be externally synchronized
  • Host access to the VkCommandPool that commandBuffer was allocated from must be externally synchronized
Command Properties
Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBothOutsideGraphics ComputeAction State
See Also

VkDebugUtilsLabelEXT

Parameters
commandBuffer:VkCommandBuffer

the command buffer into which the command is recorded.

pLabelInfo:VkDebugUtilsLabelEXT

a pointer to a VkDebugUtilsLabelEXT structure specifying parameters of the label region to open.

vkCmdEndDebugUtilsLabelEXTback to summary
public static void vkCmdEndDebugUtilsLabelEXT(VkCommandBuffer commandBuffer)

Close a command buffer label region.

C Specification

A command buffer label region can be closed by calling:


void vkCmdEndDebugUtilsLabelEXT(
    VkCommandBuffer                             commandBuffer);
Description

An 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 CmdBeginDebugUtilsLabelEXT and CmdEndDebugUtilsLabelEXT must be matched and balanced.

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
  • There must be an outstanding vkCmdBeginDebugUtilsLabelEXT command prior to the vkCmdEndDebugUtilsLabelEXT on the queue that commandBuffer is submitted to
  • If commandBuffer is a secondary command buffer, there must be an outstanding vkCmdBeginDebugUtilsLabelEXT command recorded to commandBuffer that has not previously been ended by a call to vkCmdEndDebugUtilsLabelEXT
Valid Usage (Implicit)
  • commandBuffer must be a valid VkCommandBuffer handle
  • commandBuffer must be in the recording state
  • The VkCommandPool that commandBuffer was allocated from must support graphics, or compute operations
  • This command must only be called outside of a video coding scope
Host Synchronization
  • Host access to commandBuffer must be externally synchronized
  • Host access to the VkCommandPool that commandBuffer was allocated from must be externally synchronized
Command Properties
Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBothOutsideGraphics ComputeAction State
Parameters
commandBuffer:VkCommandBuffer

the command buffer into which the command is recorded.

vkCmdInsertDebugUtilsLabelEXTback to summary
public static void vkCmdInsertDebugUtilsLabelEXT(VkCommandBuffer commandBuffer, VkDebugUtilsLabelEXT pLabelInfo)

Insert a label into a command buffer.

C Specification

A single debug label can be inserted into a command buffer by calling:


void vkCmdInsertDebugUtilsLabelEXT(
    VkCommandBuffer                             commandBuffer,
    const VkDebugUtilsLabelEXT*                 pLabelInfo);
Valid Usage (Implicit)
  • commandBuffer must be a valid VkCommandBuffer handle
  • pLabelInfo must be a valid pointer to a valid VkDebugUtilsLabelEXT structure
  • commandBuffer must be in the recording state
  • The VkCommandPool that commandBuffer was allocated from must support graphics, or compute operations
  • This command must only be called outside of a video coding scope
Host Synchronization
  • Host access to commandBuffer must be externally synchronized
  • Host access to the VkCommandPool that commandBuffer was allocated from must be externally synchronized
Command Properties
Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBothOutsideGraphics ComputeAction
See Also

VkDebugUtilsLabelEXT

Parameters
commandBuffer:VkCommandBuffer

the command buffer into which the command is recorded.

vkCreateDebugUtilsMessengerEXTback to summary
public static int vkCreateDebugUtilsMessengerEXT(VkInstance instance, VkDebugUtilsMessengerCreateInfoEXT pCreateInfo, VkAllocationCallbacks pAllocator, LongBuffer pMessenger)

Create a debug messenger object.

C Specification

A 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:


VkResult vkCreateDebugUtilsMessengerEXT(
    VkInstance                                  instance,
    const VkDebugUtilsMessengerCreateInfoEXT*   pCreateInfo,
    const VkAllocationCallbacks*                pAllocator,
    VkDebugUtilsMessengerEXT*                   pMessenger);
Valid Usage (Implicit)
  • instance must be a valid VkInstance handle
  • pCreateInfo must be a valid pointer to a valid VkDebugUtilsMessengerCreateInfoEXT structure
  • If pAllocator is not NULL, pAllocator must be a valid pointer to a valid VkAllocationCallbacks structure
  • pMessenger must be a valid pointer to a VkDebugUtilsMessengerEXT handle
Return Codes
On success, this command returns
On failure, this command returns

The application must ensure that CreateDebugUtilsMessengerEXT is not executed in parallel with any Vulkan command that is also called with instance or child of instance as the dispatchable argument.

See Also

VkAllocationCallbacks, VkDebugUtilsMessengerCreateInfoEXT

Parameters
instance:VkInstance

the instance the messenger will be used with.

pCreateInfo:VkDebugUtilsMessengerCreateInfoEXT

a pointer to a VkDebugUtilsMessengerCreateInfoEXT structure containing the callback pointer, as well as defining conditions under which this messenger will trigger the callback.

pAllocator:VkAllocationCallbacks

controls host memory allocation as described in the Memory Allocation chapter.

pMessenger:LongBuffer

a pointer to a VkDebugUtilsMessengerEXT handle in which the created object is returned.

Annotations
@NativeType:VkResult
vkCreateDebugUtilsMessengerEXTback to summary
public static int vkCreateDebugUtilsMessengerEXT(VkInstance instance, VkDebugUtilsMessengerCreateInfoEXT pCreateInfo, VkAllocationCallbacks pAllocator, long[] pMessenger)

Array version of: CreateDebugUtilsMessengerEXT

Annotations
@NativeType:VkResult
vkDestroyDebugUtilsMessengerEXTback to summary
public static void vkDestroyDebugUtilsMessengerEXT(VkInstance instance, long messenger, VkAllocationCallbacks pAllocator)

Destroy a debug messenger object.

C Specification

To destroy a VkDebugUtilsMessengerEXT object, call:


void vkDestroyDebugUtilsMessengerEXT(
    VkInstance                                  instance,
    VkDebugUtilsMessengerEXT                    messenger,
    const VkAllocationCallbacks*                pAllocator);
Valid Usage
  • If VkAllocationCallbacks were provided when messenger was created, a compatible set of callbacks must be provided here
  • If no VkAllocationCallbacks were provided when messenger was created, pAllocator must be NULL
Valid Usage (Implicit)
  • instance must be a valid VkInstance handle
  • If messenger is not NULL_HANDLE, messenger must be a valid VkDebugUtilsMessengerEXT handle
  • If pAllocator is not NULL, pAllocator must be a valid pointer to a valid VkAllocationCallbacks structure
  • If messenger is a valid handle, it must have been created, allocated, or retrieved from instance
Host Synchronization
  • Host access to messenger must be externally synchronized

The application must ensure that DestroyDebugUtilsMessengerEXT is not executed in parallel with any Vulkan command that is also called with instance or child of instance as the dispatchable argument.

See Also

VkAllocationCallbacks

Parameters
instance:VkInstance

the instance where the callback was created.

messenger:long

the 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.

pAllocator:VkAllocationCallbacks

controls host memory allocation as described in the Memory Allocation chapter.

vkQueueBeginDebugUtilsLabelEXTback to summary
public static void vkQueueBeginDebugUtilsLabelEXT(VkQueue queue, VkDebugUtilsLabelEXT pLabelInfo)

Open a queue debug label region.

C Specification

A queue debug label region is opened by calling:


void vkQueueBeginDebugUtilsLabelEXT(
    VkQueue                                     queue,
    const VkDebugUtilsLabelEXT*                 pLabelInfo);
Valid Usage (Implicit)
  • queue must be a valid VkQueue handle
  • pLabelInfo must be a valid pointer to a valid VkDebugUtilsLabelEXT structure
Command Properties
Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
---Any-
See Also

VkDebugUtilsLabelEXT

Parameters
queue:VkQueue

the queue in which to start a debug label region.

pLabelInfo:VkDebugUtilsLabelEXT

a pointer to a VkDebugUtilsLabelEXT structure specifying parameters of the label region to open.

vkQueueEndDebugUtilsLabelEXTback to summary
public static void vkQueueEndDebugUtilsLabelEXT(VkQueue queue)

Close a queue debug label region.

C Specification

A queue debug label region is closed by calling:


void vkQueueEndDebugUtilsLabelEXT(
    VkQueue                                     queue);
Description

The calls to QueueBeginDebugUtilsLabelEXT and QueueEndDebugUtilsLabelEXT must be matched and balanced.

Valid Usage
  • There must be an outstanding vkQueueBeginDebugUtilsLabelEXT command prior to the vkQueueEndDebugUtilsLabelEXT on the queue
Valid Usage (Implicit)
  • queue must be a valid VkQueue handle
Command Properties
Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
---Any-
Parameters
queue:VkQueue

the queue in which a debug label region should be closed.

vkQueueInsertDebugUtilsLabelEXTback to summary
public static void vkQueueInsertDebugUtilsLabelEXT(VkQueue queue, VkDebugUtilsLabelEXT pLabelInfo)

Insert a label into a queue.

C Specification

A single label can be inserted into a queue by calling:


void vkQueueInsertDebugUtilsLabelEXT(
    VkQueue                                     queue,
    const VkDebugUtilsLabelEXT*                 pLabelInfo);
Valid Usage (Implicit)
  • queue must be a valid VkQueue handle
  • pLabelInfo must be a valid pointer to a valid VkDebugUtilsLabelEXT structure
Command Properties
Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
---Any-
See Also

VkDebugUtilsLabelEXT

Parameters
queue:VkQueue

the queue into which a debug label will be inserted.

pLabelInfo:VkDebugUtilsLabelEXT

a pointer to a VkDebugUtilsLabelEXT structure specifying parameters of the label to insert.

vkSetDebugUtilsObjectNameEXTback to summary
public static int vkSetDebugUtilsObjectNameEXT(VkDevice device, VkDebugUtilsObjectNameInfoEXT pNameInfo)

Give a user-friendly name to an object.

C Specification

VkResult vkSetDebugUtilsObjectNameEXT(
    VkDevice                                    device,
    const VkDebugUtilsObjectNameInfoEXT*        pNameInfo);
Valid Usage
  • pNameInfo→objectType must not be OBJECT_TYPE_UNKNOWN
  • pNameInfo→objectHandle must not be NULL_HANDLE
  • If pNameInfo→objectHandle is the valid handle of an instance-level object, the VkDevice identified by device must be a descendent of the same VkInstance as the object identified by pNameInfo→objectHandle
  • If pNameInfo→objectHandle is the valid handle of a physical-device-level object, the VkDevice identified by device must be a descendant of the same VkPhysicalDevice as the object identified by pNameInfo→objectHandle
  • If pNameInfo→objectHandle is the valid handle of a device-level object, that object must be a descendent of the VkDevice identified by device
Valid Usage (Implicit)
Host Synchronization
  • Host access to pNameInfo→objectHandle must be externally synchronized
Return Codes
On success, this command returns
On failure, this command returns
See Also

VkDebugUtilsObjectNameInfoEXT

Parameters
device:VkDevice

the device that is associated with the named object passed in via objectHandle.

pNameInfo:VkDebugUtilsObjectNameInfoEXT

a pointer to a VkDebugUtilsObjectNameInfoEXT structure specifying parameters of the name to set on the object.

Annotations
@NativeType:VkResult
vkSetDebugUtilsObjectTagEXTback to summary
public static int vkSetDebugUtilsObjectTagEXT(VkDevice device, VkDebugUtilsObjectTagInfoEXT pTagInfo)

Attach arbitrary data to an object.

C Specification

VkResult vkSetDebugUtilsObjectTagEXT(
    VkDevice                                    device,
    const VkDebugUtilsObjectTagInfoEXT*         pTagInfo);
Valid Usage
  • If pNameInfo→objectHandle is the valid handle of an instance-level object, the VkDevice identified by device must be a descendent of the same VkInstance as the object identified by pNameInfo→objectHandle
  • If pNameInfo→objectHandle is the valid handle of a physical-device-level object, the VkDevice identified by device must be a descendant of the same VkPhysicalDevice as the object identified by pNameInfo→objectHandle
  • If pNameInfo→objectHandle is the valid handle of a device-level object, that object must be a descendent of the VkDevice identified by device
Valid Usage (Implicit)
Host Synchronization
  • Host access to pTagInfo→objectHandle must be externally synchronized
Return Codes
On success, this command returns
On failure, this command returns
See Also

VkDebugUtilsObjectTagInfoEXT

Parameters
device:VkDevice

the device that created the object.

pTagInfo:VkDebugUtilsObjectTagInfoEXT

a pointer to a VkDebugUtilsObjectTagInfoEXT structure specifying parameters of the tag to attach to the object.

Annotations
@NativeType:VkResult
vkSubmitDebugUtilsMessageEXTback to summary
public static void vkSubmitDebugUtilsMessageEXT(VkInstance instance, int messageSeverity, int messageTypes, VkDebugUtilsMessengerCallbackDataEXT pCallbackData)

Inject a message into a debug stream.

C Specification

There may be times that a user wishes to intentionally submit a debug message. To do this, call:


void vkSubmitDebugUtilsMessageEXT(
    VkInstance                                  instance,
    VkDebugUtilsMessageSeverityFlagBitsEXT      messageSeverity,
    VkDebugUtilsMessageTypeFlagsEXT             messageTypes,
    const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
Description

The 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 pUserData value that was defined at the time the messenger was registered.

Valid Usage
  • The objectType member of each element of pCallbackData→pObjects must not be OBJECT_TYPE_UNKNOWN
Valid Usage (Implicit)
  • instance must be a valid VkInstance handle
  • messageSeverity must be a valid VkDebugUtilsMessageSeverityFlagBitsEXT value
  • messageTypes must be a valid combination of VkDebugUtilsMessageTypeFlagBitsEXT values
  • messageTypes must not be 0
  • pCallbackData must be a valid pointer to a valid VkDebugUtilsMessengerCallbackDataEXT structure
See Also

VkDebugUtilsMessengerCallbackDataEXT

Parameters
instance:VkInstance

the debug stream’s VkInstance.

messageSeverity:int

a VkDebugUtilsMessageSeverityFlagBitsEXT value specifying the severity of this event/message.

messageTypes:int

a bitmask of VkDebugUtilsMessageTypeFlagBitsEXT specifying which type of event(s) to identify with this message.

pCallbackData:VkDebugUtilsMessengerCallbackDataEXT

contains all the callback related data in the VkDebugUtilsMessengerCallbackDataEXT structure.