vkCmdDispatchDataGraphARM(3)

# vkCmdDispatchDataGraphARM(3) Manual Page

## Name

vkCmdDispatchDataGraphARM - Dispatch a data graph pipeline within a session

## C Specification

To record a data graph pipeline dispatch, call:

    // Provided by VK_ARM_data_graph
    void vkCmdDispatchDataGraphARM(
        VkCommandBuffer                             commandBuffer,
        VkDataGraphPipelineSessionARM               session,
        const VkDataGraphPipelineDispatchInfoARM*   pInfo);

## Parameters

- `commandBuffer` is the command buffer into which the command will be recorded.

- `session` is the VkDataGraphPipelineSessionARM that data graph pipeline being dispatched will use.

- `pInfo` is `NULL` or a pointer to a VkDataGraphPipelineDispatchInfoARM structure.

## Description

Valid Usage

- VUID-vkCmdDispatchDataGraphARM-session-09796
  For each of the session bind point requirements returned by vkGetDataGraphPipelineSessionBindPointRequirementsARM for `session`, VkDataGraphPipelineSessionBindPointRequirementARM::`numObjects` objects must have been bound to `session`

- VUID-vkCmdDispatchDataGraphARM-dataGraphPipeline-09951
  The VkPipeline bound to the pipeline bind point used by this command must be identical to the `dataGraphPipeline` used to create `session`

- VUID-vkCmdDispatchDataGraphARM-None-09797
  For each set n that is statically used by a bound data graph pipeline, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout that is compatible for set n, with the VkPipelineLayout used to create the current VkPipeline, as described in https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-compatibility

- VUID-vkCmdDispatchDataGraphARM-None-09935
  Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets, must be valid as described by descriptor validity if they are statically used by the VkPipeline bound to the pipeline bind point used by this command and the bound VkPipeline was not created with VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT

- VUID-vkCmdDispatchDataGraphARM-None-09936
  If the descriptors used by the VkPipeline bound to the pipeline bind point were specified via vkCmdBindDescriptorSets, the bound VkPipeline must have been created without VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT

- VUID-vkCmdDispatchDataGraphARM-None-09937
  Descriptors in bound descriptor buffers, specified via vkCmdSetDescriptorBufferOffsetsEXT, must be valid if they are dynamically used by the VkPipeline bound to the pipeline bind point used by this command and the bound VkPipeline was created with VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT

- VUID-vkCmdDispatchDataGraphARM-None-09938
  If the descriptors used by the VkPipeline bound to the pipeline bind point were specified via vkCmdSetDescriptorBufferOffsetsEXT, the bound VkPipeline must have been created with VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT

- VUID-vkCmdDispatchDataGraphARM-None-09939
  If a descriptor is dynamically used with a VkPipeline created with VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident

- VUID-vkCmdDispatchDataGraphARM-None-09799
  A valid data graph pipeline must be bound to the VK_PIPELINE_BIND_POINT_DATA_GRAPH_ARM pipeline bind point used by this command

- VUID-vkCmdDispatchDataGraphARM-pDescription-09930
  If a VK_DESCRIPTOR_TYPE_TENSOR_ARM descriptor is accessed as a result of this command, then the underlying VkTensorARM object must have been created with a VkTensorCreateInfoARM::`pDescription` whose `usage` member contained VK_TENSOR_USAGE_DATA_GRAPH_BIT_ARM

- VUID-vkCmdDispatchDataGraphARM-pipeline-09940
  If the VkPipeline bound to the pipeline bind point used by this command was created with a VkDataGraphProcessingEngineCreateInfoARM structure in the `pNext` chain of VkDataGraphPipelineCreateInfoARM that included a foreign data graph processing engine in its `pProcessingEngines` member, then all VK_DESCRIPTOR_TYPE_TENSOR_ARM descriptors accessed as a result of this command must be VkTensorARM objects that have been bound to memory allocated with VkExportMemoryAllocateInfo::`handleTypes` with set bits that are a subset of the bits in VkQueueFamilyDataGraphProcessingEnginePropertiesARM::`foreignMemoryHandleTypes` structure queried via vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM with a `queueFamilyIndex` matching the one the command pool used to create `commandBuffer` was created for and an identical `engineType`, for all the foreign data graph processing engines that were part of the VkDataGraphProcessingEngineCreateInfoARM used to create the VkPipeline

- VUID-vkCmdDispatchDataGraphARM-pNext-09952
  If the VkPipeline bound to the pipeline bind point used by this command was created with a VkDataGraphProcessingEngineCreateInfoARM structure in the `pNext` chain of VkDataGraphPipelineCreateInfoARM that included a foreign data graph processing engine in its `pProcessingEngines` member, then all `session` bound memory must have been allocated with VkExportMemoryAllocateInfo::`handleTypes` with set bits that are a subset of the bits in VkQueueFamilyDataGraphProcessingEnginePropertiesARM::`foreignMemoryHandleTypes` structure queried via vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM with a `queueFamilyIndex` matching the one the command pool used to create `commandBuffer` was created for and an identical `engineType`, for all the foreign data graph processing engines that were part of the VkDataGraphProcessingEngineCreateInfoARM used to create the VkPipeline

