Structures

VkDrawIndirect2InfoKHR

Draw indirect info

VkDrawIndirect2InfoKHR is defined as:

typedef struct VkDrawIndirect2InfoKHR {
    VkStructureType sType;
    const void* pNext;
    VkStridedDeviceAddressRangeKHR addressRange;
    VkAddressCommandFlagsKHR addressFlags;
    uint32_t drawCount;
} VkDrawIndirect2InfoKHR;
  • sType is a VkStructureType value identifying this structure.
  • pNext is NULL or a pointer to a structure extending this structure.
  • addressRange is the VkStridedDeviceAddressRangeKHR containing draw parameters.
  • addressFlags is a VkAddressCommandFlagsKHR value defining the flags for the address range.
  • drawCount is the number of draws to execute, and can be zero.

Valid Usage

VUID-VkDrawIndirect2InfoKHR-addressRange-13097

If the range specified by addressRange is not bound completely to memory when accessed, addressFlags must not include VK_ADDRESS_COMMAND_FULLY_BOUND_BIT_KHR

VUID-VkDrawIndirect2InfoKHR-addressRange-13098

If the buffer from which the range specified by addressRange was created with VK_BUFFER_CREATE_PROTECTED_BIT, and protectedNoFault is not supported, addressFlags must include VK_ADDRESS_COMMAND_PROTECTED_BIT_KHR

VUID-VkDrawIndirect2InfoKHR-addressRange-13099

If the buffer from which the range specified by addressRange was created without VK_BUFFER_CREATE_PROTECTED_BIT, and protectedNoFault is not supported, addressFlags must not include VK_ADDRESS_COMMAND_PROTECTED_BIT_KHR

VUID-VkDrawIndirect2InfoKHR-addressFlags-13100

addressFlags must not include both VK_ADDRESS_COMMAND_STORAGE_BUFFER_USAGE_BIT_KHR and VK_ADDRESS_COMMAND_UNKNOWN_STORAGE_BUFFER_USAGE_BIT_KHR

VUID-VkDrawIndirect2InfoKHR-addressRange-13122

If any buffer, which is bound to a range of VkDeviceMemory that overlaps the range backing addressRange, was created with VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, addressFlags must include VK_ADDRESS_COMMAND_STORAGE_BUFFER_USAGE_BIT_KHR or VK_ADDRESS_COMMAND_UNKNOWN_STORAGE_BUFFER_USAGE_BIT_KHR

VUID-VkDrawIndirect2InfoKHR-addressRange-13123

If any buffer, which is bound to a range of VkDeviceMemory that overlaps the range backing addressRange, was created without VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, addressFlags must not include VK_ADDRESS_COMMAND_STORAGE_BUFFER_USAGE_BIT_KHR

VUID-VkDrawIndirect2InfoKHR-addressFlags-13101

addressFlags must not include both VK_ADDRESS_COMMAND_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR and VK_ADDRESS_COMMAND_UNKNOWN_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR

VUID-VkDrawIndirect2InfoKHR-addressRange-13124

If any buffer, which is bound to a range of VkDeviceMemory that overlaps the range backing addressRange, was created with VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT, addressFlags must include VK_ADDRESS_COMMAND_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR or VK_ADDRESS_COMMAND_UNKNOWN_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR

VUID-VkDrawIndirect2InfoKHR-addressRange-13125

If any buffer, which is bound to a range of VkDeviceMemory that overlaps the range backing addressRange, was created without VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT, addressFlags must not include VK_ADDRESS_COMMAND_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR

VUID-VkDrawIndirect2InfoKHR-addressRange-13107

The buffer from which addressRange was queried must have been created with VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT usage flag

VUID-VkDrawIndirect2InfoKHR-protectedNoFault-13108

If protectedNoFault is not supported, the buffer from which addressRange was queried must not have been created with VK_BUFFER_CREATE_PROTECTED_BIT

VUID-VkDrawIndirect2InfoKHR-addressRange-13109

addressRange.address must be a multiple of 4

VUID-VkDrawIndirect2InfoKHR-drawCount-02718

If the multiDrawIndirect feature is not enabled, drawCount must be 0 or 1

VUID-VkDrawIndirect2InfoKHR-drawCount-02719

drawCount must be less than or equal to VkPhysicalDeviceLimits::maxDrawIndirectCount

Valid Usage (Implicit)

VUID-VkDrawIndirect2InfoKHR-sType-sType

sType must be VK_STRUCTURE_TYPE_DRAW_INDIRECT_2_INFO_KHR