# VkIndirectExecutionSetShaderInfoEXT(3) Manual Page

## Name

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

Loading… please wait.

## 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`

## See Also

VK_EXT_device_generated_commands, VkIndirectExecutionSetInfoEXT, VkIndirectExecutionSetShaderLayoutInfoEXT, VkPushConstantRange, VkShaderEXT, VkStructureType

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

## Copyright

Copyright 2014-2024 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0