VkDrawIndexedIndirectCommand
The VkDrawIndexedIndirectCommand structure is defined as:
typedef struct VkDrawIndexedIndirectCommand {
uint32_t indexCount;
uint32_t instanceCount;
uint32_t firstIndex;
int32_t vertexOffset;
uint32_t firstInstance;
} VkDrawIndexedIndirectCommand;
indexCountis the number of vertices to draw.instanceCountis the number of instances to draw.firstIndexis the base index within the index buffer.vertexOffsetis the value added to the vertex index before indexing into the vertex buffer.firstInstanceis the instance ID of the first instance to draw.
The members of VkDrawIndexedIndirectCommand have the same meaning as
the similarly named parameters of vkCmdDrawIndexed.
Valid Usage
VUID-VkDrawIndexedIndirectCommand-pNext-09461
If the bound graphics pipeline state was created with
VkPipelineVertexInputDivisorStateCreateInfo in the pNext
chain of VkGraphicsPipelineCreateInfo::pVertexInputState,
any member of
VkPipelineVertexInputDivisorStateCreateInfo::pVertexBindingDivisors
has a value other than 1 in divisor, and
VkPhysicalDeviceVertexAttributeDivisorProperties::supportsNonZeroFirstInstance
is VK_FALSE, then firstInstance must be 0
VUID-VkDrawIndexedIndirectCommand-None-09462
If
shader objects are used for drawing or
the bound graphics pipeline state was created with the
VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, any
member of the pVertexBindingDescriptions parameter to the
vkCmdSetVertexInputEXT call that sets this dynamic state has a
value other than 1 in divisor, and
VkPhysicalDeviceVertexAttributeDivisorProperties::supportsNonZeroFirstInstance
is VK_FALSE, then firstInstance must be 0
VUID-VkDrawIndexedIndirectCommand-robustBufferAccess2-08798
If the robustBufferAccess2
feature is not enabled, (indexSize × (firstIndex
+ indexCount) + offset) must be less than or
equal to the size of the bound index buffer, with indexSize being
based on the type specified by indexType, where the index buffer,
indexType, and offset are specified via
vkCmdBindIndexBuffer
or vkCmdBindIndexBuffer2.
If vkCmdBindIndexBuffer2 is used to bind the index buffer, the
size of the bound index buffer is
vkCmdBindIndexBuffer2::size
VUID-VkDrawIndexedIndirectCommand-firstInstance-00554
If the drawIndirectFirstInstance feature is not enabled,
firstInstance must be 0