VkIndirectCommandsLayoutTokenNV
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;
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.tokenTypeis a VkIndirectCommandsTokenTypeNV specifying the token command type.streamis the index of the input stream containing the token argument data.offsetis a relative starting offset within the input stream memory for the token argument data.vertexBindingUnitis used for the vertex buffer binding command.vertexDynamicStridesets if the vertex buffer stride is provided by the binding command rather than the current bound graphics pipeline state.pushconstantPipelineLayoutis theVkPipelineLayoutused for the push constant command.pushconstantShaderStageFlagsare the shader stage flags used for the push constant command.pushconstantOffsetis the offset used for the push constant command.pushconstantSizeis the size used for the push constant command.indirectStateFlagsis a VkIndirectStateFlagsNV bitfield indicating the active states for the state flag command.indexTypeCountis the optional size of thepIndexTypesandpIndexTypeValuesarray pairings. If not zero, it allows to register a customuint32_tvalue to be treated as specific VkIndexType.pIndexTypesis the used VkIndexType for the correspondinguint32_tvalue entry inpIndexTypeValues.
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-pNext-pNext
pNext must be NULL
VUID-VkIndirectCommandsLayoutTokenNV-tokenType-parameter
tokenType must be a valid VkIndirectCommandsTokenTypeNV value
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-indirectStateFlags-parameter
indirectStateFlags must be a valid combination of VkIndirectStateFlagBitsNV 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