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 Structures
-
Extending VkDataGraphPipelineCreateInfoARM:
-
Extending VkDataGraphPipelineCreateInfoARM, VkDescriptorPoolCreateInfo, VkCommandPoolCreateInfo:
-
Extending VkPhysicalDeviceFeatures2, VkDeviceCreateInfo:
If VK_ARM_tensors is supported:
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
-
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.
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.