Structures

VkIndirectExecutionSetShaderInfoEXT

Struct specifying parameters of a newly created indirect execution set containing only shader objects

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 is NULL or a pointer to a structure extending this structure.
  • shaderCount is the number of members in the pInitialShaders and pSetLayoutInfos 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 index 0.
  • pSetLayoutInfos is a pointer to an array containing a VkIndirectExecutionSetShaderLayoutInfoEXT used by each corresponding pInitialShaders shader stage in the set.
  • maxShaderCount is the maximum number of shader objects stored in the set.
  • pushConstantRangeCount is the number of members in the pPushConstantRanges 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-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