VkIndirectExecutionSetShaderInfoEXT
The VkIndirectExecutionSetShaderInfoEXT
structure is defined as:
typedef struct VkIndirectExecutionSetShaderInfoEXT {
VkStructureType sType;
const void* pNext;
uint32_t shaderCount;
const VkShaderEXT* pInitialShaders;
const VkIndirectExecutionSetShaderLayoutInfoEXT* pSetLayoutInfos;
uint32_t maxShaderCount;
uint32_t pushConstantRangeCount;
const VkPushConstantRange* pPushConstantRanges;
} VkIndirectExecutionSetShaderInfoEXT;
sType
is a VkStructureType value identifying this structure.pNext
isNULL
or a pointer to a structure extending this structure.shaderCount
is the number of members in thepInitialShaders
andpSetLayoutInfos
arrays.pInitialShaders
is a pointer to an array containing a VkShaderEXT object for each shader stage that will be used in the set. These shaders will be automatically added to the set beginning at index0
.pSetLayoutInfos
is a pointer to an array containing a VkIndirectExecutionSetShaderLayoutInfoEXT used by each correspondingpInitialShaders
shader stage in the set.maxShaderCount
is the maximum number of shader objects stored in the set.pushConstantRangeCount
is the number of members in thepPushConstantRanges
array.pPushConstantRanges
is a pointer to the array of VkPushConstantRange ranges used by all shaders in the set.
The characteristics of pInitialShaders
will be used to validate all
shaders added to the set even if they are removed from the set or destroyed.
When an Indirect Execution Set created with shader objects is used,
pInitialShaders
constitutes the initial shader state.
Valid Usage
VUID-VkIndirectExecutionSetShaderInfoEXT-pInitialShaders-11020
All members of pInitialShaders
must have a stage
supported
by [VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT::supportedIndirectCommandsShaderStagesShaderBinding
](xref::limits-supportedIndirectCommandsShaderStagesShaderBinding)
VUID-VkIndirectExecutionSetShaderInfoEXT-maxShaderCount-11021
maxShaderCount
must not be zero
VUID-VkIndirectExecutionSetShaderInfoEXT-maxShaderCount-11022
maxShaderCount
must be less than or equal to
VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
::maxIndirectShaderObjectCount
VUID-VkIndirectExecutionSetShaderInfoEXT-maxShaderCount-11036
maxShaderCount
must be greater than or equal to shaderCount
VUID-VkIndirectExecutionSetShaderInfoEXT-stage-11023
The stage
of each element in the pInitialShaders
array must
be unique
VUID-VkIndirectExecutionSetShaderInfoEXT-pInitialShaders-11154
Each member of pInitialShaders
must have been created with
VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT
Valid Usage (Implicit)
VUID-VkIndirectExecutionSetShaderInfoEXT-sType-sType
sType
must be VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT
VUID-VkIndirectExecutionSetShaderInfoEXT-pInitialShaders-parameter
pInitialShaders
must be a valid pointer to an array of shaderCount
valid VkShaderEXT handles
VUID-VkIndirectExecutionSetShaderInfoEXT-pSetLayoutInfos-parameter
If pSetLayoutInfos
is not NULL
, pSetLayoutInfos
must be a valid pointer to an array of shaderCount
valid VkIndirectExecutionSetShaderLayoutInfoEXT structures
VUID-VkIndirectExecutionSetShaderInfoEXT-pPushConstantRanges-parameter
If pushConstantRangeCount
is not 0
, pPushConstantRanges
must be a valid pointer to an array of pushConstantRangeCount
valid VkPushConstantRange structures
VUID-VkIndirectExecutionSetShaderInfoEXT-shaderCount-arraylength
shaderCount
must be greater than 0