Structures

VkIndirectCommandsLayoutTokenNV

Struct specifying the details of an indirect command layout token

The VkIndirectCommandsLayoutTokenNV structure specifies details to the function arguments that need to be known at layout creation time:

typedef struct VkIndirectCommandsLayoutTokenNV {
    VkStructureType sType;
    const void* pNext;
    VkIndirectCommandsTokenTypeNV tokenType;
    uint32_t stream;
    uint32_t offset;
    uint32_t vertexBindingUnit;
    VkBool32 vertexDynamicStride;
    VkPipelineLayout pushconstantPipelineLayout;
    VkShaderStageFlags pushconstantShaderStageFlags;
    uint32_t pushconstantOffset;
    uint32_t pushconstantSize;
    VkIndirectStateFlagsNV indirectStateFlags;
    uint32_t indexTypeCount;
    const VkIndexType* pIndexTypes;
    const uint32_t* pIndexTypeValues;
} VkIndirectCommandsLayoutTokenNV;
  • sType is a VkStructureType value identifying this structure.
  • pNext is NULL or a pointer to a structure extending this structure.
  • tokenType is a VkIndirectCommandsTokenTypeNV specifying the token command type.
  • stream is the index of the input stream containing the token argument data.
  • offset is a relative starting offset within the input stream memory for the token argument data.
  • vertexBindingUnit is used for the vertex buffer binding command.
  • vertexDynamicStride sets if the vertex buffer stride is provided by the binding command rather than the current bound graphics pipeline state.
  • pushconstantPipelineLayout is the VkPipelineLayout used for the push constant command.
  • pushconstantShaderStageFlags are the shader stage flags used for the push constant command.
  • pushconstantOffset is the offset used for the push constant command.
  • pushconstantSize is the size used for the push constant command.
  • indirectStateFlags is a VkIndirectStateFlagsNV bitfield indicating the active states for the state flag command.
  • indexTypeCount is the optional size of the pIndexTypes and pIndexTypeValues array pairings. If not zero, it allows to register a custom uint32_t value to be treated as specific VkIndexType.
  • pIndexTypes is the used VkIndexType for the corresponding uint32_t value entry in pIndexTypeValues.

Valid Usage

VUID-VkIndirectCommandsLayoutTokenNV-stream-02951

stream must be smaller than VkIndirectCommandsLayoutCreateInfoNV::streamCount

VUID-VkIndirectCommandsLayoutTokenNV-offset-02952

offset must be less than or equal to VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV::maxIndirectCommandsTokenOffset

VUID-VkIndirectCommandsLayoutTokenNV-offset-06888

offset must be aligned to the scalar alignment of tokenType or minIndirectCommandsBufferOffsetAlignment, whichever is lower

VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02976

If tokenType is VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV, vertexBindingUnit must stay within device supported limits for the appropriate commands

VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02977

If tokenType is VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV, pushconstantPipelineLayout must be valid

VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02978

If tokenType is VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV, pushconstantOffset must be a multiple of 4

VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02979

If tokenType is VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV, pushconstantSize must be a multiple of 4

VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02980

If tokenType is VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV, pushconstantOffset must be less than VkPhysicalDeviceLimits::maxPushConstantsSize

VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02981

If tokenType is VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV, pushconstantSize must be less than or equal to VkPhysicalDeviceLimits::maxPushConstantsSize minus pushconstantOffset

VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02982

If tokenType is VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV, for each byte in the range specified by pushconstantOffset and pushconstantSize and for each shader stage in pushconstantShaderStageFlags, there must be a push constant range in pushconstantPipelineLayout that includes that byte and that stage

VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02983

If tokenType is VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV, for each byte in the range specified by pushconstantOffset and pushconstantSize and for each push constant range that overlaps that byte, pushconstantShaderStageFlags must include all stages in that push constant range’s VkPushConstantRange::stageFlags

VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02984

If tokenType is VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV, indirectStateFlags must not be 0

Valid Usage (Implicit)

VUID-VkIndirectCommandsLayoutTokenNV-sType-sType

sType must be VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV

VUID-VkIndirectCommandsLayoutTokenNV-pushconstantPipelineLayout-parameter

If pushconstantPipelineLayout is not VK_NULL_HANDLE, pushconstantPipelineLayout must be a valid VkPipelineLayout handle

VUID-VkIndirectCommandsLayoutTokenNV-pushconstantShaderStageFlags-parameter

pushconstantShaderStageFlags must be a valid combination of VkShaderStageFlagBits values

VUID-VkIndirectCommandsLayoutTokenNV-pIndexTypes-parameter

If indexTypeCount is not 0, pIndexTypes must be a valid pointer to an array of indexTypeCount valid VkIndexType values

VUID-VkIndirectCommandsLayoutTokenNV-pIndexTypeValues-parameter

If indexTypeCount is not 0, pIndexTypeValues must be a valid pointer to an array of indexTypeCount uint32_t values