# VkDataGraphPipelineCreateInfoARM(3) Manual Page

## Name

VkDataGraphPipelineCreateInfoARM - Structure specifying parameters of a newly created data graph pipeline

Loading… please wait.

## C Specification

The `VkDataGraphPipelineCreateInfoARM` structure is defined as:

    // Provided by VK_ARM_data_graph
    typedef struct VkDataGraphPipelineCreateInfoARM {
        VkStructureType                              sType;
        const void*                                  pNext;
        VkPipelineCreateFlags2KHR                    flags;
        VkPipelineLayout                             layout;
        uint32_t                                     resourceInfoCount;
        const VkDataGraphPipelineResourceInfoARM*    pResourceInfos;
    } VkDataGraphPipelineCreateInfoARM;

## 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 VkPipelineCreateFlagBits2KHR specifying how the pipeline will be generated.

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

- `resourceInfoCount` is the length of the `pResourceInfos` array.

- `pResourceInfos` is a pointer to an array of VkDataGraphPipelineResourceInfoARM structures.

## Description

Applications can create a data graph pipeline entirely from data present in a pipeline cache. This is done by including a VkDataGraphPipelineIdentifierCreateInfoARM structure in the `pNext` chain. If the required data is not found in the pipeline cache, creating the data graph pipeline is not possible and the implementation must fail as specified by `VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT`.

Applications can create a data graph pipeline without providing a pipeline cache or shader module by invoking one of the models provided by the implementation. This is done by including VkDataGraphPipelineBuiltinModelCreateInfoQCOM in the `pNext` chain.

When an identifier or built-in model is used to create a data graph pipeline, implementations may fail pipeline creation with `VK_PIPELINE_COMPILE_REQUIRED` for any reason.

The data graph engines for this pipeline can be selected by including a VkDataGraphProcessingEngineCreateInfoARM to the `pNext` chain of this structure. Otherwise, `VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM` will be used as the sole data graph engine.

The data graph operations that this pipeline uses must be supported for the data graph engines selected for this pipeline as retrieved by vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM.

Valid Usage

- VUID-VkDataGraphPipelineCreateInfoARM-pNext-09763
  One and only one of the following structures must be included in the `pNext` chain:

  - VkDataGraphPipelineShaderModuleCreateInfoARM

  - VkDataGraphPipelineIdentifierCreateInfoARM

  - VkDataGraphPipelineBuiltinModelCreateInfoQCOM

- VUID-VkDataGraphPipelineCreateInfoARM-flags-09764
  `flags` may only contain `VK_PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT`, `VK_PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT`, `VK_PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT`, `VK_PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT`, `VK_PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR` or `VK_PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR`

- VUID-VkDataGraphPipelineCreateInfoARM-layout-09767
  `layout` must have been created with `pushConstantRangeCount` equal to 0 and `pPushConstantRanges` equal to `NULL`

- VUID-VkDataGraphPipelineCreateInfoARM-dataGraphUpdateAfterBind-09768
  If the `dataGraphUpdateAfterBind` feature is not enabled, `layout` must not use any VkDescriptorSetLayout object created with the `VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT` bit set

- VUID-VkDataGraphPipelineCreateInfoARM-dataGraphDescriptorBuffer-09885
  If the `dataGraphDescriptorBuffer` feature is not enabled, `flags` must not contain `VK_PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT`

- VUID-VkDataGraphPipelineCreateInfoARM-layout-09769
  If a VkDataGraphPipelineShaderModuleCreateInfoARM structure is included in the `pNext` chain and a resource variable is declared in the shader module, the corresponding descriptor binding used to create `layout` must have a `descriptorType` that corresponds to the type of the resource variable

- VUID-VkDataGraphPipelineCreateInfoARM-None-11840
  If a VkDataGraphPipelineIdentifierCreateInfoARM or VkDataGraphPipelineBuiltinModelCreateInfoQCOM structure is included in the `pNext` chain, then `flags` must contain `VK_PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT`

