VkIndirectCommandsLayoutTokenEXT
The VkIndirectCommandsLayoutTokenEXT
structure specifies details to
the function arguments that need to be known at layout creation time:
typedef struct VkIndirectCommandsLayoutTokenEXT {
VkStructureType sType;
const void* pNext;
VkIndirectCommandsTokenTypeEXT type;
VkIndirectCommandsTokenDataEXT data;
uint32_t offset;
} VkIndirectCommandsLayoutTokenEXT;
sType
is a VkStructureType value identifying this structure.pNext
isNULL
or a pointer to a structure extending this structure.type
specifies the VkIndirectCommandsTokenTypeEXT fordata
.data
specifies a VkIndirectCommandsTokenDataEXT containing token-specific details for command execution. It is ignored iftype
does not match any member of the VkIndirectCommandsTokenDataEXT union.offset
is the relative byte offset for the token within one sequence of the indirect buffer. The data stored at that offset is the command data for the token, e.g.VkDispatchIndirectCommand
.
Valid Usage
VUID-VkIndirectCommandsLayoutTokenEXT-offset-11124
offset
must be less than or equal to
VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT::maxIndirectCommandsTokenOffset
VUID-VkIndirectCommandsLayoutTokenEXT-offset-11125
offset
must be aligned to 4
VUID-VkIndirectCommandsLayoutTokenEXT-meshShader-11126
If meshShader
or taskShader
are not enabled, type
must not be
VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT
VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT
,
VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT
or
VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT
VUID-VkIndirectCommandsLayoutTokenEXT-rayTracingMaintenance1-11128
If rayTracingMaintenance1
is
not enabled, type
must not be
VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT
VUID-VkIndirectCommandsLayoutTokenEXT-deviceGeneratedCommandsMultiDrawIndirectCount-11129
If [VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT::deviceGeneratedCommandsMultiDrawIndirectCount
](xref::limits-deviceGeneratedCommandsMultiDrawIndirectCount)
is not supported, type
must not be
VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT
or
VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT
VUID-VkIndirectCommandsLayoutTokenEXT-deviceGeneratedCommandsMultiDrawIndirectCount-11130
If [VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT::deviceGeneratedCommandsMultiDrawIndirectCount
](xref::limits-deviceGeneratedCommandsMultiDrawIndirectCount)
is not supported, type
must not be
VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT
VUID-VkIndirectCommandsLayoutTokenEXT-deviceGeneratedCommandsMultiDrawIndirectCount-11131
If [VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT::deviceGeneratedCommandsMultiDrawIndirectCount
](xref::limits-deviceGeneratedCommandsMultiDrawIndirectCount)
is not supported, type
must not be
VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT
Valid Usage (Implicit)
VUID-VkIndirectCommandsLayoutTokenEXT-sType-sType
sType
must be VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT
VUID-VkIndirectCommandsLayoutTokenEXT-type-parameter
type
must be a valid VkIndirectCommandsTokenTypeEXT value
VUID-VkIndirectCommandsLayoutTokenEXT-pPushConstant-parameter
If type
is VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT
,VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT, the pPushConstant
member of data
must be a valid pointer to a valid VkIndirectCommandsPushConstantTokenEXT structure
VUID-VkIndirectCommandsLayoutTokenEXT-pVertexBuffer-parameter
If type
is VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT
, the pVertexBuffer
member of data
must be a valid pointer to a valid VkIndirectCommandsVertexBufferTokenEXT structure
VUID-VkIndirectCommandsLayoutTokenEXT-pIndexBuffer-parameter
If type
is VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT
, the pIndexBuffer
member of data
must be a valid pointer to a valid VkIndirectCommandsIndexBufferTokenEXT structure
VUID-VkIndirectCommandsLayoutTokenEXT-pExecutionSet-parameter
If type
is VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT
, the pExecutionSet
member of data
must be a valid pointer to a valid VkIndirectCommandsExecutionSetTokenEXT structure