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;
indexCount
is the number of vertices to draw.instanceCount
is the number of instances to draw.firstIndex
is the base index within the index buffer.vertexOffset
is the value added to the vertex index before indexing into the vertex buffer.firstInstance
is 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
VkPipelineVertexInputDivisorStateCreateInfoKHR in the pNext
chain of VkGraphicsPipelineCreateInfo::pVertexInputState
,
any member of
VkPipelineVertexInputDivisorStateCreateInfoKHR::pVertexBindingDivisors
has a value other than 1
in divisor
, and
VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR::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
VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR::supportsNonZeroFirstInstance
is VK_FALSE
, then firstInstance
must be 0
VUID-VkDrawIndexedIndirectCommand-robustBufferAccess2-08798
If robustBufferAccess2
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 vkCmdBindIndexBuffer2KHR
.
If vkCmdBindIndexBuffer2KHR
is used to bind the index buffer, the
size of the bound index buffer is
vkCmdBindIndexBuffer2KHR::size
VUID-VkDrawIndexedIndirectCommand-firstInstance-00554
If the drawIndirectFirstInstance
feature is not enabled,
firstInstance
must be 0