Structures

VkDeviceAddressBindingCallbackDataEXT

Structure specifying parameters returned to the callback

The definition of VkDeviceAddressBindingCallbackDataEXT is:

typedef struct VkDeviceAddressBindingCallbackDataEXT {
    VkStructureType sType;
    void* pNext;
    VkDeviceAddressBindingFlagsEXT flags;
    VkDeviceAddress baseAddress;
    VkDeviceSize size;
    VkDeviceAddressBindingTypeEXT bindingType;
} VkDeviceAddressBindingCallbackDataEXT;
  • sType is a VkStructureType value identifying this structure.
  • pNext is NULL or a pointer to a structure extending this structure.
  • flags is a bitmask of VkDeviceAddressBindingFlagBitsEXT specifying additional information about the binding event that caused the callback to be called.
  • baseAddress is a GPU-accessible virtual address identifying the start of a region of the virtual address space associated with a Vulkan object, as identified by the pObjects member of VkDebugUtilsMessengerCallbackDataEXT.
  • size is the size in bytes of a region of GPU-accessible virtual address space.
  • bindingType is a VkDeviceAddressBindingTypeEXT specifying the type of binding event that caused the callback to be called.

If the reportAddressBinding feature is enabled and the implementation binds or unbinds a region of virtual address space associated with a Vulkan object, the implementation must submit a debug message with the following properties:

  • messageSeverity equal to VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT
  • messageTypes equal to VK_DEBUG_UTILS_MESSAGE_TYPE_DEVICE_ADDRESS_BINDING_BIT_EXT
  • VkDebugUtilsMessengerCallbackDataEXT::pObjects must identify the associated Vulkan object
  • VkDeviceAddressBindingCallbackDataEXT must be included in the pNext chain of VkDebugUtilsMessengerCallbackDataEXT

These debug messages must be emitted both for GPU virtual address space regions that are explicitly bound to a Vulkan object via the vkBind*Memory/vkBind*Memory2 functions, and for those that are implicitly generated via memory allocation or importing external memory.

An implementation may report binding events associated with a Vulkan object via VkDebugUtilsMessengerEXT prior to the object becoming visible to an application via other Vulkan commands. For example, object creation functions may report binding events that occur during an objects creation. In such cases, VkDeviceAddressBindingCallbackDataEXT::flagsmust include VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT.

Object handles reported in this manner are not valid object handles, and must not be used as an input parameter to any Vulkan command.

Any valid object handle returned by an object creation function must match the handle specified via any previously reported binding events associated with the object’s creation.

Valid Usage (Implicit)