C Specification

To create execution graph pipelines, call:

// Provided by VK_AMDX_shader_enqueue
VkResult vkCreateExecutionGraphPipelinesAMDX(
    VkDevice                                    device,
    VkPipelineCache                             pipelineCache,
    uint32_t                                    createInfoCount,
    const VkExecutionGraphPipelineCreateInfoAMDX* pCreateInfos,
    const VkAllocationCallbacks*                pAllocator,
    VkPipeline*                                 pPipelines);


  • device is the logical device that creates the execution graph pipelines.

  • pipelineCache is either VK_NULL_HANDLE, indicating that pipeline caching is disabled; or the handle of a valid pipeline cache object, in which case use of that cache is enabled for the duration of the command.

  • createInfoCount is the length of the pCreateInfos and pPipelines arrays.

  • pCreateInfos is a pointer to an array of VkExecutionGraphPipelineCreateInfoAMDX structures.

  • pAllocator controls host memory allocation as described in the Memory Allocation chapter.

  • pPipelines is a pointer to an array of VkPipeline handles in which the resulting execution graph pipeline objects are returned.


The implementation will create a pipeline in each element of pPipelines from the corresponding element of pCreateInfos. If creation of any pipeline fails, that pipeline will be set to VK_NULL_HANDLE.

If creation fails for a pipeline create info with a VkExecutionGraphPipelineCreateInfoAMDX::flags value that included VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT, all pipelines at a greater index all automatically fail.

Valid Usage
  • VUID-vkCreateExecutionGraphPipelinesAMDX-shaderEnqueue-09124
    The shaderEnqueue feature must be enabled

  • VUID-vkCreateExecutionGraphPipelinesAMDX-flags-09125
    If the flags member of any element of pCreateInfos contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and the basePipelineIndex member of that same element is not -1, basePipelineIndex must be less than the index into pCreateInfos that corresponds to that element

  • VUID-vkCreateExecutionGraphPipelinesAMDX-flags-09126
    If the flags member of any element of pCreateInfos contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, the base pipeline must have been created with the VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT flag set

  • VUID-vkCreateExecutionGraphPipelinesAMDX-pipelineCache-09127
    If pipelineCache was created with VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT, host access to pipelineCache must be externally synchronized

Valid Usage (Implicit)
  • VUID-vkCreateExecutionGraphPipelinesAMDX-device-parameter
    device must be a valid VkDevice handle

  • VUID-vkCreateExecutionGraphPipelinesAMDX-pipelineCache-parameter
    If pipelineCache is not VK_NULL_HANDLE, pipelineCache must be a valid VkPipelineCache handle

  • VUID-vkCreateExecutionGraphPipelinesAMDX-pCreateInfos-parameter
    pCreateInfos must be a valid pointer to an array of createInfoCount valid VkExecutionGraphPipelineCreateInfoAMDX structures

  • VUID-vkCreateExecutionGraphPipelinesAMDX-pAllocator-parameter
    If pAllocator is not NULL, pAllocator must be a valid pointer to a valid VkAllocationCallbacks structure

  • VUID-vkCreateExecutionGraphPipelinesAMDX-pPipelines-parameter
    pPipelines must be a valid pointer to an array of createInfoCount VkPipeline handles

  • VUID-vkCreateExecutionGraphPipelinesAMDX-createInfoCount-arraylength
    createInfoCount must be greater than 0

  • VUID-vkCreateExecutionGraphPipelinesAMDX-pipelineCache-parent
    If pipelineCache is a valid handle, it must have been created, allocated, or retrieved from device

Return Codes
On success, this command returns


On failure, this command returns


See Also

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

SPDX-License-Identifier: CC-BY-4.0