VkTensorMemoryBarrierARM
The VkTensorMemoryBarrierARM structure is defined as:
typedef struct VkTensorMemoryBarrierARM {
VkStructureType sType;
const void* pNext;
VkPipelineStageFlags2 srcStageMask;
VkAccessFlags2 srcAccessMask;
VkPipelineStageFlags2 dstStageMask;
VkAccessFlags2 dstAccessMask;
uint32_t srcQueueFamilyIndex;
uint32_t dstQueueFamilyIndex;
VkTensorARM tensor;
} VkTensorMemoryBarrierARM;
pub struct TensorMemoryBarrierARM {
s_type: vk::StructureType,
p_next: *const c_void,
src_stage_mask: vk::PipelineStageFlags2,
src_access_mask: vk::AccessFlags2,
dst_stage_mask: vk::PipelineStageFlags2,
dst_access_mask: vk::AccessFlags2,
src_queue_family_index: u32,
dst_queue_family_index: u32,
tensor: vk::TensorARM,
}
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.srcStageMaskis a VkPipelineStageFlags2 mask of pipeline stages to be included in the first synchronization scope.srcAccessMaskis a VkAccessFlags2 mask of access flags to be included in the first access scope.dstStageMaskis a VkPipelineStageFlags2 mask of pipeline stages to be included in the second synchronization scope.dstAccessMaskis a VkAccessFlags2 mask of access flags to be included in the second access scope.srcQueueFamilyIndexis the source queue family for a queue family ownership transfer.dstQueueFamilyIndexis the destination queue family for a queue family ownership transfer.tensoris a handle to the tensor whose backing memory is affected by the barrier.
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 VK_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 Queue Family Ownership Transfer.
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
VUID-VkTensorMemoryBarrierARM-tensor-09755
If tensor was created with a sharing mode of
VK_SHARING_MODE_CONCURRENT, srcQueueFamilyIndex and
dstQueueFamilyIndex must both be VK_QUEUE_FAMILY_IGNORED
VUID-VkTensorMemoryBarrierARM-tensor-09756
If tensor was created with a sharing mode of
VK_SHARING_MODE_EXCLUSIVE, srcQueueFamilyIndex and
dstQueueFamilyIndex must both be either
VK_QUEUE_FAMILY_IGNORED, or a valid queue family (see
Queue Family Properties)
VUID-VkTensorMemoryBarrierARM-tensor-09757
If tensor was created with a sharing mode of
VK_SHARING_MODE_EXCLUSIVE, and srcQueueFamilyIndex and
dstQueueFamilyIndex are not VK_QUEUE_FAMILY_IGNORED, at
least one of them must be the same as the family of the queue that will
execute this barrier
VUID-VkTensorMemoryBarrierARM-tensor-09758
If tensor is non-sparse then it must be bound completely and
contiguously to a single VkDeviceMemory object
Valid Usage (Implicit)
VUID-VkTensorMemoryBarrierARM-sType-sType
sType must be VK_STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM
VUID-VkTensorMemoryBarrierARM-srcStageMask-parameter
srcStageMask must be a valid combination of VkPipelineStageFlagBits2 values
VUID-VkTensorMemoryBarrierARM-srcAccessMask-parameter
srcAccessMask must be a valid combination of VkAccessFlagBits2 values
VUID-VkTensorMemoryBarrierARM-dstStageMask-parameter
dstStageMask must be a valid combination of VkPipelineStageFlagBits2 values
VUID-VkTensorMemoryBarrierARM-dstAccessMask-parameter
dstAccessMask must be a valid combination of VkAccessFlagBits2 values
VUID-VkTensorMemoryBarrierARM-tensor-parameter
tensor must be a valid VkTensorARM handle