Function Prototype

vkCmdDispatchDataGraphARM

Dispatch a data graph pipeline within a session

To record a data graph pipeline dispatch, call:

void vkCmdDispatchDataGraphARM(
    VkCommandBuffer commandBuffer,
    VkDataGraphPipelineSessionARM session,
    const VkDataGraphPipelineDispatchInfoARM* pInfo);

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 Pipeline Layout 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

Valid Usage (Implicit)

VUID-vkCmdDispatchDataGraphARM-pInfo-parameter

If pInfo is not NULL, pInfo must be a valid pointer to a valid VkDataGraphPipelineDispatchInfoARM structure

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