VkDataGraphPipelineCreateInfoARM(3)

# VkDataGraphPipelineCreateInfoARM(3) Manual Page

## Name

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

## C Specification

The `VkDataGraphPipelineCreateInfoARM` structure is defined as:

    // Provided by VK_ARM_data_graph
    typedef struct VkDataGraphPipelineCreateInfoARM {
        VkStructureType                              sType;
        const void*                                  pNext;
        VkPipelineCreateFlags2                       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-09977
  One and only one of the following structures must be included in the `pNext` chain:

  - VkDataGraphPipelineShaderModuleCreateInfoARM

  - VkDataGraphPipelineIdentifierCreateInfoARM

  - VkDataGraphPipelineBuiltinModelCreateInfoQCOM

  - VkDataGraphPipelineSingleNodeCreateInfoARM

- 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-flags-09848
  If `flags` contains VK_PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT then a VkDataGraphPipelineNeuralStatisticsCreateInfoARM structure must not be included in the `pNext` chain.

- 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 a 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-12363
  If a VkDataGraphPipelineIdentifierCreateInfoARM or a VkDataGraphPipelineBuiltinModelCreateInfoQCOM structure is included in the `pNext` chain, then `resourceInfoCount` must be 0

- VUID-VkDataGraphPipelineCreateInfoARM-resourceInfoCount-12364
  If `resourceInfoCount` is equal to 0, then `pResourceInfos` must equal `NULL`

- VUID-VkDataGraphPipelineCreateInfoARM-None-12365
  If neither a VkDataGraphPipelineIdentifierCreateInfoARM nor a VkDataGraphPipelineBuiltinModelCreateInfoQCOM structure are included in the `pNext` chain, then `resourceInfoCount` must be greater than 0

- 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, VkDataGraphPipelineNeuralStatisticsCreateInfoARM, VkDataGraphPipelineOpticalFlowCreateInfoARM, VkDataGraphPipelineShaderModuleCreateInfoARM, VkDataGraphPipelineSingleNodeCreateInfoARM, 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 VkPipelineCreateFlagBits2 values

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

- VUID-VkDataGraphPipelineCreateInfoARM-pResourceInfos-parameter
  If `resourceInfoCount` is not `0`, `pResourceInfos` must be a valid pointer to an array of `resourceInfoCount` valid VkDataGraphPipelineResourceInfoARM structures

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

SPDX-License-Identifier: CC-BY-4.0