| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Vulkan.Extensions.VK_ARM_data_graph
Description
Name
VK_ARM_data_graph - device extension
VK_ARM_data_graph
- Name String
VK_ARM_data_graph
- Extension Type
- Device extension
- Registered Extension Number
- 508
- Revision
- 1
- Ratification Status
- Not ratified
- Extension and Version Dependencies
- Vulkan Version 1.3 and VK_KHR_maintenance5 and VK_KHR_deferred_host_operations
- API Interactions
- Interacts with VK_ARM_tensors
- SPIR-V Dependencies
- Contact
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.
- Matthew Netsch, Qualcomm Technologies, Inc
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 Object Types
New Commands
cmdDispatchDataGraphARMcreateDataGraphPipelineSessionARMcreateDataGraphPipelinesARMdestroyDataGraphPipelineSessionARMgetDataGraphPipelineAvailablePropertiesARMgetDataGraphPipelinePropertiesARMgetDataGraphPipelineSessionBindPointRequirementsARMgetDataGraphPipelineSessionMemoryRequirementsARMgetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARMgetPhysicalDeviceQueueFamilyDataGraphPropertiesARM
New Structures
DataGraphPipelineConstantARMDataGraphPipelineCreateInfoARMDataGraphPipelineDispatchInfoARMDataGraphPipelineInfoARMDataGraphPipelinePropertyQueryResultARMDataGraphPipelineResourceInfoARMDataGraphPipelineSessionBindPointRequirementARMDataGraphPipelineSessionBindPointRequirementsInfoARMDataGraphPipelineSessionCreateInfoARMDataGraphPipelineSessionMemoryRequirementsInfoARMPhysicalDeviceDataGraphOperationSupportARMPhysicalDeviceDataGraphProcessingEngineARMPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARMQueueFamilyDataGraphProcessingEnginePropertiesARMQueueFamilyDataGraphPropertiesARMExtending
DataGraphPipelineCreateInfoARM:Extending
DataGraphPipelineCreateInfoARM,DescriptorPoolCreateInfo,CommandPoolCreateInfo:Extending
PhysicalDeviceFeatures2,DeviceCreateInfo:
If VK_ARM_tensors is supported:
New Enums
DataGraphPipelinePropertyARMDataGraphPipelineSessionBindPointARMDataGraphPipelineSessionBindPointTypeARMDataGraphPipelineSessionCreateFlagBitsARMPhysicalDeviceDataGraphOperationTypeARMPhysicalDeviceDataGraphProcessingEngineTypeARM
New Bitmasks
New Enum Constants
ARM_DATA_GRAPH_SPEC_VERSIONMAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARMExtending
AccessFlagBits2:Extending
BufferUsageFlagBits2:Extending
FormatFeatureFlagBits2:Extending
ObjectType:Extending
PipelineBindPoint:Extending
PipelineStageFlagBits2:Extending
QueueFlagBits:Extending
StructureType:STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARMSTRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARMSTRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARMSTRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARMSTRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARMSTRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARMSTRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARMSTRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARMSTRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARMSTRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARMSTRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARMSTRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARMSTRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARMSTRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARMSTRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARMSTRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARMSTRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARMSTRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARMSTRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM
Extending
TensorUsageFlagBitsARM:
If VK_ARM_tensors is supported:
Extending
StructureType:
New SPIR-V Capabilities
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
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.
Version History
Revision 1, 2025-06-18 (Kévin Petit)
- Initial revision
See Also
No cross-references are available
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.
Synopsis
- createDataGraphPipelinesARM :: MonadIO io => Device -> DeferredOperationKHR -> PipelineCache -> ("createInfos" ::: Vector (SomeStruct DataGraphPipelineCreateInfoARM)) -> ("allocator" ::: Maybe AllocationCallbacks) -> io (Result, "pipelines" ::: Vector Pipeline)
- createDataGraphPipelineSessionARM :: MonadIO io => Device -> DataGraphPipelineSessionCreateInfoARM -> ("allocator" ::: Maybe AllocationCallbacks) -> io DataGraphPipelineSessionARM
- withDataGraphPipelineSessionARM :: MonadIO io => Device -> DataGraphPipelineSessionCreateInfoARM -> Maybe AllocationCallbacks -> (io DataGraphPipelineSessionARM -> (DataGraphPipelineSessionARM -> io ()) -> r) -> r
- getDataGraphPipelineSessionBindPointRequirementsARM :: MonadIO io => Device -> DataGraphPipelineSessionBindPointRequirementsInfoARM -> io (Result, "bindPointRequirements" ::: Vector DataGraphPipelineSessionBindPointRequirementARM)
- getDataGraphPipelineSessionMemoryRequirementsARM :: forall (a :: [Type]) io. (Extendss MemoryRequirements2 a, PokeChain a, PeekChain a, MonadIO io) => Device -> DataGraphPipelineSessionMemoryRequirementsInfoARM -> io (MemoryRequirements2 a)
- bindDataGraphPipelineSessionMemoryARM :: MonadIO io => Device -> ("bindInfos" ::: Vector BindDataGraphPipelineSessionMemoryInfoARM) -> io ()
- destroyDataGraphPipelineSessionARM :: MonadIO io => Device -> DataGraphPipelineSessionARM -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
- cmdDispatchDataGraphARM :: MonadIO io => CommandBuffer -> DataGraphPipelineSessionARM -> ("info" ::: Maybe DataGraphPipelineDispatchInfoARM) -> io ()
- getDataGraphPipelineAvailablePropertiesARM :: MonadIO io => Device -> DataGraphPipelineInfoARM -> io (Result, "properties" ::: Vector DataGraphPipelinePropertyARM)
- getDataGraphPipelinePropertiesARM :: MonadIO io => Device -> DataGraphPipelineInfoARM -> ("propertiesCount" ::: Word32) -> io (Result, "properties" ::: Vector DataGraphPipelinePropertyQueryResultARM)
- getPhysicalDeviceQueueFamilyDataGraphPropertiesARM :: MonadIO io => PhysicalDevice -> ("queueFamilyIndex" ::: Word32) -> io (Result, "queueFamilyDataGraphProperties" ::: Vector QueueFamilyDataGraphPropertiesARM)
- getPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM :: MonadIO io => PhysicalDevice -> PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM -> io QueueFamilyDataGraphProcessingEnginePropertiesARM
- data PhysicalDeviceDataGraphFeaturesARM = PhysicalDeviceDataGraphFeaturesARM {}
- data DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM = DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM {}
- data DataGraphPipelineConstantARM (es :: [Type]) = DataGraphPipelineConstantARM {}
- data DataGraphPipelineResourceInfoARM (es :: [Type]) = DataGraphPipelineResourceInfoARM {
- next :: Chain es
- descriptorSet :: Word32
- binding :: Word32
- arrayElement :: Word32
- data DataGraphPipelineCompilerControlCreateInfoARM = DataGraphPipelineCompilerControlCreateInfoARM {}
- data DataGraphPipelineCreateInfoARM (es :: [Type]) = DataGraphPipelineCreateInfoARM {}
- data DataGraphPipelineShaderModuleCreateInfoARM = DataGraphPipelineShaderModuleCreateInfoARM {}
- data DataGraphPipelineSessionCreateInfoARM = DataGraphPipelineSessionCreateInfoARM {}
- data DataGraphPipelineSessionBindPointRequirementsInfoARM = DataGraphPipelineSessionBindPointRequirementsInfoARM {}
- data DataGraphPipelineSessionBindPointRequirementARM = DataGraphPipelineSessionBindPointRequirementARM {}
- data DataGraphPipelineSessionMemoryRequirementsInfoARM = DataGraphPipelineSessionMemoryRequirementsInfoARM {}
- data BindDataGraphPipelineSessionMemoryInfoARM = BindDataGraphPipelineSessionMemoryInfoARM {}
- data DataGraphPipelineInfoARM = DataGraphPipelineInfoARM {}
- data DataGraphPipelinePropertyQueryResultARM = DataGraphPipelinePropertyQueryResultARM {}
- data DataGraphPipelineIdentifierCreateInfoARM = DataGraphPipelineIdentifierCreateInfoARM {}
- data DataGraphPipelineDispatchInfoARM = DataGraphPipelineDispatchInfoARM {}
- data PhysicalDeviceDataGraphProcessingEngineARM = PhysicalDeviceDataGraphProcessingEngineARM {}
- data PhysicalDeviceDataGraphOperationSupportARM = PhysicalDeviceDataGraphOperationSupportARM {}
- data QueueFamilyDataGraphPropertiesARM = QueueFamilyDataGraphPropertiesARM {}
- data PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM = PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM {}
- data QueueFamilyDataGraphProcessingEnginePropertiesARM = QueueFamilyDataGraphProcessingEnginePropertiesARM {}
- data DataGraphProcessingEngineCreateInfoARM = DataGraphProcessingEngineCreateInfoARM {}
- type DataGraphPipelineSessionCreateFlagsARM = DataGraphPipelineSessionCreateFlagBitsARM
- newtype DataGraphPipelineSessionCreateFlagBitsARM where
- newtype DataGraphPipelineSessionBindPointARM where
- newtype DataGraphPipelineSessionBindPointTypeARM where
- newtype DataGraphPipelinePropertyARM where
- type DataGraphPipelineDispatchFlagsARM = DataGraphPipelineDispatchFlagBitsARM
- newtype DataGraphPipelineDispatchFlagBitsARM = DataGraphPipelineDispatchFlagBitsARM Flags64
- newtype PhysicalDeviceDataGraphProcessingEngineTypeARM where
- PhysicalDeviceDataGraphProcessingEngineTypeARM Int32
- pattern PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM :: PhysicalDeviceDataGraphProcessingEngineTypeARM
- pattern PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_COMPUTE_QCOM :: PhysicalDeviceDataGraphProcessingEngineTypeARM
- pattern PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_NEURAL_QCOM :: PhysicalDeviceDataGraphProcessingEngineTypeARM
- newtype PhysicalDeviceDataGraphOperationTypeARM where
- PhysicalDeviceDataGraphOperationTypeARM Int32
- pattern PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_SPIRV_EXTENDED_INSTRUCTION_SET_ARM :: PhysicalDeviceDataGraphOperationTypeARM
- pattern PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_BUILTIN_MODEL_QCOM :: PhysicalDeviceDataGraphOperationTypeARM
- pattern PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_NEURAL_MODEL_QCOM :: PhysicalDeviceDataGraphOperationTypeARM
- type ARM_DATA_GRAPH_SPEC_VERSION = 1
- pattern ARM_DATA_GRAPH_SPEC_VERSION :: Integral a => a
- type ARM_DATA_GRAPH_EXTENSION_NAME = "VK_ARM_data_graph"
- pattern ARM_DATA_GRAPH_EXTENSION_NAME :: (Eq a, IsString a) => a
- newtype DeferredOperationKHR = DeferredOperationKHR Word64
- newtype DataGraphPipelineSessionARM = DataGraphPipelineSessionARM Word64
- newtype TensorUsageFlagBitsARM where
- TensorUsageFlagBitsARM Flags64
- pattern TENSOR_USAGE_DATA_GRAPH_BIT_ARM :: TensorUsageFlagBitsARM
- pattern TENSOR_USAGE_IMAGE_ALIASING_BIT_ARM :: TensorUsageFlagBitsARM
- pattern TENSOR_USAGE_SHADER_BIT_ARM :: TensorUsageFlagBitsARM
- pattern TENSOR_USAGE_TRANSFER_DST_BIT_ARM :: TensorUsageFlagBitsARM
- pattern TENSOR_USAGE_TRANSFER_SRC_BIT_ARM :: TensorUsageFlagBitsARM
- type TensorUsageFlagsARM = TensorUsageFlagBitsARM
- type PipelineCreateFlags2KHR = PipelineCreateFlags2
- type MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM = 128
- pattern MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM :: Integral a => a
Documentation
createDataGraphPipelinesARM Source #
Arguments
| :: MonadIO io | |
| => Device |
|
| -> DeferredOperationKHR |
|
| -> PipelineCache |
|
| -> ("createInfos" ::: Vector (SomeStruct DataGraphPipelineCreateInfoARM)) |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io (Result, "pipelines" ::: Vector Pipeline) |
vkCreateDataGraphPipelinesARM - Create data graph pipeline objects
Description
The implementation will create a pipeline in each element of
pPipelines from the corresponding element of pCreateInfos. If the
creation of any pipeline fails, that pipeline will be set to
NULL_HANDLE.
Valid Usage
- The dataGraph feature must be enabled
-
devicemust support at least one queue family with theQUEUE_DATA_GRAPH_BIT_ARMcapability -
deferredOperationmust beNULL_HANDLE - If
deferredOperationis notNULL_HANDLE, theflagsmember of elements ofpCreateInfosmust not includePIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT - If at least one of
the
DataGraphPipelineCreateInfoARMincludes aDataGraphPipelineIdentifierCreateInfoARMstructure in itspNextchain thenpipelineCachemust not beNULL_HANDLE - If
pipelineCachewas created withPIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT, host access topipelineCachemust be externally synchronized
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
- If
deferredOperationis notNULL_HANDLE,deferredOperationmust be a validDeferredOperationKHRhandle - If
pipelineCacheis notNULL_HANDLE,pipelineCachemust be a validPipelineCachehandle -
pCreateInfosmust be a valid pointer to an array ofcreateInfoCountvalidDataGraphPipelineCreateInfoARMstructures - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure -
pPipelinesmust be a valid pointer to an array ofcreateInfoCountPipelinehandles - The device
must have been created with at least
1queue -
createInfoCountmust be greater than0 - If
deferredOperationis a valid handle, it must have been created, allocated, or retrieved fromdevice - If
pipelineCacheis a valid handle, it must have been created, allocated, or retrieved fromdevice
Return Codes
See Also
VK_ARM_data_graph,
AllocationCallbacks,
DataGraphPipelineCreateInfoARM,
DeferredOperationKHR,
Device, Pipeline,
PipelineCache
createDataGraphPipelineSessionARM Source #
Arguments
| :: MonadIO io | |
| => Device |
|
| -> DataGraphPipelineSessionCreateInfoARM |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io DataGraphPipelineSessionARM |
vkCreateDataGraphPipelineSessionARM - Create a data graph pipeline session
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pCreateInfomust be a valid pointer to a validDataGraphPipelineSessionCreateInfoARMstructure - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure -
pSessionmust be a valid pointer to aDataGraphPipelineSessionARMhandle - The
device must have been created with at least
1queue
Return Codes
See Also
VK_ARM_data_graph,
AllocationCallbacks,
DataGraphPipelineSessionARM,
DataGraphPipelineSessionCreateInfoARM, Device
withDataGraphPipelineSessionARM :: MonadIO io => Device -> DataGraphPipelineSessionCreateInfoARM -> Maybe AllocationCallbacks -> (io DataGraphPipelineSessionARM -> (DataGraphPipelineSessionARM -> io ()) -> r) -> r Source #
A convenience wrapper to make a compatible pair of calls to
createDataGraphPipelineSessionARM and
destroyDataGraphPipelineSessionARM
To ensure that destroyDataGraphPipelineSessionARM is always called:
pass bracket (or the allocate function from your
favourite resource management library) as the last argument.
To just extract the pair pass (,) as the last argument.
getDataGraphPipelineSessionBindPointRequirementsARM Source #
Arguments
| :: MonadIO io | |
| => Device |
|
| -> DataGraphPipelineSessionBindPointRequirementsInfoARM |
|
| -> io (Result, "bindPointRequirements" ::: Vector DataGraphPipelineSessionBindPointRequirementARM) |
vkGetDataGraphPipelineSessionBindPointRequirementsARM - Get the bind point requirements of a data graph pipeline session
Description
If pBindPointRequirements is NULL, then the number of bind points
associated with the data graph pipeline session is returned in
pBindPointRequirementCount. Otherwise, pBindPointRequirementCount
must point to a variable set by the user to the number of elements in
the pBindPointRequirements array, and on return the variable is
overwritten with the number of structures actually written to
pBindPointRequirements. If pBindPointRequirementCount is less than
the number of bind points associated with the data graph pipeline
session, at most pBindPointRequirementCount structures will be
written, and INCOMPLETE will be returned
instead of SUCCESS, to indicate that not
all the required bind points were returned.
Valid Usage
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pInfomust be a valid pointer to a validDataGraphPipelineSessionBindPointRequirementsInfoARMstructure -
pBindPointRequirementCountmust be a valid pointer to auint32_tvalue -
If the value referenced by
pBindPointRequirementCountis not0, andpBindPointRequirementsis notNULL,pBindPointRequirementsmust be a valid pointer to an array ofpBindPointRequirementCountDataGraphPipelineSessionBindPointRequirementARMstructures
Return Codes
See Also
VK_ARM_data_graph,
DataGraphPipelineSessionBindPointRequirementARM,
DataGraphPipelineSessionBindPointRequirementsInfoARM,
Device
getDataGraphPipelineSessionMemoryRequirementsARM Source #
Arguments
| :: forall (a :: [Type]) io. (Extendss MemoryRequirements2 a, PokeChain a, PeekChain a, MonadIO io) | |
| => Device |
|
| -> DataGraphPipelineSessionMemoryRequirementsInfoARM |
|
| -> io (MemoryRequirements2 a) |
vkGetDataGraphPipelineSessionMemoryRequirementsARM - Get the memory requirements of a data graph pipeline session
Valid Usage
-
The
bindPointmember ofpInfomust have been returned as part of aDataGraphPipelineSessionBindPointRequirementARMwhosebindPointTypemember isDATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARMby a prior call togetDataGraphPipelineSessionBindPointRequirementsARMfor thesessionmember ofpInfo
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pInfomust be a valid pointer to a validDataGraphPipelineSessionMemoryRequirementsInfoARMstructure -
pMemoryRequirementsmust be a valid pointer to aMemoryRequirements2structure
See Also
VK_ARM_data_graph,
DataGraphPipelineSessionMemoryRequirementsInfoARM,
Device,
MemoryRequirements2
bindDataGraphPipelineSessionMemoryARM Source #
Arguments
| :: MonadIO io | |
| => Device |
|
| -> ("bindInfos" ::: Vector BindDataGraphPipelineSessionMemoryInfoARM) |
|
| -> io () |
vkBindDataGraphPipelineSessionMemoryARM - Bind device memory to a data graph pipeline session object
Return Codes
See Also
VK_ARM_data_graph,
BindDataGraphPipelineSessionMemoryInfoARM,
Device
destroyDataGraphPipelineSessionARM Source #
Arguments
| :: MonadIO io | |
| => Device |
|
| -> DataGraphPipelineSessionARM |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io () |
vkDestroyDataGraphPipelineSessionARM - Destroy a data graph pipeline session object
Valid Usage
- If
AllocationCallbackswere provided whensessionwas created, a compatible set of callbacks must be provided here - If no
AllocationCallbackswere provided whensessionwas created,pAllocatormust beNULL
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
sessionmust be a validDataGraphPipelineSessionARMhandle - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure -
sessionmust have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
sessionmust be externally synchronized
See Also
VK_ARM_data_graph,
AllocationCallbacks,
DataGraphPipelineSessionARM,
Device
cmdDispatchDataGraphARM Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> DataGraphPipelineSessionARM |
|
| -> ("info" ::: Maybe DataGraphPipelineDispatchInfoARM) |
|
| -> io () |
vkCmdDispatchDataGraphARM - Dispatch a data graph pipeline within a session
Valid Usage
- For each of the
session bind point requirements returned by
getDataGraphPipelineSessionBindPointRequirementsARMforsession,DataGraphPipelineSessionBindPointRequirementARM::numObjectsobjects must have been bound tosession
- The
Pipelinebound to the pipeline bind point used by this command must be identical to thedataGraphPipelineused to createsession - 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
PipelineLayoutthat is compatible for set n, with thePipelineLayoutused to create the currentPipeline, as described in https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptorsets-compatibility - Descriptors in each
bound descriptor set, specified via
cmdBindDescriptorSets, must be valid as described by descriptor validity if they are statically used by thePipelinebound to the pipeline bind point used by this command and the boundPipelinewas not created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - If the descriptors used
by the
Pipelinebound to the pipeline bind point were specified viacmdBindDescriptorSets, the boundPipelinemust have been created withoutPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - Descriptors in bound
descriptor buffers, specified via
cmdSetDescriptorBufferOffsetsEXT, must be valid if they are dynamically used by thePipelinebound to the pipeline bind point used by this command and the boundPipelinewas created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - If the descriptors used
by the
Pipelinebound to the pipeline bind point were specified viacmdSetDescriptorBufferOffsetsEXT, the boundPipelinemust have been created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - If a descriptor is
dynamically used with a
Pipelinecreated withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident - A valid data graph
pipeline must be bound to the
PIPELINE_BIND_POINT_DATA_GRAPH_ARMpipeline bind point used by this command - If a
DESCRIPTOR_TYPE_TENSOR_ARMdescriptor is accessed as a result of this command, then the underlyingTensorARMobject must have been created with aTensorCreateInfoARM::pDescriptionwhoseusagemember containedTENSOR_USAGE_DATA_GRAPH_BIT_ARM - If the
Pipelinebound to the pipeline bind point used by this command was created with aDataGraphProcessingEngineCreateInfoARMstructure in thepNextchain ofDataGraphPipelineCreateInfoARMthat included a foreign data graph processing engine in itspProcessingEnginesmember, then allDESCRIPTOR_TYPE_TENSOR_ARMdescriptors accessed as a result of this command must beTensorARMobjects that have been bound to memory allocated withExportMemoryAllocateInfo::handleTypeswith set bits that are a subset of the bits inQueueFamilyDataGraphProcessingEnginePropertiesARM::foreignMemoryHandleTypesstructure queried viagetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARMwith 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 theDataGraphProcessingEngineCreateInfoARMused to create thePipeline - If the
Pipelinebound to the pipeline bind point used by this command was created with aDataGraphProcessingEngineCreateInfoARMstructure in thepNextchain ofDataGraphPipelineCreateInfoARMthat included a foreign data graph processing engine in itspProcessingEnginesmember, then allsessionbound memory must have been allocated withExportMemoryAllocateInfo::handleTypeswith set bits that are a subset of the bits inQueueFamilyDataGraphProcessingEnginePropertiesARM::foreignMemoryHandleTypesstructure queried viagetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARMwith 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 theDataGraphProcessingEngineCreateInfoARMused to create thePipeline - If
commandBufferis an unprotected command buffer and protectedNoFault is not supported, any resource accessed by bound data graph pipelines must not be a protected resource - If
commandBufferis a protected command buffer and protectedNoFault is not supported, any resource written to by thePipelineobject bound to the bind point used by this command must not be an unprotected resource - 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
commandBufferwas allocated, as reported bygetPhysicalDeviceQueueFamilyDataGraphPropertiesARM
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
sessionmust be a validDataGraphPipelineSessionARMhandle - If
pInfois notNULL,pInfomust be a valid pointer to a validDataGraphPipelineDispatchInfoARMstructure -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_DATA_GRAPH_BIT_ARMoperations - This command must only be called outside of a render pass instance
- This command must not be called between suspended render pass instances
- This command must only be called outside of a video coding scope
- Both of
commandBuffer, andsessionmust have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas 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,
CommandBuffer,
DataGraphPipelineDispatchInfoARM,
DataGraphPipelineSessionARM
getDataGraphPipelineAvailablePropertiesARM Source #
Arguments
| :: MonadIO io | |
| => Device |
|
| -> DataGraphPipelineInfoARM |
|
| -> io (Result, "properties" ::: Vector DataGraphPipelinePropertyARM) |
vkGetDataGraphPipelineAvailablePropertiesARM - Query available properties of a data graph pipeline
Description
If pProperties is NULL, then the number of properties associated
with the data graph pipeline is returned in pPropertiesCount.
Otherwise, pPropertiesCount must point to a variable set by the user
to the number of elements in the pProperties array, and on return the
variable is overwritten with the number of enums actually written to
pProperties. If pPropertiesCount is less than the number of
properties associated with the data graph pipeline, at most
pPropertiesCount structures will be written, and
INCOMPLETE will be returned instead of
SUCCESS, to indicate that not all the
available properties were returned.
Valid Usage
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pPipelineInfomust be a valid pointer to a validDataGraphPipelineInfoARMstructure -
pPropertiesCountmust be a valid pointer to auint32_tvalue -
If the value referenced by
pPropertiesCountis not0, andpPropertiesis notNULL,pPropertiesmust be a valid pointer to an array ofpPropertiesCountDataGraphPipelinePropertyARMvalues
Return Codes
See Also
VK_ARM_data_graph,
DataGraphPipelineInfoARM, DataGraphPipelinePropertyARM,
Device
getDataGraphPipelinePropertiesARM Source #
Arguments
| :: MonadIO io | |
| => Device |
|
| -> DataGraphPipelineInfoARM |
|
| -> ("propertiesCount" ::: Word32) |
|
| -> io (Result, "properties" ::: Vector DataGraphPipelinePropertyQueryResultARM) |
vkGetDataGraphPipelinePropertiesARM - Query properties of a data graph pipeline
Valid Usage
- There
must not be two or more structures in the
pPropertiesarray with the sameDataGraphPipelinePropertyQueryResultARM::property
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pPipelineInfomust be a valid pointer to a validDataGraphPipelineInfoARMstructure -
pPropertiesmust be a valid pointer to an array ofpropertiesCountDataGraphPipelinePropertyQueryResultARMstructures -
propertiesCountmust be greater than0
Return Codes
See Also
VK_ARM_data_graph,
DataGraphPipelineInfoARM, DataGraphPipelinePropertyQueryResultARM,
Device
getPhysicalDeviceQueueFamilyDataGraphPropertiesARM Source #
Arguments
| :: MonadIO io | |
| => PhysicalDevice |
|
| -> ("queueFamilyIndex" ::: Word32) |
|
| -> io (Result, "queueFamilyDataGraphProperties" ::: Vector QueueFamilyDataGraphPropertiesARM) |
vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM - Query the data processing engines and the operations they support for a given queue family of a physical device
Description
If pQueueFamilyDataGraphProperties is NULL, then the number of
properties available is returned in
pQueueFamilyDataGraphPropertyCount. Otherwise,
pQueueFamilyDataGraphPropertyCount must point to a variable set by
the application to the number of elements in the
pQueueFamilyDataGraphProperties array, and on return the variable is
overwritten with the number of structures actually written to
pQueueFamilyDataGraphProperties. If
pQueueFamilyDataGraphPropertyCount is less than the number of
properties available, at most pQueueFamilyDataGraphPropertyCount
structures will be written, and INCOMPLETE
will be returned instead of SUCCESS, to
indicate that not all the available properties were returned.
If the
dataGraphModel
feature is supported, the implementation must return at least one
property with engine type
PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_NEURAL_QCOM or
PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_COMPUTE_QCOM.
Valid Usage (Implicit)
-
physicalDevicemust be a validPhysicalDevicehandle
-
pQueueFamilyDataGraphPropertyCountmust be a valid pointer to auint32_tvalue -
If the value referenced by
pQueueFamilyDataGraphPropertyCountis not0, andpQueueFamilyDataGraphPropertiesis notNULL,pQueueFamilyDataGraphPropertiesmust be a valid pointer to an array ofpQueueFamilyDataGraphPropertyCountQueueFamilyDataGraphPropertiesARMstructures
Return Codes
See Also
VK_ARM_data_graph,
PhysicalDevice,
QueueFamilyDataGraphPropertiesARM
getPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM Source #
Arguments
| :: MonadIO io | |
| => PhysicalDevice |
|
| -> PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM |
|
| -> io QueueFamilyDataGraphProcessingEnginePropertiesARM |
vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM - Query the properties of a data graph processing engine for a specific queue family of a physical device
Valid Usage (Implicit)
See Also
VK_ARM_data_graph,
PhysicalDevice,
PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM,
QueueFamilyDataGraphProcessingEnginePropertiesARM
data PhysicalDeviceDataGraphFeaturesARM Source #
VkPhysicalDeviceDataGraphFeaturesARM - Structure describing features to control data graph pipelines
Description
If the PhysicalDeviceDataGraphFeaturesARM structure is included in the
pNext chain of the
PhysicalDeviceFeatures2
structure passed to
getPhysicalDeviceFeatures2,
it is filled in to indicate whether each corresponding feature is
supported. If the application wishes to use a
Device with any features described by
PhysicalDeviceDataGraphFeaturesARM, it must add an instance of the
structure, with the desired feature members set to
TRUE, to the pNext chain of
DeviceCreateInfo when creating the
Device.
Valid Usage (Implicit)
See Also
Constructors
| PhysicalDeviceDataGraphFeaturesARM | |
Fields
| |
Instances
data DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM Source #
VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM - Structure specifying semi-structured sparsity parameters of a tensor data graph pipeline constant
Description
This extension does not provide applications with a way of knowing which
combinations of dimension, zeroCount, and groupSize an
implementation can take advantage of. Providing sparsity information
for a graph constant is always valid and recommended, regardless of the
specific combinations an implementation can take advantage of. When
they can not take advantage of the sparsity information,
implementations will ignore it and treat the data as dense.
Valid Usage (Implicit)
See Also
Instances
data DataGraphPipelineConstantARM (es :: [Type]) Source #
VkDataGraphPipelineConstantARM - Structure specifying parameters of a data graph pipeline constant
Description
The size and layout of the data pointed to by pConstantData is
specified by a specific structure in the pNext chain for each type of
graph constant.
For graph constants of tensor type, the layout of the data is specified
by a TensorDescriptionARM structure.
The data must be laid out according to the following members of this
structure:
TensorDescriptionARM::tilingTensorDescriptionARM::formatTensorDescriptionARM::dimensionCountTensorDescriptionARM::pDimensionsTensorDescriptionARM::pStrides
The presence of a
DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM structure
in the pNext chain has no impact on the expected layout of the data
pointed to by pConstantData.
Valid Usage
- If the
pNextchain of this structure includes one or moreDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARMstructures then it must also include aTensorDescriptionARMstructure
- If the
pNextchain of this structure includes one or moreDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARMstructures then, for each structure,DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM::dimensionmust be less thanTensorDescriptionARM::dimensionCount - If the
pNextchain of this structure includes aDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARMstructure then, for each structure,TensorDescriptionARM::pDimensions[DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM::dimension] must be a multiple ofDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM::groupSize - If the
pNextchain of this structure includes multipleDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARMstructures then no two structures may have theirDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM::dimensionmember set to the same value - If the
pNextchain of this structure includes aTensorDescriptionARMstructure, then itsusagemember must containTENSOR_USAGE_DATA_GRAPH_BIT_ARM - If the
pNextchain of this structure includes aTensorDescriptionARMstructure, then itstilingmember must beTENSOR_TILING_LINEAR_ARM
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM
- Each
pNextmember of any structure (including this one) in thepNextchain must be eitherNULLor a pointer to a valid instance ofDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARMorTensorDescriptionARM - The
sTypevalue of each structure in thepNextchain must be unique, with the exception of structures of typeDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM -
pConstantDatamust be a pointer value
See Also
VK_ARM_data_graph,
DataGraphPipelineShaderModuleCreateInfoARM,
StructureType
Constructors
| DataGraphPipelineConstantARM | |
Instances
data DataGraphPipelineResourceInfoARM (es :: [Type]) Source #
VkDataGraphPipelineResourceInfoARM - Structure specifying parameters of a data graph pipeline resource
Valid Usage
- If the
pNextchain of this structure includes aTensorDescriptionARMstructure, then itsusagemust containTENSOR_USAGE_DATA_GRAPH_BIT_ARM
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM
-
pNextmust beNULLor a pointer to a valid instance ofTensorDescriptionARM - The
sTypevalue of each structure in thepNextchain must be unique
See Also
VK_ARM_data_graph,
DataGraphPipelineCreateInfoARM,
StructureType
Constructors
| DataGraphPipelineResourceInfoARM | |
Fields
| |
Instances
data DataGraphPipelineCompilerControlCreateInfoARM Source #
VkDataGraphPipelineCompilerControlCreateInfoARM - Structure specifying compiler control parameters of a newly created data graph pipeline
Valid Usage (Implicit)
See Also
Constructors
| DataGraphPipelineCompilerControlCreateInfoARM | |
Fields | |
Instances
data DataGraphPipelineCreateInfoARM (es :: [Type]) Source #
VkDataGraphPipelineCreateInfoARM - Structure specifying parameters of a newly created data graph pipeline
Description
Applications can create a data graph pipeline entirely from data
present in a pipeline cache. This is done by including a
DataGraphPipelineIdentifierCreateInfoARM structure in the pNext
chain. If the required data is not found in the pipeline cache, creating
the data graph pipeline is not possible and the implementation must
fail as specified by
PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT.
Applications can create a data graph pipeline without providing a
pipeline cache or shader module by invoking one of the models provided
by the implementation. This is done by including
DataGraphPipelineBuiltinModelCreateInfoQCOM
in the pNext chain.
When an identifier or built-in model is used to create a data graph
pipeline, implementations may fail pipeline creation with
PIPELINE_COMPILE_REQUIRED for any reason.
The data graph engines for this pipeline can be selected by including
a DataGraphProcessingEngineCreateInfoARM to the pNext chain of this
structure. Otherwise,
PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM will be
used as the sole data graph engine.
The data graph operations that this pipeline uses must be supported
for the data graph engines selected for this pipeline as retrieved by
getPhysicalDeviceQueueFamilyDataGraphPropertiesARM.
Valid Usage
-
flagsmay only containPIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT,PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT,PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT,PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT,PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHRorPIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR -
layoutmust have been created withpushConstantRangeCountequal to 0 andpPushConstantRangesequal toNULL -
If the
dataGraphUpdateAfterBind
feature is not enabled,
layoutmust not use anyDescriptorSetLayoutobject created with theDESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BITbit set -
If the
dataGraphDescriptorBuffer
feature is not enabled,
flagsmust not containPIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT - If a
DataGraphPipelineShaderModuleCreateInfoARMstructure is included in thepNextchain and a resource variable is declared in the shader module, the corresponding descriptor binding used to createlayoutmust have adescriptorTypethat corresponds to the type of the resource variable - If a
DataGraphPipelineIdentifierCreateInfoARMor aDataGraphPipelineBuiltinModelCreateInfoQCOMstructure is included in thepNextchain, thenflagsmust containPIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT - If a
DataGraphPipelineIdentifierCreateInfoARMor aDataGraphPipelineBuiltinModelCreateInfoQCOMstructure is included in thepNextchain, thenresourceInfoCountmust be 0 - If
resourceInfoCountis equal to 0, thenpResourceInfosmust equalNULL - If neither a
DataGraphPipelineIdentifierCreateInfoARMnor aDataGraphPipelineBuiltinModelCreateInfoQCOMstructure are included in thepNextchain, thenresourceInfoCountmust be greater than 0 -
If the
dataGraphShaderModule
feature is not enabled, a
DataGraphPipelineShaderModuleCreateInfoARMstructure must not be included in thepNextchain - If a
DataGraphPipelineShaderModuleCreateInfoARMstructure is included in thepNextchain and an array resource variable is declared in the shader module, the corresponding descriptor binding used to createlayoutmust have adescriptorCountthat is greater than or equal to the length of the array -
If the
pipelineCreationCacheControl
feature is not enabled,
flagsmust not includePIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHRorPIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR - The
descriptor set layouts in
PipelineLayoutCreateInfo::pSetLayoutsused to createlayoutmust not include anyDescriptorSetLayoutBindingwhose descriptor type isDESCRIPTOR_TYPE_MUTABLE_EXT -
If the
pipelineProtectedAccess
feature is not enabled,
flagsmust not includePIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXTorPIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT -
flagsmust not include bothPIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXTandPIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT - If the
pNextchain includes anPipelineCreationFeedbackCreateInfostructure, then itspipelineStageCreationFeedbackCountmust be 0 - If a
DataGraphProcessingEngineCreateInfoARMstructure is included in thepNextchain, each member ofpProcessingEnginesmust be identical to anQueueFamilyDataGraphPropertiesARM::engineretrieved fromgetPhysicalDeviceQueueFamilyDataGraphPropertiesARMwith thephysicalDevicethat was used to createdevice - If a
DataGraphProcessingEngineCreateInfoARMstructure is not included in thepNextchain,PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARMmust be set in anQueueFamilyDataGraphPropertiesARM::engineretrieved fromgetPhysicalDeviceQueueFamilyDataGraphPropertiesARMwith thephysicalDevicethat was used to createdevice
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM
- Each
pNextmember of any structure (including this one) in thepNextchain must be eitherNULLor a pointer to a valid instance ofDataGraphPipelineBuiltinModelCreateInfoQCOM,DataGraphPipelineCompilerControlCreateInfoARM,DataGraphPipelineIdentifierCreateInfoARM,DataGraphPipelineShaderModuleCreateInfoARM,DataGraphProcessingEngineCreateInfoARM,PipelineCreationFeedbackCreateInfo, orShaderModuleCreateInfo - The
sTypevalue of each structure in thepNextchain must be unique -
flagsmust be a valid combination ofPipelineCreateFlagBits2KHRvalues -
layoutmust be a validPipelineLayouthandle - If
resourceInfoCountis not0,pResourceInfosmust be a valid pointer to an array ofresourceInfoCountvalidDataGraphPipelineResourceInfoARMstructures
See Also
VK_ARM_data_graph,
DataGraphPipelineResourceInfoARM,
PipelineCreateFlags2,
PipelineLayout,
StructureType,
createDataGraphPipelinesARM
Constructors
| DataGraphPipelineCreateInfoARM | |
Fields
| |
Instances
data DataGraphPipelineShaderModuleCreateInfoARM Source #
VkDataGraphPipelineShaderModuleCreateInfoARM - Structure specifying shader module parameters of a newly created data graph pipeline
Description
If module is not NULL_HANDLE, the
pipeline’s graph is defined by module. If module is
NULL_HANDLE, the pipeline’s graph is
defined by the chained ShaderModuleCreateInfo.
Valid Usage
-
If the
dataGraphSpecializationConstants
feature is not enabled then
pSpecializationInfomust beNULLandmodulemust not contain anyOpSpec*instructions
-
pNamemust be the name of anOpGraphEntryPointARMinmodule - If
the
pNextchain includes aShaderModuleCreateInfostructure, thenmodulemust beNULL_HANDLE - If
the
pNextchain does not include aShaderModuleCreateInfostructure, thenmodulemust be a validShaderModule
Valid Usage (Implicit)
-
If
moduleis notNULL_HANDLE,modulemust be a validShaderModulehandle -
pNamemust be a null-terminated UTF-8 string -
If
pSpecializationInfois notNULL,pSpecializationInfomust be a valid pointer to a validSpecializationInfostructure -
If
constantCountis not0, andpConstantsis notNULL,pConstantsmust be a valid pointer to an array ofconstantCountvalidDataGraphPipelineConstantARMstructures
See Also
VK_ARM_data_graph,
DataGraphPipelineConstantARM, ShaderModule,
SpecializationInfo,
StructureType
Constructors
| DataGraphPipelineShaderModuleCreateInfoARM | |
Fields
| |
Instances
data DataGraphPipelineSessionCreateInfoARM Source #
VkDataGraphPipelineSessionCreateInfoARM - Structure specifying parameters of a newly created data graph pipeline session
Valid Usage
-
dataGraphPipelinemust have been obtained via a call tocreateDataGraphPipelinesARM
-
If the
protectedMemory
feature is not enabled,
flagsmust not containDATA_GRAPH_PIPELINE_SESSION_CREATE_PROTECTED_BIT_ARM
Valid Usage (Implicit)
-
pNextmust beNULL -
flagsmust be a valid combination ofDataGraphPipelineSessionCreateFlagBitsARMvalues -
dataGraphPipelinemust be a validPipelinehandle
See Also
VK_ARM_data_graph,
DataGraphPipelineSessionCreateFlagsARM,
Pipeline,
StructureType,
createDataGraphPipelineSessionARM
Constructors
| DataGraphPipelineSessionCreateInfoARM | |
Fields
| |
Instances
data DataGraphPipelineSessionBindPointRequirementsInfoARM Source #
VkDataGraphPipelineSessionBindPointRequirementsInfoARM - Structure specifying info to query the bind point requirements of a data graph pipeline session
Valid Usage (Implicit)
See Also
VK_ARM_data_graph,
DataGraphPipelineSessionARM,
StructureType,
getDataGraphPipelineSessionBindPointRequirementsARM
Constructors
| DataGraphPipelineSessionBindPointRequirementsInfoARM | |
Fields
| |
Instances
data DataGraphPipelineSessionBindPointRequirementARM Source #
VkDataGraphPipelineSessionBindPointRequirementARM - Structure specifying the requirements of a bind point of a data graph pipeline session
Description
Implementations must always return 1 for numObjects if bindPoint
is one of the following bind points:
Valid Usage (Implicit)
See Also
VK_ARM_data_graph,
DataGraphPipelineSessionBindPointARM,
DataGraphPipelineSessionBindPointTypeARM,
StructureType,
getDataGraphPipelineSessionBindPointRequirementsARM
Constructors
| DataGraphPipelineSessionBindPointRequirementARM | |
Fields
| |
Instances
data DataGraphPipelineSessionMemoryRequirementsInfoARM Source #
VkDataGraphPipelineSessionMemoryRequirementsInfoARM - Structure specifying parameters to query the memory requirements of a data graph pipeline session
Valid Usage (Implicit)
See Also
VK_ARM_data_graph,
DataGraphPipelineSessionARM,
DataGraphPipelineSessionBindPointARM,
StructureType,
getDataGraphPipelineSessionMemoryRequirementsARM
Constructors
| DataGraphPipelineSessionMemoryRequirementsInfoARM | |
Fields
| |
Instances
data BindDataGraphPipelineSessionMemoryInfoARM Source #
VkBindDataGraphPipelineSessionMemoryInfoARM - Structure describing how to bind a data graph pipeline session to memory
Valid Usage
-
bindPointmust have been returned as part of aDataGraphPipelineSessionBindPointRequirementARMwhosebindPointTypemember isDATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARMby a prior call togetDataGraphPipelineSessionMemoryRequirementsARMforsession -
memoryOffsetmust be less than the size ofmemory -
memorymust have been allocated using one of the memory types allowed in thememoryTypeBitsmember of theMemoryRequirementsstructure returned from a call togetDataGraphPipelineSessionMemoryRequirementsARMwithsession -
memoryOffsetmust be an integer multiple of thealignmentmember of theMemoryRequirementsstructure returned from a call togetDataGraphPipelineSessionMemoryRequirementsARMwithsession - The
sizemember of theMemoryRequirementsstructure returned from a call togetDataGraphPipelineSessionMemoryRequirementsARMwithsessionmust be less than or equal to the size ofmemoryminusmemoryOffset - If
sessionwas created with theDATA_GRAPH_PIPELINE_SESSION_CREATE_PROTECTED_BIT_ARMbit set, the session must be bound to a memory object allocated with a memory type that reportsMEMORY_PROPERTY_PROTECTED_BIT - If
sessionwas created with theDATA_GRAPH_PIPELINE_SESSION_CREATE_PROTECTED_BIT_ARMbit not set, the session must not be bound to a memory object allocated with a memory type that reportsMEMORY_PROPERTY_PROTECTED_BIT -
objectIndexmust be less than the value ofnumObjectsreturned bygetDataGraphPipelineSessionBindPointRequirementsARMforbindPoint
Valid Usage (Implicit)
-
pNextmust beNULL -
sessionmust be a validDataGraphPipelineSessionARMhandle -
bindPointmust be a validDataGraphPipelineSessionBindPointARMvalue -
memorymust be a validDeviceMemoryhandle - Both
of
memory, andsessionmust have been created, allocated, or retrieved from the sameDevice
See Also
VK_ARM_data_graph,
DataGraphPipelineSessionARM,
DataGraphPipelineSessionBindPointARM,
DeviceMemory,
DeviceSize,
StructureType,
bindDataGraphPipelineSessionMemoryARM
Constructors
| BindDataGraphPipelineSessionMemoryInfoARM | |
Fields
| |
Instances
data DataGraphPipelineInfoARM Source #
VkDataGraphPipelineInfoARM - Structure describing a data graph pipeline
Valid Usage (Implicit)
See Also
VK_ARM_data_graph,
Pipeline,
StructureType,
getDataGraphPipelineAvailablePropertiesARM,
getDataGraphPipelinePropertiesARM
Constructors
| DataGraphPipelineInfoARM | |
Fields
| |
Instances
data DataGraphPipelinePropertyQueryResultARM Source #
VkDataGraphPipelinePropertyQueryResultARM - Structure describing a data graph pipeline property query or result
Description
If pData is NULL, then the size, in bytes, of the property data is
returned in dataSize. Otherwise, dataSize must be the size of the
buffer, in bytes, pointed to by pData and on return dataSize is
overwritten with the number of bytes of data actually written to pData
including any trailing NUL character. If dataSize is less than the
size, in bytes, of the property data, at most dataSize bytes of data
will be written to pData, and INCOMPLETE
will be returned by getDataGraphPipelinePropertiesARM instead of
SUCCESS, to indicate that not all the
available property data was returned. If isText is
TRUE and pData is not NULL and
dataSize is not zero, the last byte written to pData will be a NUL
character.
Valid Usage (Implicit)
-
pNextmust beNULL -
propertymust be a validDataGraphPipelinePropertyARMvalue - If
dataSizeis not0, andpDatais notNULL,pDatamust be a valid pointer to an array ofdataSizebytes
See Also
VK_ARM_data_graph,
Bool32, DataGraphPipelinePropertyARM,
StructureType,
getDataGraphPipelinePropertiesARM
Constructors
| DataGraphPipelinePropertyQueryResultARM | |
Fields
| |
Instances
data DataGraphPipelineIdentifierCreateInfoARM Source #
VkDataGraphPipelineIdentifierCreateInfoARM - Structure specifying an identifier for the newly created data graph pipeline
Description
The pIdentifier can be retrieved from the device by calling
getDataGraphPipelinePropertiesARM and searching the results for a
DataGraphPipelinePropertyQueryResultARM structure with property set
to DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARM.
Valid Usage (Implicit)
See Also
Constructors
| DataGraphPipelineIdentifierCreateInfoARM | |
Fields | |
Instances
data DataGraphPipelineDispatchInfoARM Source #
VkDataGraphPipelineDispatchInfoARM - Structure specifying parameters of a data graph pipeline dispatch
Valid Usage (Implicit)
See Also
VK_ARM_data_graph,
DataGraphPipelineDispatchFlagsARM,
StructureType,
cmdDispatchDataGraphARM
Constructors
| DataGraphPipelineDispatchInfoARM | |
Fields
| |
Instances
data PhysicalDeviceDataGraphProcessingEngineARM Source #
VkPhysicalDeviceDataGraphProcessingEngineARM - Structure describing a data graph processing engine supported by a physical device
See Also
VK_ARM_data_graph,
Bool32,
DataGraphProcessingEngineCreateInfoARM,
PhysicalDeviceDataGraphProcessingEngineTypeARM,
QueueFamilyDataGraphPropertiesARM
Constructors
| PhysicalDeviceDataGraphProcessingEngineARM | |
Fields
| |
Instances
data PhysicalDeviceDataGraphOperationSupportARM Source #
VkPhysicalDeviceDataGraphOperationSupportARM - Structure describing an operation or set of operations supported by a data graph processing engine
See Also
VK_ARM_data_graph,
DataGraphPipelineBuiltinModelCreateInfoQCOM,
PhysicalDeviceDataGraphOperationTypeARM,
QueueFamilyDataGraphPropertiesARM
Constructors
| PhysicalDeviceDataGraphOperationSupportARM | |
Fields
| |
Instances
data QueueFamilyDataGraphPropertiesARM Source #
VkQueueFamilyDataGraphPropertiesARM - Structure describing a data graph processing engine and operation it supports
Valid Usage (Implicit)
See Also
VK_ARM_data_graph,
PhysicalDeviceDataGraphOperationSupportARM,
PhysicalDeviceDataGraphProcessingEngineARM,
StructureType,
getPhysicalDeviceQueueFamilyDataGraphPropertiesARM
Constructors
| QueueFamilyDataGraphPropertiesARM | |
Fields
| |
Instances
data PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM Source #
VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM - Structure specifying a data graph processing engine type and queue family to query
Valid Usage (Implicit)
See Also
VK_ARM_data_graph,
PhysicalDeviceDataGraphProcessingEngineTypeARM,
StructureType,
getPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM
Constructors
| PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM | |
Fields
| |
Instances
data QueueFamilyDataGraphProcessingEnginePropertiesARM Source #
VkQueueFamilyDataGraphProcessingEnginePropertiesARM - Structure describing the properties of a data graph processing engine type for a given queue family
Valid Usage (Implicit)
See Also
VK_ARM_data_graph,
ExternalMemoryHandleTypeFlags,
ExternalSemaphoreHandleTypeFlags,
StructureType,
getPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM
Constructors
| QueueFamilyDataGraphProcessingEnginePropertiesARM | |
Fields
| |
Instances
data DataGraphProcessingEngineCreateInfoARM Source #
VkDataGraphProcessingEngineCreateInfoARM - Structure describing a collection of data graph processing engines for which the object being created is specialized
Valid Usage
- The dataGraph feature must be enabled
-
pProcessingEnginesmust not contain identicalPhysicalDeviceDataGraphProcessingEngineARMstructures -
For each element of
pProcessingEngines, itstypemember must be a validPhysicalDeviceDataGraphProcessingEngineTypeARMvalue -
If any element of
pProcessingEngineshas atypeofPHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_NEURAL_QCOMorPHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_COMPUTE_QCOMandisForeignset toTRUE,processingEngineCountmust equal1 -
If any element of
pProcessingEngineshas atypeofPHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_NEURAL_QCOMorPHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_COMPUTE_QCOM, the dataGraphModel feature must be enabled
Valid Usage (Implicit)
-
pProcessingEnginesmust be a valid pointer to an array ofprocessingEngineCountPhysicalDeviceDataGraphProcessingEngineARMstructures -
processingEngineCountmust be greater than0
See Also
VK_ARM_data_graph,
PhysicalDeviceDataGraphProcessingEngineARM,
StructureType
Constructors
| DataGraphProcessingEngineCreateInfoARM | |
Fields
| |
Instances
newtype DataGraphPipelineSessionCreateFlagBitsARM Source #
VkDataGraphPipelineSessionCreateFlagBitsARM - Bitmask specifying additional parameters of a data graph pipeline session
Description
DATA_GRAPH_PIPELINE_SESSION_CREATE_PROTECTED_BIT_ARMspecifies that the data graph pipeline session is backed by protected memory.
See Also
Constructors
| DataGraphPipelineSessionCreateFlagBitsARM Flags64 |
Bundled Patterns
| pattern DATA_GRAPH_PIPELINE_SESSION_CREATE_PROTECTED_BIT_ARM :: DataGraphPipelineSessionCreateFlagBitsARM |
Instances
newtype DataGraphPipelineSessionBindPointARM Source #
VkDataGraphPipelineSessionBindPointARM - Enumeration describing the bind points of a data graph pipeline session
Description
DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TRANSIENT_ARMcorresponds to the transient data produced and consumed during one dispatch of a data graph pipeline in a data graph pipeline session. This transient data is never reused by subsequent dispatches and can safely be clobbered once acmdDispatchDataGraphARMcommand completes execution.
See Also
VK_ARM_data_graph,
BindDataGraphPipelineSessionMemoryInfoARM,
DataGraphPipelineSessionBindPointRequirementARM,
DataGraphPipelineSessionMemoryRequirementsInfoARM
Constructors
| DataGraphPipelineSessionBindPointARM Int32 |
Bundled Patterns
| pattern DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TRANSIENT_ARM :: DataGraphPipelineSessionBindPointARM |
Instances
newtype DataGraphPipelineSessionBindPointTypeARM Source #
VkDataGraphPipelineSessionBindPointTypeARM - Enumeration describing the type of bind points of a data graph pipeline session
Description
DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARMcorresponds to a memory allocation.
See Also
VK_ARM_data_graph,
DataGraphPipelineSessionBindPointRequirementARM
Constructors
| DataGraphPipelineSessionBindPointTypeARM Int32 |
Bundled Patterns
| pattern DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM :: DataGraphPipelineSessionBindPointTypeARM |
Instances
newtype DataGraphPipelinePropertyARM Source #
VkDataGraphPipelinePropertyARM - Enumeration describing the properties of a data graph pipeline that can be queried
Description
DATA_GRAPH_PIPELINE_PROPERTY_CREATION_LOG_ARMcorresponds to a human-readable log produced during the creation of a data graph pipeline. It may contain information about errors encountered during the creation or other information generally useful for debugging. This property can be queried for any data graph pipeline.
DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARMcorresponds to an opaque identifier for the data graph pipeline. It can be used to create a graph pipeline from a pipeline cache without the need to provide any creation data beyond the identifier, using aDataGraphPipelineIdentifierCreateInfoARMstructure.
See Also
VK_ARM_data_graph,
DataGraphPipelinePropertyQueryResultARM,
getDataGraphPipelineAvailablePropertiesARM
Constructors
| DataGraphPipelinePropertyARM Int32 |
Bundled Patterns
| pattern DATA_GRAPH_PIPELINE_PROPERTY_CREATION_LOG_ARM :: DataGraphPipelinePropertyARM | |
| pattern DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARM :: DataGraphPipelinePropertyARM |
Instances
newtype DataGraphPipelineDispatchFlagBitsARM Source #
VkDataGraphPipelineDispatchFlagBitsARM - Bitmask specifying additional parameters of a data graph pipeline dispatch
See Also
Constructors
| DataGraphPipelineDispatchFlagBitsARM Flags64 |
Instances
newtype PhysicalDeviceDataGraphProcessingEngineTypeARM Source #
VkPhysicalDeviceDataGraphProcessingEngineTypeARM - Enumeration describing data graph processing engines
Description
PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARMcorresponds to the default data graph processing engine.
PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_NEURAL_QCOMspecifies an engine that specializes in neural processing.PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_COMPUTE_QCOMspecifies an engine that uses compute processing to execute data graphs.
See Also
VK_ARM_data_graph,
PhysicalDeviceDataGraphProcessingEngineARM,
PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM
Constructors
| PhysicalDeviceDataGraphProcessingEngineTypeARM Int32 |
Bundled Patterns
Instances
newtype PhysicalDeviceDataGraphOperationTypeARM Source #
VkPhysicalDeviceDataGraphOperationTypeARM - Enumeration describing data graph operations
Description
PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_SPIRV_EXTENDED_INSTRUCTION_SET_ARMcorresponds to operations provided by a SPIR-V extended instruction set.
PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_NEURAL_MODEL_QCOMspecifies an operation that executes neural models provided by the application.PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_BUILTIN_MODEL_QCOMspecifies an operation that executes specialized built-in models provided by the implementation.
See Also
VK_ARM_data_graph,
PhysicalDeviceDataGraphOperationSupportARM
Constructors
| PhysicalDeviceDataGraphOperationTypeARM Int32 |
Bundled Patterns
Instances
type ARM_DATA_GRAPH_SPEC_VERSION = 1 Source #
pattern ARM_DATA_GRAPH_SPEC_VERSION :: Integral a => a Source #
type ARM_DATA_GRAPH_EXTENSION_NAME = "VK_ARM_data_graph" Source #
pattern ARM_DATA_GRAPH_EXTENSION_NAME :: (Eq a, IsString a) => a Source #
newtype DeferredOperationKHR Source #
VkDeferredOperationKHR - A deferred operation
Description
This handle refers to a tracking structure which manages the execution state for a deferred command.
See Also
VK_DEFINE_NON_DISPATCHABLE_HANDLE,
VK_KHR_deferred_host_operations,
buildAccelerationStructuresKHR,
buildMicromapsEXT,
copyAccelerationStructureKHR,
copyAccelerationStructureToMemoryKHR,
copyMemoryToAccelerationStructureKHR,
copyMemoryToMicromapEXT,
copyMicromapEXT,
copyMicromapToMemoryEXT,
createDataGraphPipelinesARM,
createDeferredOperationKHR,
createRayTracingPipelinesKHR,
deferredOperationJoinKHR,
destroyDeferredOperationKHR,
getDeferredOperationMaxConcurrencyKHR,
getDeferredOperationResultKHR
Constructors
| DeferredOperationKHR Word64 |
Instances
newtype DataGraphPipelineSessionARM Source #
VkDataGraphPipelineSessionARM - Opaque handle to a data graph pipeline session object
See Also
VK_ARM_data_graph,
VK_DEFINE_NON_DISPATCHABLE_HANDLE,
BindDataGraphPipelineSessionMemoryInfoARM,
DataGraphPipelineSessionBindPointRequirementsInfoARM,
DataGraphPipelineSessionMemoryRequirementsInfoARM,
cmdDispatchDataGraphARM,
createDataGraphPipelineSessionARM,
destroyDataGraphPipelineSessionARM
Constructors
| DataGraphPipelineSessionARM Word64 |
Instances
newtype TensorUsageFlagBitsARM Source #
VkTensorUsageFlagBitsARM - Bitmask specifying allowed usage of a tensor
Description
TENSOR_USAGE_SHADER_BIT_ARMspecifies that the tensor can be used to create aTensorViewARMsuitable for occupying aDescriptorSetslot of typeDESCRIPTOR_TYPE_TENSOR_ARMaccessed by shader stages.
TENSOR_USAGE_TRANSFER_SRC_BIT_ARMspecifies that the tensor can be used as the source of a transfer command (see the definition of https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-transfer).TENSOR_USAGE_TRANSFER_DST_BIT_ARMspecifies that the tensor can be used as the destination of a transfer command.TENSOR_USAGE_IMAGE_ALIASING_BIT_ARMspecifies that the tensor can be bound to a range of memory aliased with an image created withIMAGE_TILING_OPTIMAL. See https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-memory-aliasing for a complete set of rules for tensor/image aliasing.TENSOR_USAGE_DATA_GRAPH_BIT_ARMspecifies that the tensor can be used to create aTensorViewARMsuitable for occupying aDescriptorSetslot of typeDESCRIPTOR_TYPE_TENSOR_ARMaccessed by data graph pipelines.
See Also
Constructors
| TensorUsageFlagBitsARM Flags64 |
Bundled Patterns
Instances
pattern MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM :: Integral a => a Source #
VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM - Length of a data graph operation name string