VkIndirectExecutionSetShaderInfoEXT(3)

Name

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

C Specification

The VkIndirectExecutionSetShaderInfoEXT structure is defined as:

// Provided by VK_EXT_device_generated_commands
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;

Members

  • 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.

Description

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

  • 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

Document Notes

For more information, see the Vulkan Specification.

This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification, not directly.