Structures

VkExecutionGraphPipelineCreateInfoAMDX

Structure specifying parameters of a newly created execution graph pipeline

The VkExecutionGraphPipelineCreateInfoAMDX structure is defined as:

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;
  • 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. The implementation must not access this object outside of the duration of the command this structure is passed to.
  • basePipelineHandle is a pipeline to derive from
  • basePipelineIndex is an index into the pCreateInfos parameter to use as a pipeline to derive from

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. For any graphics pipeline libraries, only the name and index of the vertex or mesh shader stage is linked directly to the graph as a node - other shader stages in the pipeline will be executed after those shader stages as normal. Task shaders cannot be included in a graphics pipeline used for a draw node.

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 VkPipelineCreateFlags2CreateInfo 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 basePipelineHandlemust be VK_NULL_HANDLE

VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-07987

If a push constant block is declared in a shader and layout is not VK_NULL_HANDLE, a push constant range in layout must match the shader stage

VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-10069

If a push constant block is declared in a shader and layout is not VK_NULL_HANDLE, the block must be contained inside the push constant range in layout that matches the stage

VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-07988

If a resource variable is declared in a shader and layout is not VK_NULL_HANDLE, the corresponding descriptor set in layout must match the shader stage

VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-07990

If a resource variable is declared in a shader, layout is not VK_NULL_HANDLE, and the descriptor type is not VK_DESCRIPTOR_TYPE_MUTABLE_EXT, the corresponding descriptor set in layout must match the descriptor type

VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-07991

If a resource variable is declared in a shader as an array and layout is not VK_NULL_HANDLE, the corresponding descriptor binding used to create layout must have a descriptorCount that is greater than or equal to the length of the array

VUID-VkExecutionGraphPipelineCreateInfoAMDX-None-10391

If a resource variables is declared in a shader as an array of descriptors, then the descriptor type of that variable must not be VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK

VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-11798

If shader64BitIndexing feature is not enabled, flags must not contain VK_PIPELINE_CREATE_2_64_BIT_INDEXING_BIT_EXT

VUID-VkExecutionGraphPipelineCreateInfoAMDX-pipelineCreationCacheControl-02878

If the pipelineCreationCacheControl feature is not enabled, flagsmust not include VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT nor VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT

VUID-VkExecutionGraphPipelineCreateInfoAMDX-pipelineProtectedAccess-07368

If the pipelineProtectedAccess feature is not enabled, flagsmust not include VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT nor VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT

VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-07369

flags must not include both VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT and VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT

VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-11311

If VkPipelineCreateFlags2CreateInfoKHR::flags includes VK_PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT, layout must be VK_NULL_HANDLE

VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-11312

If VkPipelineCreateFlags2CreateInfoKHR::flags includes VK_PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT, all shader variables in the shader resource interface with a DescriptorSet and Binding decoration must have a mapping declared in VkShaderDescriptorSetAndBindingMappingInfoEXT::pMappings

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 feature 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-flags-11007

If flags includes VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT, then the VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT::deviceGeneratedCommands feature must be enabled

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

If layout is not VK_NULL_HANDLE, it must be consistent with the layout of the shaders specified in pStages

VUID-VkExecutionGraphPipelineCreateInfoAMDX-pLibraryInfo-09131

If pLibraryInfo is not NULL and layout is not VK_NULL_HANDLE, each element of pLibraryInfo→pLibrariesmust have been created with a layout that is compatible with the layout in this pipeline

VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-09132

If layout is not VK_NULL_HANDLE, 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→pLibraries must be either a compute pipeline, an execution graph pipeline, or a graphics pipeline

VUID-VkExecutionGraphPipelineCreateInfoAMDX-pLibraryInfo-10181

If pLibraryInfo is not NULL, each element of pLibraryInfo→pLibraries that is a compute pipeline or a graphics pipeline must have been created with VK_PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX set

VUID-VkExecutionGraphPipelineCreateInfoAMDX-shaderMeshEnqueue-10182

If the shaderMeshEnqueue feature is not enabled, and pLibraryInfo→pLibraries is not NULL, pLibraryInfo→pLibraries must not contain any graphics pipelines

VUID-VkExecutionGraphPipelineCreateInfoAMDX-pLibraryInfo-10183

Any element of pLibraryInfo→pLibraries identifying a graphics pipeline must have been created with all possible state subsets

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

VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-10184

If flags does not include VK_PIPELINE_CREATE_LIBRARY_BIT_KHR, and an output payload declared in any shader in the pipeline does not have a PayloadNodeSparseArrayAMDX decoration, there must be a node in the graph corresponding to every index from 0 to its PayloadNodeArraySizeAMDX decoration

VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-12334

flags must not include VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT nor VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT

VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-11271

If VkPipelineCreateFlags2CreateInfoKHR::flags includes VK_PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT, all libraries linked to this pipeline must also have that flag set

VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-11272

If VkPipelineCreateFlags2CreateInfoKHR::flags does not include VK_PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT, all libraries linked to this pipeline must also not have that flag set

VUID-VkExecutionGraphPipelineCreateInfoAMDX-None-11363

If VkPipelineCreateFlags2CreateInfoKHR::flags does not include VK_PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT, layout must not be VK_NULL_HANDLE

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 structure in the pNext chain must be unique

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