- VUID-VkDataGraphPipelineCreateInfoARM-None-11841
  If a VkDataGraphPipelineIdentifierCreateInfoARM or VkDataGraphPipelineBuiltinModelCreateInfoQCOM structure is included in the `pNext` chain, then `resourceInfoCount` must be 0 and `pResourceInfos` must be `NULL`

- VUID-VkDataGraphPipelineCreateInfoARM-dataGraphShaderModule-09886
  If the `dataGraphShaderModule` feature is not enabled, a VkDataGraphPipelineShaderModuleCreateInfoARM structure must not be included in the `pNext` chain

- VUID-VkDataGraphPipelineCreateInfoARM-layout-09934
  If a VkDataGraphPipelineShaderModuleCreateInfoARM structure is included in the `pNext` chain and an array resource variable is declared in the shader module, 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-VkDataGraphPipelineCreateInfoARM-pipelineCreationCacheControl-09871
  If the `pipelineCreationCacheControl` feature is not enabled, `flags` must not include `VK_PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR` or `VK_PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR`

- VUID-VkDataGraphPipelineCreateInfoARM-pSetLayouts-09770
  The descriptor set layouts in VkPipelineLayoutCreateInfo::`pSetLayouts` used to create `layout` must not include any VkDescriptorSetLayoutBinding whose descriptor type is `VK_DESCRIPTOR_TYPE_MUTABLE_EXT`

- VUID-VkDataGraphPipelineCreateInfoARM-pipelineProtectedAccess-09772
  If the `pipelineProtectedAccess` feature is not enabled, `flags` must not include `VK_PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT` or `VK_PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT`

- VUID-VkDataGraphPipelineCreateInfoARM-flags-09773
  `flags` must not include both `VK_PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT` and `VK_PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT`

- VUID-VkDataGraphPipelineCreateInfoARM-pNext-09804
  If the `pNext` chain includes an VkPipelineCreationFeedbackCreateInfo structure, then its `pipelineStageCreationFeedbackCount` must be 0

- VUID-VkDataGraphPipelineCreateInfoARM-pNext-09948
  If a VkDataGraphProcessingEngineCreateInfoARM structure is included in the `pNext` chain, each member of `pProcessingEngines` must be identical to an VkQueueFamilyDataGraphPropertiesARM::`engine` retrieved from vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM with the `physicalDevice` that was used to create `device`

- VUID-VkDataGraphPipelineCreateInfoARM-pNext-09949
  If a VkDataGraphProcessingEngineCreateInfoARM structure is not included in the `pNext` chain, `VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM` must be set in an VkQueueFamilyDataGraphPropertiesARM::`engine` retrieved from vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM with the `physicalDevice` that was used to create `device`

Valid Usage (Implicit)

- VUID-VkDataGraphPipelineCreateInfoARM-sType-sType
  `sType` must be `VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM`

- VUID-VkDataGraphPipelineCreateInfoARM-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 VkDataGraphPipelineBuiltinModelCreateInfoQCOM, VkDataGraphPipelineCompilerControlCreateInfoARM, VkDataGraphPipelineIdentifierCreateInfoARM, VkDataGraphPipelineShaderModuleCreateInfoARM, VkDataGraphProcessingEngineCreateInfoARM, VkPipelineCreationFeedbackCreateInfo, or VkShaderModuleCreateInfo

- VUID-VkDataGraphPipelineCreateInfoARM-sType-unique
  The `sType` value of each structure in the `pNext` chain must be unique

- VUID-VkDataGraphPipelineCreateInfoARM-flags-parameter
  `flags` must be a valid combination of VkPipelineCreateFlagBits2KHR values

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

- VUID-VkDataGraphPipelineCreateInfoARM-pResourceInfos-parameter
  `pResourceInfos` must be a valid pointer to an array of `resourceInfoCount` valid VkDataGraphPipelineResourceInfoARM structures

- VUID-VkDataGraphPipelineCreateInfoARM-resourceInfoCount-arraylength
  `resourceInfoCount` must be greater than `0`

## See Also

VK_ARM_data_graph, VkDataGraphPipelineResourceInfoARM, VkPipelineCreateFlags2, VkPipelineLayout, VkStructureType, vkCreateDataGraphPipelinesARM

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

SPDX-License-Identifier: CC-BY-4.0