VkExecutionGraphPipelineCreateInfoAMDX
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;
pub struct ExecutionGraphPipelineCreateInfoAMDX {
s_type: vk::StructureType,
p_next: *const c_void,
flags: vk::PipelineCreateFlags,
stage_count: u32,
p_stages: *const vk::PipelineShaderStageCreateInfo,
p_library_info: *const vk::PipelineLibraryCreateInfoKHR,
layout: vk::PipelineLayout, // Interface layout of the pipeline
base_pipeline_handle: vk::Pipeline,
base_pipeline_index: i32,
}
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.flagsis a bitmask of VkPipelineCreateFlagBits specifying how the pipeline will be generated.stageCountis the number of entries in thepStagesarray.pStagesis a pointer to an array ofstageCount
VkPipelineShaderStageCreateInfo structures describing the set of the shader stages to be included in the execution graph pipeline.pLibraryInfois a pointer to a VkPipelineLibraryCreateInfoKHR structure defining pipeline libraries to include.layoutis 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.basePipelineHandleis a pipeline to derive frombasePipelineIndexis an index into thepCreateInfosparameter 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-layout-parameter
If layout is not VK_NULL_HANDLE, 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