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

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-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#descriptorsets-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-commandBuffer-09940
    If commandBuffer was allocated from a pool that was created with a VkDataGraphProcessingEngineCreateInfoARM structure in the pNext chain of VkCommandPoolCreateInfo 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 tied to VkTensorARM objects that have been bound to memory created from external handle types reported as supported in a VkQueueFamilyDataGraphProcessingEnginePropertiesARM::foreignMemoryHandleTypes structure via vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM with a queueFamilyIndex matching the one the command pool was created for, for all the foreign data graph processing engines that were part of the VkDataGraphProcessingEngineCreateInfoARM used to create the command pool

  • 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

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 data_graph operations

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

  • 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

Data_Graph

Action

See Also

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

SPDX-License-Identifier: CC-BY-4.0