VkExecutionGraphPipelineCreateInfoAMDX(3)

# VkExecutionGraphPipelineCreateInfoAMDX(3) Manual Page

## Name

VkExecutionGraphPipelineCreateInfoAMDX - Structure specifying parameters of a newly created execution graph pipeline

Loading… please wait.

## C Specification

The `VkExecutionGraphPipelineCreateInfoAMDX` structure is defined as:

    // Provided by VK_AMDX_shader_enqueue
    typedef struct VkExecutionGraphPipelineCreateInfoAMDX {
        VkStructureType                           sType;
        const void*                               pNext;
        VkPipelineCreateFlags                     flags;
        uint32_t                                  stageCount;
        const VkPipelineShaderStageCreateInfo*    pStages;
        const VkPipelineLibraryCreateInfoKHR*     pLibraryInfo;
        VkPipelineLayout                          layout;
        VkPipeline                                basePipelineHandle;
        int32_t                                   basePipelineIndex;
    } VkExecutionGraphPipelineCreateInfoAMDX;

## Members

- `sType` is a VkStructureType value identifying this structure.

- `pNext` is `NULL` or a pointer to a structure extending this structure.

- `flags` is a bitmask of VkPipelineCreateFlagBits specifying how the pipeline will be generated.

- `stageCount` is the number of entries in the `pStages` array.

- `pStages` is a pointer to an array of `stageCount` VkPipelineShaderStageCreateInfo structures describing the set of the shader stages to be included in the execution graph pipeline.

- `pLibraryInfo` is a pointer to a VkPipelineLibraryCreateInfoKHR structure defining pipeline libraries to include.

- `layout` is the description of binding locations used by both the pipeline and descriptor sets used with the pipeline.

- `basePipelineHandle` is a pipeline to derive from

- `basePipelineIndex` is an index into the `pCreateInfos` parameter to use as a pipeline to derive from

## Description

The parameters `basePipelineHandle` and `basePipelineIndex` are described in more detail in Pipeline Derivatives.

Each shader stage provided when creating an execution graph pipeline (including those in libraries) is associated with a name and an index, determined by the inclusion or omission of a VkPipelineShaderStageNodeCreateInfoAMDX structure in its `pNext` chain.

In addition to the shader name and index, an internal "node index" is also generated for each node, which can be queried with vkGetExecutionGraphPipelineNodeIndexAMDX, and is used exclusively for initial dispatch of an execution graph.

