# VK_ARM_data_graph(3) Manual Page

## Name

VK_ARM_data_graph - device extension

Loading… please wait.

## Registered Extension Number

508

## Revision

1

## Ratification Status

Not ratified

## Extension and Version Dependencies

Vulkan Version 1.3
and
VK_KHR_maintenance5
and
VK_KHR_deferred_host_operations

## API Interactions

- Interacts with VK_ARM_tensors

## SPIR-V Dependencies

- SPV_ARM_graph

## Contact

- Kevin Petit [GitHub]kpet

## Other Extension Metadata

Last Modified Date

  2025-06-18

Interactions and External Dependencies

  - This extension requires `SPV_ARM_graph`

  - This extension interacts with `VK_EXT_mutable_descriptor_type`

  - This extension interacts with `VK_EXT_pipeline_protected_access`

  - This extension interacts with `VK_ARM_tensors`

  - This extension interacts with `VK_EXT_descriptor_buffer`

  - This extension interacts with `VK_KHR_maintenance6`

IP Status

  No known IP claims.

Contributors

  - Kévin Petit, Arm Ltd.

  - Emma Ben Yossef, Arm Ltd.

  - Stefano Bucciarelli, Arm Ltd.

  - Marco Cattani, Arm Ltd.

  - Aaron DeBattista, Arm Ltd.

  - Jan-Harald Fredriksen, Arm Ltd.

  - Einar Hov, Arm Ltd.

  - Robert Hughes, Arm Ltd.

  - Oualid Khelifi, Arm Ltd.

  - Derek Lamberti, Arm Ltd.

  - Chetan Mistry, Arm Ltd.

  - Georgios Teneketzis, Arm Ltd.

## Description

This extension adds support for a new type of pipeline, data graph pipelines, that provide an encapsulation construct for computational graphs operating on full resources (e.g. ML/AI graphs, image processing pipelines, etc). This extension only supports tensor resources and does not define any operations that can be used within those graphs. These operations will be defined by separate extensions.

## New Object Types

- VkDataGraphPipelineSessionARM

## New Commands

- vkBindDataGraphPipelineSessionMemoryARM

- vkCmdDispatchDataGraphARM

- vkCreateDataGraphPipelineSessionARM

- vkCreateDataGraphPipelinesARM

- vkDestroyDataGraphPipelineSessionARM

- vkGetDataGraphPipelineAvailablePropertiesARM

- vkGetDataGraphPipelinePropertiesARM

- vkGetDataGraphPipelineSessionBindPointRequirementsARM

- vkGetDataGraphPipelineSessionMemoryRequirementsARM

- vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM

- vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM

## New Structures

- VkBindDataGraphPipelineSessionMemoryInfoARM

- VkDataGraphPipelineConstantARM

- VkDataGraphPipelineCreateInfoARM

- VkDataGraphPipelineDispatchInfoARM

- VkDataGraphPipelineInfoARM

- VkDataGraphPipelinePropertyQueryResultARM

- VkDataGraphPipelineResourceInfoARM

- VkDataGraphPipelineSessionBindPointRequirementARM

- VkDataGraphPipelineSessionBindPointRequirementsInfoARM

- VkDataGraphPipelineSessionCreateInfoARM

- VkDataGraphPipelineSessionMemoryRequirementsInfoARM

- VkPhysicalDeviceDataGraphOperationSupportARM

- VkPhysicalDeviceDataGraphProcessingEngineARM

- VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM

- VkQueueFamilyDataGraphProcessingEnginePropertiesARM

- VkQueueFamilyDataGraphPropertiesARM

- Extending VkDataGraphPipelineCreateInfoARM:

  - VkDataGraphPipelineCompilerControlCreateInfoARM

  - VkDataGraphPipelineIdentifierCreateInfoARM

  - VkDataGraphPipelineShaderModuleCreateInfoARM

