| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Vulkan.Extensions.VK_ARM_tensors
Description
Name
VK_ARM_tensors - device extension
VK_ARM_tensors
- Name String
VK_ARM_tensors
- Extension Type
- Device extension
- Registered Extension Number
- 461
- Revision
- 2
- Ratification Status
- Not ratified
- Extension and Version Dependencies
- Vulkan Version 1.3
- API Interactions
- Interacts with VK_EXT_descriptor_buffer
- Interacts with VK_EXT_frame_boundary
- Interacts with VK_EXT_shader_float8
- Interacts with VK_KHR_shader_bfloat16
- SPIR-V Dependencies
- Contact
- Extension Proposal
- VK_ARM_tensors
Other Extension Metadata
- Last Modified Date
- 2026-01-07
- Interactions and External Dependencies
- This extension requires SPV_ARM_tensors
- This extension provides API support for GL_ARM_tensors
- This extension interacts with
VK_EXT_mutable_descriptor_type - This extension interacts with
VK_EXT_descriptor_buffer - This extension interacts with
VK_EXT_frame_boundary - This extension interacts with
VK_EXT_robustness2 - This extension interacts with
VK_KHR_unified_image_layouts - This extension interacts with
VK_KHR_shader_bfloat16 - This extension interacts with
VK_EXT_shader_float8
- IP Status
- No known IP claims.
- Contributors
- Kévin Petit, Arm Ltd.
- Einar Hov, Arm Ltd.
- Dominic Symes, Arm Ltd.
- Jan-Harald Fredriksen, Arm Ltd.
- Marco Cattani, Arm Ltd.
- Lisa Wu, Arm Ltd.
- Robert Hughes, Arm Ltd.
- David Garbett, Arm Ltd.
- Oualid Khelifi, Arm Ltd.
Description
This extension adds support for tensors.
New Object Types
New Commands
cmdCopyTensorARMcreateTensorARMcreateTensorViewARMdestroyTensorARMdestroyTensorViewARMgetDeviceTensorMemoryRequirementsARMgetPhysicalDeviceExternalTensorPropertiesARMgetTensorMemoryRequirementsARM
If VK_EXT_descriptor_buffer is supported:
New Structures
CopyTensorInfoARMDeviceTensorMemoryRequirementsARMExternalTensorPropertiesARMPhysicalDeviceExternalTensorInfoARMTensorCopyARMTensorCreateInfoARMTensorMemoryRequirementsInfoARMTensorViewCreateInfoARMExtending
DataGraphPipelineResourceInfoARM,DataGraphPipelineConstantARM:Extending
DependencyInfo:Extending
FormatProperties2:Extending
MemoryAllocateInfo:Extending
PhysicalDeviceFeatures2,DeviceCreateInfo:Extending
PhysicalDeviceProperties2:Extending
TensorCreateInfoARM:Extending
WriteDescriptorSet:
If VK_EXT_descriptor_buffer is supported:
TensorCaptureDescriptorDataInfoARMTensorViewCaptureDescriptorDataInfoARMExtending
DescriptorGetInfoEXT:Extending
PhysicalDeviceFeatures2,DeviceCreateInfo:Extending
PhysicalDeviceProperties2:
If VK_EXT_frame_boundary is supported:
New Enums
New Bitmasks
New Enum Constants
ARM_TENSORS_SPEC_VERSIONExtending
DescriptorType:Extending
Format:Extending
FormatFeatureFlagBits2:Extending
ImageLayout:Extending
ImageUsageFlagBits:Extending
ObjectType:Extending
StructureType:STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARMSTRUCTURE_TYPE_COPY_TENSOR_INFO_ARMSTRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARMSTRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARMSTRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARMSTRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARMSTRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARMSTRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARMSTRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARMSTRUCTURE_TYPE_TENSOR_COPY_ARMSTRUCTURE_TYPE_TENSOR_CREATE_INFO_ARMSTRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARMSTRUCTURE_TYPE_TENSOR_DESCRIPTION_ARMSTRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARMSTRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARMSTRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARMSTRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARMSTRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM
If VK_EXT_descriptor_buffer is supported:
Extending
StructureType:Extending
TensorCreateFlagBitsARM:Extending
TensorViewCreateFlagBitsARM:
If VK_EXT_frame_boundary is supported:
If VK_EXT_shader_float8 is supported:
Extending
Format:
If VK_KHR_shader_bfloat16 is supported:
New SPIR-V Capabilities
Issues
1) Should tensor strides be passed in elements or in bytes?
RESOLVED: Strides are passed in bytes but are required to be a multiple of the tensor element size. Passing strides in bytes makes it possible to relax this requirement in the future without an interface change. It also makes it easier to describe memory alignment requirements.
2) Should there be commands to copy data between tensors and buffers/images?
RESOLVED: Adding these commands would result in a rather large API surface and not insignificant implementation and validation cost. The same outcome can be achieved with memory aliasing and tensor to tensor copy operations.
3) Should this extension define transpose and/or other data reorganization operations?
RESOLVED: These operations are useful to expose but this extension is only meant to add base support for tensors. Additional operations should be layered on top and defined in other extensions.
4) Why are tensor strides described using signed integers?
RESOLVED: Negative strides make it possible to describe different linear data layouts. While this extension does not allow negative strides, it uses signed integers for strides to make it possible to relax this limitation in future extensions.
Version History
Revision 2, 2026-01-07 (Kévin Petit)
- Add interactions with VK_KHR_unified_image_layouts, VK_KHR_shader_bfloat16, and VK_EXT_shader_float8
Revision 1, 2025-06-03 (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
- createTensorARM :: forall (a :: [Type]) io. (Extendss TensorCreateInfoARM a, PokeChain a, MonadIO io) => Device -> TensorCreateInfoARM a -> ("allocator" ::: Maybe AllocationCallbacks) -> io TensorARM
- withTensorARM :: forall (a :: [Type]) io r. (Extendss TensorCreateInfoARM a, PokeChain a, MonadIO io) => Device -> TensorCreateInfoARM a -> Maybe AllocationCallbacks -> (io TensorARM -> (TensorARM -> io ()) -> r) -> r
- destroyTensorARM :: MonadIO io => Device -> TensorARM -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
- createTensorViewARM :: forall (a :: [Type]) io. (Extendss TensorViewCreateInfoARM a, PokeChain a, MonadIO io) => Device -> TensorViewCreateInfoARM a -> ("allocator" ::: Maybe AllocationCallbacks) -> io TensorViewARM
- withTensorViewARM :: forall (a :: [Type]) io r. (Extendss TensorViewCreateInfoARM a, PokeChain a, MonadIO io) => Device -> TensorViewCreateInfoARM a -> Maybe AllocationCallbacks -> (io TensorViewARM -> (TensorViewARM -> io ()) -> r) -> r
- destroyTensorViewARM :: MonadIO io => Device -> TensorViewARM -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
- getTensorMemoryRequirementsARM :: forall (a :: [Type]) io. (Extendss MemoryRequirements2 a, PokeChain a, PeekChain a, MonadIO io) => Device -> TensorMemoryRequirementsInfoARM -> io (MemoryRequirements2 a)
- bindTensorMemoryARM :: MonadIO io => Device -> ("bindInfos" ::: Vector BindTensorMemoryInfoARM) -> io ()
- getDeviceTensorMemoryRequirementsARM :: forall (a :: [Type]) io. (Extendss MemoryRequirements2 a, PokeChain a, PeekChain a, MonadIO io) => Device -> ("info" ::: DeviceTensorMemoryRequirementsARM) -> io (MemoryRequirements2 a)
- cmdCopyTensorARM :: MonadIO io => CommandBuffer -> CopyTensorInfoARM -> io ()
- getTensorOpaqueCaptureDescriptorDataARM :: MonadIO io => Device -> TensorCaptureDescriptorDataInfoARM -> ("data" ::: Ptr ()) -> io ()
- getTensorViewOpaqueCaptureDescriptorDataARM :: MonadIO io => Device -> TensorViewCaptureDescriptorDataInfoARM -> ("data" ::: Ptr ()) -> io ()
- getPhysicalDeviceExternalTensorPropertiesARM :: MonadIO io => PhysicalDevice -> PhysicalDeviceExternalTensorInfoARM -> io ExternalTensorPropertiesARM
- data TensorDescriptionARM = TensorDescriptionARM {}
- data TensorCreateInfoARM (es :: [Type]) = TensorCreateInfoARM {}
- data TensorViewCreateInfoARM (es :: [Type]) = TensorViewCreateInfoARM {}
- data TensorMemoryRequirementsInfoARM = TensorMemoryRequirementsInfoARM {}
- data BindTensorMemoryInfoARM = BindTensorMemoryInfoARM {}
- data WriteDescriptorSetTensorARM = WriteDescriptorSetTensorARM {}
- data TensorFormatPropertiesARM = TensorFormatPropertiesARM {}
- data PhysicalDeviceTensorPropertiesARM = PhysicalDeviceTensorPropertiesARM {
- maxTensorDimensionCount :: Word32
- maxTensorElements :: Word64
- maxPerDimensionTensorElements :: Word64
- maxTensorStride :: Int64
- maxTensorSize :: Word64
- maxTensorShaderAccessArrayLength :: Word32
- maxTensorShaderAccessSize :: Word32
- maxDescriptorSetStorageTensors :: Word32
- maxPerStageDescriptorSetStorageTensors :: Word32
- maxDescriptorSetUpdateAfterBindStorageTensors :: Word32
- maxPerStageDescriptorUpdateAfterBindStorageTensors :: Word32
- shaderStorageTensorArrayNonUniformIndexingNative :: Bool
- shaderTensorSupportedStages :: ShaderStageFlags
- data TensorMemoryBarrierARM = TensorMemoryBarrierARM {}
- data TensorDependencyInfoARM = TensorDependencyInfoARM {}
- data PhysicalDeviceTensorFeaturesARM = PhysicalDeviceTensorFeaturesARM {}
- data DeviceTensorMemoryRequirementsARM = DeviceTensorMemoryRequirementsARM {}
- data CopyTensorInfoARM = CopyTensorInfoARM {}
- data TensorCopyARM = TensorCopyARM {}
- data MemoryDedicatedAllocateInfoTensorARM = MemoryDedicatedAllocateInfoTensorARM {}
- data PhysicalDeviceDescriptorBufferTensorPropertiesARM = PhysicalDeviceDescriptorBufferTensorPropertiesARM {}
- data PhysicalDeviceDescriptorBufferTensorFeaturesARM = PhysicalDeviceDescriptorBufferTensorFeaturesARM {}
- data TensorCaptureDescriptorDataInfoARM = TensorCaptureDescriptorDataInfoARM {}
- data TensorViewCaptureDescriptorDataInfoARM = TensorViewCaptureDescriptorDataInfoARM {}
- data DescriptorGetTensorInfoARM = DescriptorGetTensorInfoARM {}
- data FrameBoundaryTensorsARM = FrameBoundaryTensorsARM {}
- data PhysicalDeviceExternalTensorInfoARM = PhysicalDeviceExternalTensorInfoARM {}
- data ExternalTensorPropertiesARM = ExternalTensorPropertiesARM {}
- data ExternalMemoryTensorCreateInfoARM = ExternalMemoryTensorCreateInfoARM {}
- type TensorCreateFlagsARM = TensorCreateFlagBitsARM
- newtype TensorCreateFlagBitsARM where
- TensorCreateFlagBitsARM Flags64
- pattern TENSOR_CREATE_MUTABLE_FORMAT_BIT_ARM :: TensorCreateFlagBitsARM
- pattern TENSOR_CREATE_PROTECTED_BIT_ARM :: TensorCreateFlagBitsARM
- pattern TENSOR_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM :: TensorCreateFlagBitsARM
- pattern TENSOR_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_ARM :: TensorCreateFlagBitsARM
- type TensorUsageFlagsARM = TensorUsageFlagBitsARM
- newtype TensorUsageFlagBitsARM where
- TensorUsageFlagBitsARM Flags64
- pattern TENSOR_USAGE_SHADER_BIT_ARM :: TensorUsageFlagBitsARM
- pattern TENSOR_USAGE_TRANSFER_SRC_BIT_ARM :: TensorUsageFlagBitsARM
- pattern TENSOR_USAGE_TRANSFER_DST_BIT_ARM :: TensorUsageFlagBitsARM
- pattern TENSOR_USAGE_IMAGE_ALIASING_BIT_ARM :: TensorUsageFlagBitsARM
- pattern TENSOR_USAGE_DATA_GRAPH_BIT_ARM :: TensorUsageFlagBitsARM
- newtype TensorTilingARM where
- TensorTilingARM Int32
- pattern TENSOR_TILING_OPTIMAL_ARM :: TensorTilingARM
- pattern TENSOR_TILING_LINEAR_ARM :: TensorTilingARM
- type TensorViewCreateFlagsARM = TensorViewCreateFlagBitsARM
- newtype TensorViewCreateFlagBitsARM where
- type ARM_TENSORS_SPEC_VERSION = 2
- pattern ARM_TENSORS_SPEC_VERSION :: Integral a => a
- type ARM_TENSORS_EXTENSION_NAME = "VK_ARM_tensors"
- pattern ARM_TENSORS_EXTENSION_NAME :: (Eq a, IsString a) => a
- newtype TensorARM = TensorARM Word64
- newtype TensorViewARM = TensorViewARM Word64
Documentation
Arguments
| :: forall (a :: [Type]) io. (Extendss TensorCreateInfoARM a, PokeChain a, MonadIO io) | |
| => Device |
|
| -> TensorCreateInfoARM a |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io TensorARM |
vkCreateTensorARM - Create a new tensor object
Valid Usage
- The tensors feature must be enabled
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pCreateInfomust be a valid pointer to a validTensorCreateInfoARMstructure - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure -
pTensormust be a valid pointer to aTensorARMhandle - The device must have
been created with at least
1queue
Return Codes
See Also
VK_ARM_tensors,
AllocationCallbacks,
Device, TensorARM,
TensorCreateInfoARM
withTensorARM :: forall (a :: [Type]) io r. (Extendss TensorCreateInfoARM a, PokeChain a, MonadIO io) => Device -> TensorCreateInfoARM a -> Maybe AllocationCallbacks -> (io TensorARM -> (TensorARM -> io ()) -> r) -> r Source #
A convenience wrapper to make a compatible pair of calls to
createTensorARM and destroyTensorARM
To ensure that destroyTensorARM 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.
Arguments
| :: MonadIO io | |
| => Device |
|
| -> TensorARM |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io () |
vkDestroyTensorARM - Destroy a tensor object
Valid Usage
- All submitted commands that
refer to
tensor, either directly or via aTensorViewARM, must have completed execution
- If
AllocationCallbackswere provided whentensorwas created, a compatible set of callbacks must be provided here - If no
AllocationCallbackswere provided whentensorwas created,pAllocatormust beNULL
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
- If
tensoris notNULL_HANDLE,tensormust be a validTensorARMhandle - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure - If
tensoris a valid handle, it must have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
tensormust be externally synchronized
See Also
Arguments
| :: forall (a :: [Type]) io. (Extendss TensorViewCreateInfoARM a, PokeChain a, MonadIO io) | |
| => Device |
|
| -> TensorViewCreateInfoARM a |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io TensorViewARM |
vkCreateTensorViewARM - Create an tensor view from an existing tensor
Description
Some of the tensor creation parameters are inherited by the view. In particular, other than format, the tensor view creation inherits all other parameters from the tensor.
The remaining parameters are contained in pCreateInfo.
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pCreateInfomust be a valid pointer to a validTensorViewCreateInfoARMstructure - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure -
pViewmust be a valid pointer to aTensorViewARMhandle - The device must
have been created with at least
1queue
Return Codes
See Also
VK_ARM_tensors,
AllocationCallbacks,
Device,
TensorViewARM, TensorViewCreateInfoARM
withTensorViewARM :: forall (a :: [Type]) io r. (Extendss TensorViewCreateInfoARM a, PokeChain a, MonadIO io) => Device -> TensorViewCreateInfoARM a -> Maybe AllocationCallbacks -> (io TensorViewARM -> (TensorViewARM -> io ()) -> r) -> r Source #
A convenience wrapper to make a compatible pair of calls to
createTensorViewARM and destroyTensorViewARM
To ensure that destroyTensorViewARM 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.
Arguments
| :: MonadIO io | |
| => Device |
|
| -> TensorViewARM |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io () |
vkDestroyTensorViewARM - Destroy a tensor view object
Valid Usage
- If
AllocationCallbackswere provided whentensorViewwas created, a compatible set of callbacks must be provided here - If no
AllocationCallbackswere provided whentensorViewwas created,pAllocatormust beNULL
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
- If
tensorViewis notNULL_HANDLE,tensorViewmust be a validTensorViewARMhandle - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure - If
tensorViewis a valid handle, it must have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
tensorViewmust be externally synchronized
See Also
getTensorMemoryRequirementsARM Source #
Arguments
| :: forall (a :: [Type]) io. (Extendss MemoryRequirements2 a, PokeChain a, PeekChain a, MonadIO io) | |
| => Device |
|
| -> TensorMemoryRequirementsInfoARM |
|
| -> io (MemoryRequirements2 a) |
vkGetTensorMemoryRequirementsARM - Returns the memory requirements for specified Vulkan object
Valid Usage (Implicit)
See Also
VK_ARM_tensors,
Device,
MemoryRequirements2,
TensorMemoryRequirementsInfoARM
Arguments
| :: MonadIO io | |
| => Device |
|
| -> ("bindInfos" ::: Vector BindTensorMemoryInfoARM) |
|
| -> io () |
vkBindTensorMemoryARM - Bind device memory to tensor objects
Description
On some implementations, it may be more efficient to batch memory bindings into a single command.
Return Codes
See Also
getDeviceTensorMemoryRequirementsARM Source #
Arguments
| :: forall (a :: [Type]) io. (Extendss MemoryRequirements2 a, PokeChain a, PeekChain a, MonadIO io) | |
| => Device |
|
| -> ("info" ::: DeviceTensorMemoryRequirementsARM) |
|
| -> io (MemoryRequirements2 a) |
vkGetDeviceTensorMemoryRequirementsARM - Returns the memory requirements for specified tensor creation infos
Valid Usage
- The tensors feature must be enabled
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pInfomust be a valid pointer to a validDeviceTensorMemoryRequirementsARMstructure -
pMemoryRequirementsmust be a valid pointer to aMemoryRequirements2structure
See Also
VK_ARM_tensors,
Device, DeviceTensorMemoryRequirementsARM,
MemoryRequirements2
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> CopyTensorInfoARM |
|
| -> io () |
vkCmdCopyTensorARM - Copy data between tensors
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
pCopyTensorInfomust be a valid pointer to a validCopyTensorInfoARMstructure -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_COMPUTE_BIT,QUEUE_GRAPHICS_BIT, orQUEUE_TRANSFER_BIToperations - 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
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_COMPUTE_BIT VK_QUEUE_GRAPHICS_BIT VK_QUEUE_TRANSFER_BIT | Action |
Conditional Rendering
vkCmdCopyTensorARM is not affected by conditional rendering
See Also
getTensorOpaqueCaptureDescriptorDataARM Source #
Arguments
| :: MonadIO io | |
| => Device |
|
| -> TensorCaptureDescriptorDataInfoARM |
|
| -> ("data" ::: Ptr ()) |
|
| -> io () |
vkGetTensorOpaqueCaptureDescriptorDataARM - Get tensor opaque capture descriptor data
Valid Usage
- The descriptorBufferCaptureReplay and descriptorBufferTensorDescriptors features must be enabled
-
pDatamust point to a buffer that is at leastPhysicalDeviceDescriptorBufferTensorPropertiesARM::tensorCaptureReplayDescriptorDataSizebytes in size - If
devicewas created with multiple physical devices, then the bufferDeviceAddressMultiDevice feature must be enabled
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pInfomust be a valid pointer to a validTensorCaptureDescriptorDataInfoARMstructure -
pDatamust be a pointer value
Return Codes
See Also
VK_ARM_tensors,
VK_EXT_descriptor_buffer,
Device, TensorCaptureDescriptorDataInfoARM
getTensorViewOpaqueCaptureDescriptorDataARM Source #
Arguments
| :: MonadIO io | |
| => Device |
|
| -> TensorViewCaptureDescriptorDataInfoARM |
|
| -> ("data" ::: Ptr ()) |
|
| -> io () |
vkGetTensorViewOpaqueCaptureDescriptorDataARM - Get tensor view opaque capture descriptor data
Valid Usage
- The descriptorBufferCaptureReplay and descriptorBufferTensorDescriptors features must be enabled
-
pDatamust point to a buffer that is at leastPhysicalDeviceDescriptorBufferTensorPropertiesARM::tensorViewCaptureReplayDescriptorDataSizebytes in size - If
devicewas created with multiple physical devices, then the bufferDeviceAddressMultiDevice feature must be enabled
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pInfomust be a valid pointer to a validTensorViewCaptureDescriptorDataInfoARMstructure -
pDatamust be a pointer value
Return Codes
See Also
VK_ARM_tensors,
VK_EXT_descriptor_buffer,
Device, TensorViewCaptureDescriptorDataInfoARM
getPhysicalDeviceExternalTensorPropertiesARM Source #
Arguments
| :: MonadIO io | |
| => PhysicalDevice |
|
| -> PhysicalDeviceExternalTensorInfoARM |
|
| -> io ExternalTensorPropertiesARM |
vkGetPhysicalDeviceExternalTensorPropertiesARM - Function for querying external tensor handle capabilities.
Valid Usage (Implicit)
See Also
VK_ARM_tensors,
ExternalTensorPropertiesARM, PhysicalDevice,
PhysicalDeviceExternalTensorInfoARM
data TensorDescriptionARM Source #
VkTensorDescriptionARM - Structure describing a tensor
Description
When describing a tensor created with TENSOR_TILING_OPTIMAL_ARM,
pStrides must be equal to NULL. When describing a tensor created
with TENSOR_TILING_LINEAR_ARM, pStrides is either an array of size
dimensionCount or NULL.
The formats that must be supported for format are documented in
https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-formats-mandatory-features-tensor.
Each element in the pStrides array describes the offset in bytes
between increments of the given dimension. For example, pStrides[0]
describes the offset between element [x0,x1,x2,x3] and element
[x0+1,x1,x2,x3]. The pStrides array can be used to determine whether
a tensor is packed or not. If pStrides[dimensionCount-1] is equal
to the size of a tensor element and for each dimension n greater than
0 and less than dimensionCount, pStrides[n-1] is equal to
pStrides[n] * pDimensions[n], then the tensor is a packed tensor. If
the
tensorNonPacked
feature is not enabled, the tensor must be a packed tensor.
When a tensor is created with TENSOR_TILING_LINEAR_ARM and pStrides
equal to NULL the tensor strides are calculated by the vulkan
implementation such that the resulting tensor is a packed tensor.
Expressed as an addressing formula, the starting byte of an element in a 4-dimensional, for example, linear tensor has address:
// Assume (x0,x1,x2,x3) are in units of elements. address(x0,x1,x2,x3) = x0*pStrides[0] + x1*pStrides[1] + x2*pStrides[2] + x3*pStrides[3]
Valid Usage
-
dimensionCountmust be less than or equal toPhysicalDeviceTensorPropertiesARM::maxTensorDimensionCount
- For each i where i ≤
dimensionCount-1,
pDimensions[i] must be greater than0 - For each i where i ≤
dimensionCount-1,
pDimensions[i] must be less than or equal to ::maxPerDimensionTensorElements -
formatmust not beFORMAT_UNDEFINEDand must be a one-componentFormat -
pStrides[dimensionCount-1] must equal the size in bytes of a tensor element - For each i,
pStrides[i] must be a multiple of the element size - For each i,
pStrides[i] must be greater than0and less than or equal toPhysicalDeviceTensorPropertiesARM::maxTensorStride -
pStrides[0] ×pDimensions[0] must be less than or equal to ::maxTensorSize - For each i greater than
0,
pStrides[i-1] must be greater than or equal topStrides[i] ×pDimensions[i] so that no two elements of the tensor reference the same memory address - If the
tensorNonPacked
feature is not enabled, then the members of
TensorDescriptionARMmust describe a packed tensor - If
tilingisTENSOR_TILING_OPTIMAL_ARMandusageisTENSOR_USAGE_IMAGE_ALIASING_BIT_ARMthen the size of the tensor along its innermost dimension, i.e.pDimensions[dimensionCount- 1], must be less than or equal to4 - If
tilingisTENSOR_TILING_LINEAR_ARMthenTENSOR_USAGE_IMAGE_ALIASING_BIT_ARMmust not be set inusage
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM
-
tilingmust be a validTensorTilingARMvalue -
formatmust be a validFormatvalue -
pDimensionsmust be a valid pointer to an array ofdimensionCountint64_tvalues - If
pStridesis notNULL,pStridesmust be a valid pointer to an array ofdimensionCountint64_tvalues -
usagemust be a valid combination ofTensorUsageFlagBitsARMvalues -
usagemust not be0 -
dimensionCountmust be greater than0
See Also
VK_ARM_tensors,
Format,
PhysicalDeviceExternalTensorInfoARM,
StructureType,
TensorCreateInfoARM, TensorTilingARM, TensorUsageFlagsARM
Constructors
| TensorDescriptionARM | |
Fields
| |
Instances
| Show TensorDescriptionARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods showsPrec :: Int -> TensorDescriptionARM -> ShowS # show :: TensorDescriptionARM -> String # showList :: [TensorDescriptionARM] -> ShowS # | |
| FromCStruct TensorDescriptionARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods peekCStruct :: Ptr TensorDescriptionARM -> IO TensorDescriptionARM Source # | |
| ToCStruct TensorDescriptionARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods withCStruct :: TensorDescriptionARM -> (Ptr TensorDescriptionARM -> IO b) -> IO b Source # pokeCStruct :: Ptr TensorDescriptionARM -> TensorDescriptionARM -> IO b -> IO b Source # withZeroCStruct :: (Ptr TensorDescriptionARM -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr TensorDescriptionARM -> IO b -> IO b Source # cStructSize :: Int Source # | |
| Zero TensorDescriptionARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods | |
data TensorCreateInfoARM (es :: [Type]) Source #
Constructors
| TensorCreateInfoARM | |
Fields | |
Instances
data TensorViewCreateInfoARM (es :: [Type]) Source #
VkTensorViewCreateInfoARM - Structure specifying parameters of a newly created tensor view
Description
If tensor was created with the TENSOR_CREATE_MUTABLE_FORMAT_BIT_ARM
flag, format can be different from the tensor’s format, but if they
are not equal they must be compatible. Tensor format compatibility
is defined in the
Format Compatibility Classes
section. Views of compatible formats will have the same mapping between
element locations irrespective of the format, with only the
interpretation of the bit pattern changing.
Values intended to be used with one view format may not be exactly preserved when written or read through a different format. For example, an integer value that happens to have the bit pattern of a floating-point denorm or NaN may be flushed or canonicalized when written or read through a view with a floating-point format. Similarly, a value written through a signed normalized format that has a bit pattern exactly equal to -2b may be changed to -2b + 1 as described in Conversion from Normalized Fixed-Point to Floating-Point.
Valid Usage
- If
tensorwas not created withTENSOR_CREATE_MUTABLE_FORMAT_BIT_ARMflag,formatmust be identical to theformatused to createtensor
- If
tensorwas created withTENSOR_CREATE_MUTABLE_FORMAT_BIT_ARMflag,formatmust be compatible with theformatused to createtensor, as defined in Format Compatibility Classes - If
flagsincludesTENSOR_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM, the descriptorBufferCaptureReplay feature must be enabled - If the
pNextchain includes aOpaqueCaptureDescriptorDataCreateInfoEXTstructure,flagsmust containTENSOR_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM The
usageflags oftensormust have at least one of the following bits set:- The tensor view’s
format features
must contain the format feature flags required by the
usageflags oftensorforformatas indicated in the https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#format-feature-dependent-usage-flags section - If
tensoris non-sparse then it must be bound completely and contiguously to a singleDeviceMemoryobject
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM
-
pNextmust beNULLor a pointer to a valid instance ofOpaqueCaptureDescriptorDataCreateInfoEXT - The
sTypevalue of each structure in thepNextchain must be unique -
flagsmust be a valid combination ofTensorViewCreateFlagBitsARMvalues -
tensormust be a validTensorARMhandle -
formatmust be a validFormatvalue
See Also
VK_ARM_tensors,
VK_EXT_descriptor_heap,
Format,
ResourceDescriptorDataEXT,
StructureType,
TensorARM, TensorViewCreateFlagsARM,
createTensorViewARM
Constructors
| TensorViewCreateInfoARM | |
Fields
| |
Instances
data TensorMemoryRequirementsInfoARM Source #
VkTensorMemoryRequirementsInfoARM - Structure specifying memory requirements
Valid Usage (Implicit)
See Also
VK_ARM_tensors,
StructureType,
TensorARM, getTensorMemoryRequirementsARM
Constructors
| TensorMemoryRequirementsInfoARM | |
Instances
data BindTensorMemoryInfoARM Source #
VkBindTensorMemoryInfoARM - Structure specifying how to bind a tensor to memory
Valid Usage
-
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 togetTensorMemoryRequirementsARMwithtensor -
memoryOffsetmust be an integer multiple of thealignmentmember of theMemoryRequirementsstructure returned from a call togetTensorMemoryRequirementsARMwithtensor - The
sizemember of theMemoryRequirementsstructure returned from a call togetTensorMemoryRequirementsARMwithtensormust be less than or equal to the size ofmemoryminusmemoryOffset - If
tensorrequires a dedicated allocation (as reported bygetTensorMemoryRequirementsARMinMemoryDedicatedRequirements::requiresDedicatedAllocationfortensor),memorymust have been created withMemoryDedicatedAllocateInfoTensorARM::tensorequal totensor - If the
MemoryAllocateInfoprovided whenmemorywas allocated included aMemoryDedicatedAllocateInfoTensorARMstructure in itspNextchain, andMemoryDedicatedAllocateInfoTensorARM::tensorwas notNULL_HANDLE, thentensormust equalMemoryDedicatedAllocateInfoTensorARM::tensor, andmemoryOffsetmust be zero - If the value of
ExportMemoryAllocateInfo::handleTypesused to allocatememoryis not0, it must include at least one of the handles set inExternalMemoryTensorCreateInfoARM::handleTypeswhentensorwas created - If
memorywas allocated by a memory import operation, that is notImportAndroidHardwareBufferInfoANDROIDwith a non-NULLbuffervalue, the external handle type of the imported memory must also have been set inExternalMemoryTensorCreateInfoARM::handleTypeswhentensorwas created - If
memorywas allocated with theImportAndroidHardwareBufferInfoANDROIDmemory import operation with a non-NULLbuffervalue,EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROIDmust also have been set inExternalMemoryTensorCreateInfoARM::handleTypeswhentensorwas created - If
tensorwas created with theTENSOR_CREATE_PROTECTED_BIT_ARMbit set, the tensor must be bound to a memory object allocated with a memory type that reportsMEMORY_PROPERTY_PROTECTED_BIT - If
tensorwas created with theTENSOR_CREATE_PROTECTED_BIT_ARMbit not set, the tensor must not be bound to a memory object allocated with a memory type that reportsMEMORY_PROPERTY_PROTECTED_BIT - If
tensorwas created with theTENSOR_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARMbit set,memorymust have been allocated with theMEMORY_ALLOCATE_DEVICE_ADDRESS_BITbit set - If
tensorwas created with theTENSOR_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARMbit set,memorymust have been allocated with theMEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BITbit set - If
tensorwas created with theTENSOR_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_ARMbit set,memorymust have been allocated with theMEMORY_ALLOCATE_DEVICE_ADDRESS_BITbit set - If
tensorwas created with theTENSOR_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_ARMbit set,memorymust have been allocated with theMEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BITbit set
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM
-
pNextmust beNULL -
tensormust be a validTensorARMhandle -
memorymust be a validDeviceMemoryhandle - Both of
memory, andtensormust have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
tensormust be externally synchronized
See Also
VK_ARM_tensors,
DeviceMemory,
DeviceSize,
StructureType,
TensorARM, bindTensorMemoryARM
Constructors
| BindTensorMemoryInfoARM | |
Fields
| |
Instances
data WriteDescriptorSetTensorARM Source #
VkWriteDescriptorSetTensorARM - Structure specifying descriptor tensor info
Valid Usage
- If the
nullDescriptor
feature is not enabled, each element of
pTensorViewsmust not beNULL_HANDLE
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM
-
pTensorViewsmust be a valid pointer to an array oftensorViewCountvalid orNULL_HANDLETensorViewARMhandles -
tensorViewCountmust be greater than0
See Also
Constructors
| WriteDescriptorSetTensorARM | |
Fields
| |
Instances
| Show WriteDescriptorSetTensorARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods showsPrec :: Int -> WriteDescriptorSetTensorARM -> ShowS # show :: WriteDescriptorSetTensorARM -> String # showList :: [WriteDescriptorSetTensorARM] -> ShowS # | |
| FromCStruct WriteDescriptorSetTensorARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors | |
| ToCStruct WriteDescriptorSetTensorARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods withCStruct :: WriteDescriptorSetTensorARM -> (Ptr WriteDescriptorSetTensorARM -> IO b) -> IO b Source # pokeCStruct :: Ptr WriteDescriptorSetTensorARM -> WriteDescriptorSetTensorARM -> IO b -> IO b Source # withZeroCStruct :: (Ptr WriteDescriptorSetTensorARM -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr WriteDescriptorSetTensorARM -> IO b -> IO b Source # cStructSize :: Int Source # | |
| Zero WriteDescriptorSetTensorARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods | |
data TensorFormatPropertiesARM Source #
VkTensorFormatPropertiesARM - Structure specifying properties of a format used to describe tensor elements
Valid Usage (Implicit)
See Also
Constructors
| TensorFormatPropertiesARM | |
Fields
| |
Instances
data PhysicalDeviceTensorPropertiesARM Source #
VkPhysicalDeviceTensorPropertiesARM - Structure describing the tensor properties of a physical device
Description
If the PhysicalDeviceTensorPropertiesARM structure is included in the
pNext chain of the
PhysicalDeviceProperties2
structure passed to
getPhysicalDeviceProperties2,
it is filled in with each corresponding implementation-dependent
property.
Valid Usage (Implicit)
See Also
Constructors
| PhysicalDeviceTensorPropertiesARM | |
Fields
| |
Instances
data TensorMemoryBarrierARM Source #
VkTensorMemoryBarrierARM - Structure specifying a tensor memory barrier
Description
The first
synchronization scope
and
access scope
described by this structure include only operations and memory accesses
specified by srcStageMask and srcAccessMask.
The second
synchronization scope
and
access scope
described by this structure include only operations and memory accesses
specified by dstStageMask and dstAccessMask.
Both
access scopes
are limited to only memory accesses to tensor.
If tensor was created with
SHARING_MODE_EXCLUSIVE, and
srcQueueFamilyIndex is not equal to dstQueueFamilyIndex, this memory
barrier defines a
queue family transfer operation.
When executed on a queue in the family identified by
srcQueueFamilyIndex, this barrier defines a
queue family release operation
for the specified tensor, and the second synchronization and access
scopes do not synchronize operations on that queue. When executed on a
queue in the family identified by dstQueueFamilyIndex, this barrier
defines a
queue family acquire operation
for the specified tensor, and the first synchronization and access
scopes do not synchronize operations on that queue.
A
queue family transfer operation
is also defined if the values are not equal, and either is one of the
special queue family values reserved for external memory ownership
transfers, as described in
https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers.
A
queue family release operation
is defined when dstQueueFamilyIndex is one of those values, and a
queue family acquire operation
is defined when srcQueueFamilyIndex is one of those values.
Valid Usage
- If
tensorwas created with a sharing mode ofSHARING_MODE_CONCURRENT,srcQueueFamilyIndexanddstQueueFamilyIndexmust both beQUEUE_FAMILY_IGNORED
- If
tensorwas created with a sharing mode ofSHARING_MODE_EXCLUSIVE,srcQueueFamilyIndexanddstQueueFamilyIndexmust both be eitherQUEUE_FAMILY_IGNORED, or a valid queue family (see https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#devsandqueues-queueprops) - If
tensorwas created with a sharing mode ofSHARING_MODE_EXCLUSIVE, andsrcQueueFamilyIndexanddstQueueFamilyIndexare notQUEUE_FAMILY_IGNORED, at least one of them must be the same as the family of the queue that will execute this barrier - If
tensoris non-sparse then it must be bound completely and contiguously to a singleDeviceMemoryobject
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM
-
srcStageMaskmust be a valid combination ofPipelineStageFlagBits2values -
srcAccessMaskmust be a valid combination ofAccessFlagBits2values -
dstStageMaskmust be a valid combination ofPipelineStageFlagBits2values -
dstAccessMaskmust be a valid combination ofAccessFlagBits2values -
tensormust be a validTensorARMhandle
See Also
VK_ARM_tensors,
AccessFlags2,
PipelineStageFlags2,
StructureType,
TensorARM, TensorDependencyInfoARM
Constructors
| TensorMemoryBarrierARM | |
Fields
| |
Instances
data TensorDependencyInfoARM Source #
VkTensorDependencyInfoARM - Structure specifying tensor dependency information for a synchronization command
Valid Usage (Implicit)
See Also
Constructors
| TensorDependencyInfoARM | |
Fields
| |
Instances
| Show TensorDependencyInfoARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods showsPrec :: Int -> TensorDependencyInfoARM -> ShowS # show :: TensorDependencyInfoARM -> String # showList :: [TensorDependencyInfoARM] -> ShowS # | |
| FromCStruct TensorDependencyInfoARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods peekCStruct :: Ptr TensorDependencyInfoARM -> IO TensorDependencyInfoARM Source # | |
| ToCStruct TensorDependencyInfoARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods withCStruct :: TensorDependencyInfoARM -> (Ptr TensorDependencyInfoARM -> IO b) -> IO b Source # pokeCStruct :: Ptr TensorDependencyInfoARM -> TensorDependencyInfoARM -> IO b -> IO b Source # withZeroCStruct :: (Ptr TensorDependencyInfoARM -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr TensorDependencyInfoARM -> IO b -> IO b Source # cStructSize :: Int Source # | |
| Zero TensorDependencyInfoARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods | |
data PhysicalDeviceTensorFeaturesARM Source #
VkPhysicalDeviceTensorFeaturesARM - Structure describing tensor features that can be supported by an implementation
Members
The members of the PhysicalDeviceTensorFeaturesARM structure describe
the following features:
Description
If the PhysicalDeviceTensorFeaturesARM 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
PhysicalDeviceTensorFeaturesARM, 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
| PhysicalDeviceTensorFeaturesARM | |
Fields
| |
Instances
data DeviceTensorMemoryRequirementsARM Source #
VkDeviceTensorMemoryRequirementsARM - (None)
Valid Usage (Implicit)
See Also
VK_ARM_tensors,
StructureType,
TensorCreateInfoARM, getDeviceTensorMemoryRequirementsARM
Constructors
| DeviceTensorMemoryRequirementsARM | |
Fields
| |
Instances
| Show DeviceTensorMemoryRequirementsARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods showsPrec :: Int -> DeviceTensorMemoryRequirementsARM -> ShowS # | |
| FromCStruct DeviceTensorMemoryRequirementsARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors | |
| ToCStruct DeviceTensorMemoryRequirementsARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods withCStruct :: DeviceTensorMemoryRequirementsARM -> (Ptr DeviceTensorMemoryRequirementsARM -> IO b) -> IO b Source # pokeCStruct :: Ptr DeviceTensorMemoryRequirementsARM -> DeviceTensorMemoryRequirementsARM -> IO b -> IO b Source # withZeroCStruct :: (Ptr DeviceTensorMemoryRequirementsARM -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr DeviceTensorMemoryRequirementsARM -> IO b -> IO b Source # cStructSize :: Int Source # | |
| Zero DeviceTensorMemoryRequirementsARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods | |
data CopyTensorInfoARM Source #
VkCopyTensorInfoARM - Structure specifying an tensor copy operation
Description
Each region in pRegions describes a region to be copied from the
source tensor to a corresponding region of the destination tensor.
srcTensor and dstTensor can be the same tensor or alias the same
memory.
The formats of srcTensor and dstTensor must be compatible. Formats
are compatible if they share the same class, as shown in the
Compatible Formats
table.
cmdCopyTensorARM allows copying between size-compatible internal
formats.
Valid Usage
-
srcTensoranddstTensormust have been created with equal values forTensorDescriptionARM::dimensionCount
- For each of the
elements of
TensorDescriptionARM::pDimensions,srcTensoranddstTensormust be the same size -
regionCountmust be equal to 1 - Each element of
pRegionsmust be aTensorCopyARMstructure whosepSrcOffsetisNULLor has all its elements equal to0 - Each element of
pRegionsmust be aTensorCopyARMstructure whosepDstOffsetisNULLor has all its elements equal to0 - Each element of
pRegionsmust be aTensorCopyARMstructure whosepExtentisNULLor equal to theTensorDescriptionARM::pDimensionsarray specified whensrcTensoranddstTensorwere created - Each element of
pRegionsmust be aTensorCopyARMstructure whosedimensionCount, if it is not equal to 0, is equal to the largest of theTensorDescriptionARM::dimensionCountofsrcTensorordstTensor - The
format features
of
srcTensormust containFORMAT_FEATURE_2_TRANSFER_SRC_BIT -
srcTensormust have been created with theTENSOR_USAGE_TRANSFER_SRC_BIT_ARMusage flag set - The
format features
of
dstTensormust containFORMAT_FEATURE_2_TRANSFER_DST_BIT -
dstTensormust have been created with theTENSOR_USAGE_TRANSFER_DST_BIT_ARMusage flag set - If
srcTensoris non-sparse then it must be bound completely and contiguously to a singleDeviceMemoryobject - If
dstTensoris non-sparse then it must be bound completely and contiguously to a singleDeviceMemoryobject
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_COPY_TENSOR_INFO_ARM
-
pNextmust beNULL -
srcTensormust be a validTensorARMhandle -
dstTensormust be a validTensorARMhandle -
pRegionsmust be a valid pointer to an array ofregionCountvalidTensorCopyARMstructures -
regionCountmust be greater than0 - Both of
dstTensor, andsrcTensormust have been created, allocated, or retrieved from the sameDevice
See Also
VK_ARM_tensors,
StructureType,
TensorARM, TensorCopyARM,
cmdCopyTensorARM
Constructors
| CopyTensorInfoARM | |
Fields
| |
Instances
| Show CopyTensorInfoARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods showsPrec :: Int -> CopyTensorInfoARM -> ShowS # show :: CopyTensorInfoARM -> String # showList :: [CopyTensorInfoARM] -> ShowS # | |
| FromCStruct CopyTensorInfoARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods peekCStruct :: Ptr CopyTensorInfoARM -> IO CopyTensorInfoARM Source # | |
| ToCStruct CopyTensorInfoARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods withCStruct :: CopyTensorInfoARM -> (Ptr CopyTensorInfoARM -> IO b) -> IO b Source # pokeCStruct :: Ptr CopyTensorInfoARM -> CopyTensorInfoARM -> IO b -> IO b Source # withZeroCStruct :: (Ptr CopyTensorInfoARM -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr CopyTensorInfoARM -> IO b -> IO b Source # cStructSize :: Int Source # | |
| Zero CopyTensorInfoARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods | |
data TensorCopyARM Source #
VkTensorCopyARM - Structure specifying an tensor copy region
Valid Usage
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_TENSOR_COPY_ARM
-
pNextmust beNULL - If
dimensionCountis not0, andpSrcOffsetis notNULL,pSrcOffsetmust be a valid pointer to an array ofdimensionCountuint64_tvalues - If
dimensionCountis not0, andpDstOffsetis notNULL,pDstOffsetmust be a valid pointer to an array ofdimensionCountuint64_tvalues - If
dimensionCountis not0, andpExtentis notNULL,pExtentmust be a valid pointer to an array ofdimensionCountuint64_tvalues
See Also
Constructors
| TensorCopyARM | |
Fields
| |
Instances
| Show TensorCopyARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods showsPrec :: Int -> TensorCopyARM -> ShowS # show :: TensorCopyARM -> String # showList :: [TensorCopyARM] -> ShowS # | |
| FromCStruct TensorCopyARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods peekCStruct :: Ptr TensorCopyARM -> IO TensorCopyARM Source # | |
| ToCStruct TensorCopyARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods withCStruct :: TensorCopyARM -> (Ptr TensorCopyARM -> IO b) -> IO b Source # pokeCStruct :: Ptr TensorCopyARM -> TensorCopyARM -> IO b -> IO b Source # withZeroCStruct :: (Ptr TensorCopyARM -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr TensorCopyARM -> IO b -> IO b Source # cStructSize :: Int Source # | |
| Zero TensorCopyARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods zero :: TensorCopyARM Source # | |
data MemoryDedicatedAllocateInfoTensorARM Source #
VkMemoryDedicatedAllocateInfoTensorARM - Specify a dedicated memory allocation tensor resource
Valid Usage
-
MemoryAllocateInfo::allocationSizemust equal theMemoryRequirements::sizeof the tensor
- If
MemoryAllocateInfodefines a memory import operation with handle typeEXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT, the memory being imported must also be a dedicated tensor allocation andtensormust be identical to the tensor associated with the imported memory
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM
-
tensormust be a validTensorARMhandle
See Also
Constructors
| MemoryDedicatedAllocateInfoTensorARM | |
Instances
data PhysicalDeviceDescriptorBufferTensorPropertiesARM Source #
VkPhysicalDeviceDescriptorBufferTensorPropertiesARM - Structure describing descriptor buffer tensor properties supported by an implementation
Description
If the PhysicalDeviceDescriptorBufferTensorPropertiesARM structure is
included in the pNext chain of the
PhysicalDeviceProperties2
structure passed to
getPhysicalDeviceProperties2,
it is filled in with each corresponding implementation-dependent
property.
Valid Usage (Implicit)
See Also
Constructors
| PhysicalDeviceDescriptorBufferTensorPropertiesARM | |
Fields
| |
Instances
data PhysicalDeviceDescriptorBufferTensorFeaturesARM Source #
VkPhysicalDeviceDescriptorBufferTensorFeaturesARM - Structure describing the descriptor buffer tensor features that can be supported by an implementation
Members
This structure describes the following features:
Description
If the PhysicalDeviceDescriptorBufferTensorFeaturesARM 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
PhysicalDeviceDescriptorBufferTensorFeaturesARM, 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
VK_ARM_tensors,
VK_EXT_descriptor_buffer,
Bool32,
StructureType
Constructors
| PhysicalDeviceDescriptorBufferTensorFeaturesARM | |
Fields | |
Instances
data TensorCaptureDescriptorDataInfoARM Source #
VkTensorCaptureDescriptorDataInfoARM - Structure specifying a tensor for descriptor capture
Valid Usage
- If
tensoris notNULL_HANDLEthentensormust have been created withTENSOR_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARMset inTensorCreateInfoARM::flags
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM
-
pNextmust beNULL -
tensormust be a validTensorARMhandle
See Also
VK_ARM_tensors,
VK_EXT_descriptor_buffer,
StructureType,
TensorARM,
getTensorOpaqueCaptureDescriptorDataARM
Constructors
| TensorCaptureDescriptorDataInfoARM | |
Instances
data TensorViewCaptureDescriptorDataInfoARM Source #
VkTensorViewCaptureDescriptorDataInfoARM - Structure specifying a tensor view for descriptor capture
Valid Usage
- If
tensorViewis notNULL_HANDLEthentensorViewmust have been created withTENSOR_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARMset inTensorViewCreateInfoARM::flags
Valid Usage (Implicit)
-
pNextmust beNULL -
tensorViewmust be a validTensorViewARMhandle
See Also
VK_ARM_tensors,
VK_EXT_descriptor_buffer,
StructureType,
TensorViewARM,
getTensorViewOpaqueCaptureDescriptorDataARM
Constructors
| TensorViewCaptureDescriptorDataInfoARM | |
Fields
| |
Instances
data DescriptorGetTensorInfoARM Source #
VkDescriptorGetTensorInfoARM - Structure specifying parameters to get descriptor data for tensor views
Valid Usage
- If the
nullDescriptor
feature is not enabled,
tensorViewmust not beNULL_HANDLE
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM
- If
tensorViewis notNULL_HANDLE,tensorViewmust be a validTensorViewARMhandle
See Also
VK_ARM_tensors,
VK_EXT_descriptor_buffer,
StructureType,
TensorViewARM
Constructors
| DescriptorGetTensorInfoARM | |
Fields
| |
Instances
data FrameBoundaryTensorsARM Source #
VkFrameBoundaryTensorsARM - Add tensor frame boundary information to queue submissions
Valid Usage (Implicit)
See Also
VK_ARM_tensors,
VK_EXT_frame_boundary,
StructureType,
TensorARM
Constructors
| FrameBoundaryTensorsARM | |
Instances
| Show FrameBoundaryTensorsARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods showsPrec :: Int -> FrameBoundaryTensorsARM -> ShowS # show :: FrameBoundaryTensorsARM -> String # showList :: [FrameBoundaryTensorsARM] -> ShowS # | |
| FromCStruct FrameBoundaryTensorsARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods peekCStruct :: Ptr FrameBoundaryTensorsARM -> IO FrameBoundaryTensorsARM Source # | |
| ToCStruct FrameBoundaryTensorsARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods withCStruct :: FrameBoundaryTensorsARM -> (Ptr FrameBoundaryTensorsARM -> IO b) -> IO b Source # pokeCStruct :: Ptr FrameBoundaryTensorsARM -> FrameBoundaryTensorsARM -> IO b -> IO b Source # withZeroCStruct :: (Ptr FrameBoundaryTensorsARM -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr FrameBoundaryTensorsARM -> IO b -> IO b Source # cStructSize :: Int Source # | |
| Zero FrameBoundaryTensorsARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods | |
data PhysicalDeviceExternalTensorInfoARM Source #
VkPhysicalDeviceExternalTensorInfoARM - Structure specifying tensor creation parameters.
Valid Usage (Implicit)
See Also
VK_ARM_tensors,
ExternalMemoryHandleTypeFlagBits,
StructureType,
TensorCreateFlagsARM, TensorDescriptionARM,
getPhysicalDeviceExternalTensorPropertiesARM
Constructors
| PhysicalDeviceExternalTensorInfoARM | |
Fields
| |
Instances
| Show PhysicalDeviceExternalTensorInfoARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods showsPrec :: Int -> PhysicalDeviceExternalTensorInfoARM -> ShowS # show :: PhysicalDeviceExternalTensorInfoARM -> String # showList :: [PhysicalDeviceExternalTensorInfoARM] -> ShowS # | |
| FromCStruct PhysicalDeviceExternalTensorInfoARM Source # | |
| ToCStruct PhysicalDeviceExternalTensorInfoARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods withCStruct :: PhysicalDeviceExternalTensorInfoARM -> (Ptr PhysicalDeviceExternalTensorInfoARM -> IO b) -> IO b Source # pokeCStruct :: Ptr PhysicalDeviceExternalTensorInfoARM -> PhysicalDeviceExternalTensorInfoARM -> IO b -> IO b Source # withZeroCStruct :: (Ptr PhysicalDeviceExternalTensorInfoARM -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr PhysicalDeviceExternalTensorInfoARM -> IO b -> IO b Source # cStructSize :: Int Source # | |
| Zero PhysicalDeviceExternalTensorInfoARM Source # | |
Defined in Vulkan.Extensions.VK_ARM_tensors Methods | |
data ExternalTensorPropertiesARM Source #
VkExternalTensorPropertiesARM - Structure specifying supported external handle capabilities for a tensor
Valid Usage (Implicit)
See Also
VK_ARM_tensors,
ExternalMemoryProperties,
StructureType,
getPhysicalDeviceExternalTensorPropertiesARM
Constructors
| ExternalTensorPropertiesARM | |
Fields
| |
Instances
data ExternalMemoryTensorCreateInfoARM Source #
VkExternalMemoryTensorCreateInfoARM - Specify that a tensor may be backed by external memory
Members
A ExternalMemoryTensorCreateInfoARM structure with a non-zero
handleTypes field must be included in the creation parameters for a
tensor that will be bound to memory that is either exported or imported.
Valid Usage (Implicit)
See Also
VK_ARM_tensors,
ExternalMemoryHandleTypeFlags,
StructureType
Constructors
| ExternalMemoryTensorCreateInfoARM | |
Fields
| |
Instances
newtype TensorCreateFlagBitsARM Source #
VkTensorCreateFlagBitsARM - Bitmask specifying additional parameters of a tensor
Description
TENSOR_CREATE_MUTABLE_FORMAT_BIT_ARMspecifies that the tensor can be used to create aTensorViewARMwith a different format from the tensor.
TENSOR_CREATE_PROTECTED_BIT_ARMspecifies that the tensor is a protected tensor.TENSOR_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARMspecifies that the tensor can be used with descriptor buffers when capturing and replaying (e.g. for trace capture and replay), seeOpaqueCaptureDescriptorDataCreateInfoEXTfor more detail.
See Also
Constructors
| TensorCreateFlagBitsARM Flags64 |
Bundled Patterns
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
newtype TensorTilingARM Source #
VkTensorTilingARM - Specifies the tiling arrangement of data in an tensor
Description
TENSOR_TILING_OPTIMAL_ARMspecifies optimal tiling (elements are laid out in an implementation-dependent arrangement, for more efficient memory access).
TENSOR_TILING_LINEAR_ARMspecifies linear tiling (elements are laid out linearly and the offset between each element is determined by the strides of the tensor).
See Also
Constructors
| TensorTilingARM Int32 |
Bundled Patterns
| pattern TENSOR_TILING_OPTIMAL_ARM :: TensorTilingARM | |
| pattern TENSOR_TILING_LINEAR_ARM :: TensorTilingARM |
Instances
newtype TensorViewCreateFlagBitsARM Source #
VkTensorViewCreateFlagBitsARM - Bitmask specifying additional parameters of an tensor view
Description
TENSOR_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARMspecifies that the tensor view can be used with descriptor buffers when capturing and replaying (e.g. for trace capture and replay), seeOpaqueCaptureDescriptorDataCreateInfoEXTfor more detail.
See Also
Constructors
| TensorViewCreateFlagBitsARM Flags64 |
Bundled Patterns
| pattern TENSOR_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM :: TensorViewCreateFlagBitsARM |
Instances
type ARM_TENSORS_SPEC_VERSION = 2 Source #
pattern ARM_TENSORS_SPEC_VERSION :: Integral a => a Source #
type ARM_TENSORS_EXTENSION_NAME = "VK_ARM_tensors" Source #
pattern ARM_TENSORS_EXTENSION_NAME :: (Eq a, IsString a) => a Source #
VkTensorARM - Opaque handle to a tensor object
See Also
VK_ARM_tensors,
VK_DEFINE_NON_DISPATCHABLE_HANDLE,
VK_EXT_descriptor_heap,
BindTensorMemoryInfoARM,
CopyTensorInfoARM,
FrameBoundaryTensorsARM,
MemoryDedicatedAllocateInfoTensorARM,
TensorCaptureDescriptorDataInfoARM,
TensorMemoryBarrierARM,
TensorMemoryRequirementsInfoARM,
TensorViewCreateInfoARM,
createTensorARM,
destroyTensorARM,
getTensorOpaqueCaptureDataARM
Instances
| Eq TensorARM Source # | |
| Ord TensorARM Source # | |
| Storable TensorARM Source # | |
Defined in Vulkan.Extensions.Handles | |
| Show TensorARM Source # | |
| HasObjectType TensorARM Source # | |
Defined in Vulkan.Extensions.Handles Methods objectTypeAndHandle :: TensorARM -> (ObjectType, Word64) Source # | |
| IsHandle TensorARM Source # | |
Defined in Vulkan.Extensions.Handles | |
| Zero TensorARM Source # | |
Defined in Vulkan.Extensions.Handles | |
newtype TensorViewARM Source #
VkTensorViewARM - Opaque handle to an tensor view object
See Also
VK_ARM_tensors,
VK_DEFINE_NON_DISPATCHABLE_HANDLE,
DescriptorGetTensorInfoARM,
TensorViewCaptureDescriptorDataInfoARM,
WriteDescriptorSetTensorARM,
createTensorViewARM,
destroyTensorViewARM
Constructors
| TensorViewARM Word64 |