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
-
commandBufferis the command buffer into which the command will be recorded. -
sessionis the VkDataGraphPipelineSessionARM that data graph pipeline being dispatched will use. -
pInfoisNULLor a pointer to a VkDataGraphPipelineDispatchInfoARM structure.
Description
-
VUID-vkCmdDispatchDataGraphARM-session-09796
For each of the session bind point requirements returned by vkGetDataGraphPipelineSessionBindPointRequirementsARM forsession, VkDataGraphPipelineSessionBindPointRequirementARM::numObjectsobjects must have been bound tosession -
VUID-vkCmdDispatchDataGraphARM-dataGraphPipeline-09951
The VkPipeline bound to the pipeline bind point used by this command must be identical to thedataGraphPipelineused to createsession -
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 withVK_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 withoutVK_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 withVK_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 withVK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT -
VUID-vkCmdDispatchDataGraphARM-None-09939
If a descriptor is dynamically used with a VkPipeline created withVK_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 theVK_PIPELINE_BIND_POINT_DATA_GRAPH_ARMpipeline bind point used by this command -
VUID-vkCmdDispatchDataGraphARM-pDescription-09930
If aVK_DESCRIPTOR_TYPE_TENSOR_ARMdescriptor is accessed as a result of this command, then the underlying VkTensorARM object must have been created with a VkTensorCreateInfoARM::pDescriptionwhoseusagemember containedVK_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 thepNextchain of VkDataGraphPipelineCreateInfoARM that included a foreign data graph processing engine in itspProcessingEnginesmember, then allVK_DESCRIPTOR_TYPE_TENSOR_ARMdescriptors accessed as a result of this command must be VkTensorARM objects that have been bound to memory allocated with VkExportMemoryAllocateInfo::handleTypeswith set bits that are a subset of the bits in VkQueueFamilyDataGraphProcessingEnginePropertiesARM::foreignMemoryHandleTypesstructure queried via vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM with aqueueFamilyIndexmatching the one the command pool used to createcommandBufferwas created for and an identicalengineType, 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 thepNextchain of VkDataGraphPipelineCreateInfoARM that included a foreign data graph processing engine in itspProcessingEnginesmember, then allsessionbound memory must have been allocated with VkExportMemoryAllocateInfo::handleTypeswith set bits that are a subset of the bits in VkQueueFamilyDataGraphProcessingEnginePropertiesARM::foreignMemoryHandleTypesstructure queried via vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM with aqueueFamilyIndexmatching the one the command pool used to createcommandBufferwas created for and an identicalengineType, for all the foreign data graph processing engines that were part of the VkDataGraphProcessingEngineCreateInfoARM used to create the VkPipeline -
VUID-vkCmdDispatchDataGraphARM-commandBuffer-09800
IfcommandBufferis an unprotected command buffer andprotectedNoFaultis not supported, any resource accessed by bound data graph pipelines must not be a protected resource -
VUID-vkCmdDispatchDataGraphARM-commandBuffer-09801
IfcommandBufferis a protected command buffer andprotectedNoFaultis not supported, any resource written to by theVkPipelineobject 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 whichcommandBufferwas allocated, as reported by vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM
-
VUID-vkCmdDispatchDataGraphARM-commandBuffer-parameter
commandBuffermust be a valid VkCommandBuffer handle -
VUID-vkCmdDispatchDataGraphARM-session-parameter
sessionmust be a valid VkDataGraphPipelineSessionARM handle -
VUID-vkCmdDispatchDataGraphARM-pInfo-parameter
IfpInfois notNULL,pInfomust be a valid pointer to a valid VkDataGraphPipelineDispatchInfoARM structure -
VUID-vkCmdDispatchDataGraphARM-commandBuffer-recording
commandBuffermust be in the recording state -
VUID-vkCmdDispatchDataGraphARM-commandBuffer-cmdpool
TheVkCommandPoolthatcommandBufferwas 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-videocoding
This command must only be called outside of a video coding scope -
VUID-vkCmdDispatchDataGraphARM-commonparent
Both ofcommandBuffer, andsessionmust have been created, allocated, or retrieved from the same VkDevice
-
Host access to
commandBuffermust be externally synchronized -
Host access to the
VkCommandPoolthatcommandBufferwas allocated from must be externally synchronized
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
Primary |
Outside |
Outside |
VK_QUEUE_DATA_GRAPH_BIT_ARM |
Action |
vkCmdDispatchDataGraphARM is affected by conditional rendering
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.