- Extending VkDataGraphPipelineCreateInfoARM, VkDescriptorPoolCreateInfo, VkCommandPoolCreateInfo:

  - VkDataGraphProcessingEngineCreateInfoARM

- Extending VkPhysicalDeviceFeatures2, VkDeviceCreateInfo:

  - VkPhysicalDeviceDataGraphFeaturesARM

If VK_ARM_tensors is supported:

- Extending VkDataGraphPipelineConstantARM:

  - VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM

## New Enums

- VkDataGraphPipelineDispatchFlagBitsARM

- VkDataGraphPipelinePropertyARM

- VkDataGraphPipelineSessionBindPointARM

- VkDataGraphPipelineSessionBindPointTypeARM

- VkDataGraphPipelineSessionCreateFlagBitsARM

- VkPhysicalDeviceDataGraphOperationTypeARM

- VkPhysicalDeviceDataGraphProcessingEngineTypeARM

## New Bitmasks

- VkDataGraphPipelineDispatchFlagsARM

- VkDataGraphPipelineSessionCreateFlagsARM

## New Enum Constants

- `VK_ARM_DATA_GRAPH_EXTENSION_NAME`

- `VK_ARM_DATA_GRAPH_SPEC_VERSION`

- `VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM`

- Extending VkAccessFlagBits2:

  - `VK_ACCESS_2_DATA_GRAPH_READ_BIT_ARM`

  - `VK_ACCESS_2_DATA_GRAPH_WRITE_BIT_ARM`

- Extending VkBufferUsageFlagBits2:

  - `VK_BUFFER_USAGE_2_DATA_GRAPH_FOREIGN_DESCRIPTOR_BIT_ARM`

- Extending VkFormatFeatureFlagBits2:

  - `VK_FORMAT_FEATURE_2_TENSOR_DATA_GRAPH_BIT_ARM`

- Extending VkObjectType:

  - `VK_OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM`

- Extending VkPipelineBindPoint:

  - `VK_PIPELINE_BIND_POINT_DATA_GRAPH_ARM`

- Extending VkPipelineStageFlagBits2:

  - `VK_PIPELINE_STAGE_2_DATA_GRAPH_BIT_ARM`

- Extending VkQueueFlagBits:

  - `VK_QUEUE_DATA_GRAPH_BIT_ARM`

- Extending VkStructureType:

  - `VK_STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM`

  - `VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM`

  - `VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM`

  - `VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM`

  - `VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM`

  - `VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM`

  - `VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM`

  - `VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM`

  - `VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM`

  - `VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM`

  - `VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM`

  - `VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM`

  - `VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM`

  - `VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM`

  - `VK_STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM`

  - `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM`

  - `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM`

  - `VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM`

  - `VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM`

- Extending VkTensorUsageFlagBitsARM:

  - `VK_TENSOR_USAGE_DATA_GRAPH_BIT_ARM`

If VK_ARM_tensors is supported:

- Extending VkStructureType:

  - `VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM`

## New SPIR-V Capabilities

- GraphARM

## Issues

1) Should graph pipeline resource info structures be integrated into pipeline layouts? Would a new graph pipeline layout be a better fit?

RESOLVED: Graph pipeline resource info are passed separately at pipeline creation time.

2) Do we need a new shader stage for graph pipelines for use in creating descriptor set layouts?

RESOLVED: Currently using `VK_SHADER_STAGE_ALL`.

3) Should this extension provide applications with a way of knowing which combinations of sparsity information implementations can take advantage of when processing graph constants?

RESOLVED: No. Describing the exact combinations is in some cases complex and it is always valid for implementations to ignore the sparsity information and treat the data as dense. Specific implementations can provide guidance to application writers if they so desire and applications are encouraged to always provide sparsity information that they have.

## Version History

- Revision 1, 2025-06-18 (Kévin Petit)

  - Initial revision

## See Also

No cross-references are available

## Document Notes

For more information, see the Vulkan Specification

This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.

## Copyright

Copyright 2014-2025 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0