VkDrawIndirect2InfoKHR
VkDrawIndirect2InfoKHR is defined as:
typedef struct VkDrawIndirect2InfoKHR {
VkStructureType sType;
const void* pNext;
VkStridedDeviceAddressRangeKHR addressRange;
VkAddressCommandFlagsKHR addressFlags;
uint32_t drawCount;
} VkDrawIndirect2InfoKHR;
pub struct DrawIndirect2InfoKHR {
s_type: vk::StructureType,
p_next: *const c_void,
address_range: vk::StridedDeviceAddressRangeKHR,
address_flags: vk::AddressCommandFlagsKHR,
draw_count: u32,
}
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.addressRangeis the VkStridedDeviceAddressRangeKHR containing draw parameters.addressFlagsis a VkAddressCommandFlagsKHR value defining the flags for the address range.drawCountis 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
VUID-VkDrawIndirect2InfoKHR-pNext-pNext
pNext must be NULL
VUID-VkDrawIndirect2InfoKHR-addressFlags-parameter
addressFlags must be a valid combination of VkAddressCommandFlagBitsKHR values