Valid Usage

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-None-09497
  If the `pNext` chain does not include a VkPipelineCreateFlags2CreateInfoKHR structure, `flags`: must be a valid combination of VkPipelineCreateFlagBits values

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-07984
  If `flags` contains the `VK_PIPELINE_CREATE_DERIVATIVE_BIT` flag, and `basePipelineIndex` is -1, `basePipelineHandle` must be a valid execution graph `VkPipeline` handle

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-07985
  If `flags` contains the `VK_PIPELINE_CREATE_DERIVATIVE_BIT` flag, and `basePipelineHandle` is VK_NULL_HANDLE, `basePipelineIndex` must be a valid index into the calling command’s `pCreateInfos` parameter

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-07986
  If `flags` contains the `VK_PIPELINE_CREATE_DERIVATIVE_BIT` flag, `basePipelineIndex` must be -1 or `basePipelineHandle` must be VK_NULL_HANDLE

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-07987
  If a push constant block is declared in a shader, a push constant range in `layout` must match both the shader stage and range

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-07988
  If a resource variables is declared in a shader, a descriptor slot in `layout` must match the shader stage

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-07990
  If a resource variables is declared in a shader, and the descriptor type is not `VK_DESCRIPTOR_TYPE_MUTABLE_EXT`, a descriptor slot in `layout` must match the descriptor type

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-07991
  If a resource variables is declared in a shader as an array, a descriptor slot in `layout` must match the descriptor count

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-03365
  `flags` must not include `VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR`

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-03366
  `flags` must not include `VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR`

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-03367
  `flags` must not include `VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR`

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-03368
  `flags` must not include `VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR`

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-03369
  `flags` must not include `VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR`

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-03370
  `flags` must not include `VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR`

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-03576
  `flags` must not include `VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR`

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-04945
  `flags` must not include `VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV`

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-09007
  If the `VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV`::`deviceGeneratedComputePipelines` is not enabled, `flags` must not include `VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV`

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-09008
  If `flags` includes `VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV`, then the `pNext` chain must include a pointer to a valid instance of VkComputePipelineIndirectBufferInfoNV specifying the address where the pipeline’s metadata will be saved

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-pipelineCreationCacheControl-02875
  If the `pipelineCreationCacheControl` feature is not enabled, `flags` must not include `VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT` or `VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT`

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-stage-09128
  The `stage` member of any element of `pStages` must be `VK_SHADER_STAGE_COMPUTE_BIT`

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-pStages-09129
  The shader code for the entry point identified by each element of `pStages` and the rest of the state identified by this structure must adhere to the pipeline linking rules described in the Shader Interfaces chapter

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-09130
  `layout` must be consistent with the layout of the shaders specified in `pStages`

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-pLibraryInfo-09131
  If `pLibraryInfo` is not `NULL`, each element of its `pLibraries` member must have been created with a `layout` that is compatible with the `layout` in this pipeline

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-09132
  The number of resources in `layout` accessible to each shader stage that is used by the pipeline must be less than or equal to `VkPhysicalDeviceLimits`::`maxPerStageResources`

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-pLibraryInfo-09133
  If `pLibraryInfo` is not `NULL`, each element of `pLibraryInfo->libraries` must be either a compute pipeline or an execution graph pipeline

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-None-09134
  There must be no two nodes in the pipeline that share both the same shader name and index, as specified by VkPipelineShaderStageNodeCreateInfoAMDX

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-None-09135
  There must be no two nodes in the pipeline that share the same shader name and have input payload declarations with different sizes

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-None-09136
  There must be no two nodes in the pipeline that share the same name but have different execution models

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-CoalescedInputCountAMDX-09137
  There must be no two nodes in the pipeline that share the same name where one includes `CoalescedInputCountAMDX` and the other does not

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-StaticNumWorkgroupsAMDX-09138
  There must be no two nodes in the pipeline that share the same name where one includes `StaticNumWorkgroupsAMDX` and the other does not

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-PayloadNodeNameAMDX-09139
  If an output payload declared in any shader in the pipeline has a `PayloadNodeNameAMDX` decoration with a `Node` `Name` that matches the shader name of any other node in the graph, the size of the output payload must match the size of the input payload in the matching node

Valid Usage (Implicit)

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-sType-sType
  `sType` must be `VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX`

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-pNext-pNext
  Each `pNext` member of any structure (including this one) in the `pNext` chain must be either `NULL` or a pointer to a valid instance of VkPipelineCompilerControlCreateInfoAMD or VkPipelineCreationFeedbackCreateInfo

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-sType-unique
  The `sType` value of each struct in the `pNext` chain must be unique

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-parameter
  `flags` must be a valid combination of VkPipelineCreateFlagBits values

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-pStages-parameter
  If `stageCount` is not `0`, and `pStages` is not `NULL`, `pStages` must be a valid pointer to an array of `stageCount` valid VkPipelineShaderStageCreateInfo structures

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-pLibraryInfo-parameter
  If `pLibraryInfo` is not `NULL`, `pLibraryInfo` must be a valid pointer to a valid VkPipelineLibraryCreateInfoKHR structure

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-parameter
  `layout` must be a valid VkPipelineLayout handle

- VUID-VkExecutionGraphPipelineCreateInfoAMDX-commonparent
  Both of `basePipelineHandle`, and `layout` that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice

## See Also

VK_AMDX_shader_enqueue, VkPipeline, VkPipelineCreateFlags, VkPipelineLayout, VkPipelineLibraryCreateInfoKHR, VkPipelineShaderStageCreateInfo, VkStructureType, vkCreateExecutionGraphPipelinesAMDX

## 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-2023 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0