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;
sType
is a VkStructureType value identifying this structure.pNext
isNULL
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 theVkPipelineLayout
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 thepIndexTypes
andpIndexTypeValues
array pairings. If not zero, it allows to register a customuint32_t
value to be treated as specific VkIndexType.pIndexTypes
is the used VkIndexType for the correspondinguint32_t
value 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