- VUID-vkCmdDispatchDataGraphARM-commandBuffer-09800
  If `commandBuffer` is an unprotected command buffer and `protectedNoFault` is not supported, any resource accessed by bound data graph pipelines must not be a protected resource

- VUID-vkCmdDispatchDataGraphARM-commandBuffer-09801
  If `commandBuffer` is a protected command buffer and `protectedNoFault` is not supported, any resource written to by the `VkPipeline` object bound to the bind point used by this command must not be an unprotected resource

- VUID-vkCmdDispatchDataGraphARM-commandBuffer-09941
  All the operations used by the bound data graph pipeline must be supported on the queue family for which the command pool out of which `commandBuffer` was allocated, as reported by vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM

- VUID-vkCmdDispatchDataGraphARM-pInfo-09964
  If `pInfo` is not `NULL` and its `pNext` chain includes a VkDataGraphPipelineOpticalFlowDispatchInfoARM structure, then the `flags` member of that latter structure must not contain VK_DATA_GRAPH_OPTICAL_FLOW_EXECUTE_INPUT_UNCHANGED_BIT_ARM, VK_DATA_GRAPH_OPTICAL_FLOW_EXECUTE_REFERENCE_UNCHANGED_BIT_ARM, VK_DATA_GRAPH_OPTICAL_FLOW_EXECUTE_INPUT_IS_PREVIOUS_REFERENCE_BIT_ARM, or VK_DATA_GRAPH_OPTICAL_FLOW_EXECUTE_REFERENCE_IS_PREVIOUS_INPUT_BIT_ARM if `session` was not created with VK_DATA_GRAPH_PIPELINE_SESSION_CREATE_OPTICAL_FLOW_CACHE_BIT_ARM

- VUID-vkCmdDispatchDataGraphARM-nodeType-09980
  If the VkPipeline bound to the VK_PIPELINE_BIND_POINT_DATA_GRAPH_ARM pipeline bind point was not created with a VkDataGraphPipelineSingleNodeCreateInfoARM structure whose `nodeType` member is VK_DATA_GRAPH_PIPELINE_NODE_TYPE_OPTICAL_FLOW_ARM included in the `pNext` chain of VkDataGraphPipelineCreateInfoARM, then a VkDataGraphPipelineOpticalFlowDispatchInfoARM structure must not be included in the `pNext` chain of `pInfo`

- VUID-vkCmdDispatchDataGraphARM-nodeType-09981
  If the VkPipeline bound to the VK_PIPELINE_BIND_POINT_DATA_GRAPH_ARM pipeline bind point was created with a VkDataGraphPipelineSingleNodeCreateInfoARM structure whose `nodeType` member is VK_DATA_GRAPH_PIPELINE_NODE_TYPE_OPTICAL_FLOW_ARM included in the `pNext` chain of VkDataGraphPipelineCreateInfoARM, then all image subresources that are accessed via a connection point in VkDataGraphPipelineSingleNodeCreateInfoARM::`pConnections` must be in the layout specified by the `layout` member of the VkDataGraphPipelineResourceInfoImageLayoutARM that extends the VkDataGraphPipelineResourceInfoARM structure whose `descriptorSet` and `binding` members match the `set` and `binding` members of the VkDataGraphPipelineSingleNodeConnectionARM structure for the connection point , unless the `unifiedImageLayouts` feature is enabled, in which case they may be in the VK_IMAGE_LAYOUT_GENERAL layout

Valid Usage (Implicit)

- VUID-vkCmdDispatchDataGraphARM-commandBuffer-parameter
  `commandBuffer` must be a valid VkCommandBuffer handle

- VUID-vkCmdDispatchDataGraphARM-session-parameter
  `session` must be a valid VkDataGraphPipelineSessionARM handle

- VUID-vkCmdDispatchDataGraphARM-pInfo-parameter
  If `pInfo` is not `NULL`, `pInfo` must be a valid pointer to a valid VkDataGraphPipelineDispatchInfoARM structure

- VUID-vkCmdDispatchDataGraphARM-commandBuffer-recording
  `commandBuffer` must be in the recording state

- VUID-vkCmdDispatchDataGraphARM-commandBuffer-cmdpool
  The `VkCommandPool` that `commandBuffer` was allocated from must support VK_QUEUE_DATA_GRAPH_BIT_ARM operations

- VUID-vkCmdDispatchDataGraphARM-renderpass
  This command must only be called outside of a render pass instance

- VUID-vkCmdDispatchDataGraphARM-suspended
  This command must not be called between suspended render pass instances

- VUID-vkCmdDispatchDataGraphARM-videocoding
  This command must only be called outside of a video coding scope

- VUID-vkCmdDispatchDataGraphARM-commonparent
  Both of `commandBuffer`, and `session` must have been created, allocated, or retrieved from the same VkDevice

Host Synchronization

- Host access to `commandBuffer` must be externally synchronized

- Host access to the `VkCommandPool` that `commandBuffer` was allocated from must be externally synchronized

Command Properties

Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type
--- | --- | --- | --- | ---
Primary Secondary | Outside | Outside | VK_QUEUE_DATA_GRAPH_BIT_ARM | Action

Conditional Rendering

vkCmdDispatchDataGraphARM is affected by conditional rendering

## See Also

VK_ARM_data_graph, VkCommandBuffer, VkDataGraphPipelineDispatchInfoARM, VkDataGraphPipelineSessionARM

## 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