Structures

VkIndirectCommandsLayoutTokenEXT

Struct specifying the details of an indirect command layout token

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 is NULL or a pointer to a structure extending this structure.
  • type specifies the VkIndirectCommandsTokenTypeEXT for data.
  • data specifies a VkIndirectCommandsTokenDataEXT containing token-specific details for command execution. It is ignored if type 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-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-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