VkCopyTensorInfoARM(3)

# VkCopyTensorInfoARM(3) Manual Page

## Name

VkCopyTensorInfoARM - Structure specifying an tensor copy operation

## C Specification

The `VkCopyTensorInfoARM` structure is defined as:

    // Provided by VK_ARM_tensors
    typedef struct VkCopyTensorInfoARM {
        VkStructureType           sType;
        const void*               pNext;
        VkTensorARM               srcTensor;
        VkTensorARM               dstTensor;
        uint32_t                  regionCount;
        const VkTensorCopyARM*    pRegions;
    } VkCopyTensorInfoARM;

## Members

- `sType` is a VkStructureType value identifying this structure.

- `pNext` is NULL or a pointer to a structure extending this structure.

- `srcTensor` is the source tensor.

- `dstTensor` is the destination tensor.

- `regionCount` is the number of regions to copy.

- `pRegions` is a pointer to an array of VkTensorCopyARM structures specifying the regions to copy.

## 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.

Note | editing-note The valid usage rules restrict copies to copying whole tensors of equal sizes. That is, only a single region can be copied and this region must be the entire tensor. This means the entire tensor must be copied. These restrictions may be relaxed in future extensions.

`vkCmdCopyTensorARM` allows copying between size-compatible internal formats.

Valid Usage

- VUID-VkCopyTensorInfoARM-dimensionCount-09684
  `srcTensor` and `dstTensor` must have been created with equal values for VkTensorDescriptionARM::`dimensionCount`

- VUID-VkCopyTensorInfoARM-pDimensions-09685
  For each of the elements of VkTensorDescriptionARM::`pDimensions`, `srcTensor` and `dstTensor` must be the same size

- VUID-VkCopyTensorInfoARM-regionCount-09686
  `regionCount` must be equal to 1

- VUID-VkCopyTensorInfoARM-pRegions-09687
  Each element of `pRegions` must be a VkTensorCopyARM structure whose `pSrcOffset` is `NULL` or has all its elements equal to `0`

- VUID-VkCopyTensorInfoARM-pRegions-09688
  Each element of `pRegions` must be a VkTensorCopyARM structure whose `pDstOffset` is `NULL` or has all its elements equal to `0`

- VUID-VkCopyTensorInfoARM-pRegions-09689
  Each element of `pRegions` must be a VkTensorCopyARM structure whose `pExtent` is `NULL` or equal to the VkTensorDescriptionARM::`pDimensions` array specified when `srcTensor` and `dstTensor` were created

- VUID-VkCopyTensorInfoARM-pRegions-09954
  Each element of `pRegions` must be a VkTensorCopyARM structure whose `dimensionCount`, if it is not equal to 0, is equal to the largest of the VkTensorDescriptionARM::`dimensionCount` of `srcTensor` or `dstTensor`

- VUID-VkCopyTensorInfoARM-srcTensor-09690
  The format features of `srcTensor` must contain VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT

- VUID-VkCopyTensorInfoARM-srcTensor-09691
  `srcTensor` must have been created with the VK_TENSOR_USAGE_TRANSFER_SRC_BIT_ARM usage flag set

- VUID-VkCopyTensorInfoARM-dstTensor-09692
  The format features of `dstTensor` must contain VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT

- VUID-VkCopyTensorInfoARM-dstTensor-09693
  `dstTensor` must have been created with the VK_TENSOR_USAGE_TRANSFER_DST_BIT_ARM usage flag set

- VUID-VkCopyTensorInfoARM-srcTensor-09694
  If `srcTensor` is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory object

- VUID-VkCopyTensorInfoARM-dstTensor-09695
  If `dstTensor` is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory object

Valid Usage (Implicit)

- VUID-VkCopyTensorInfoARM-sType-sType
  `sType` must be VK_STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM

- VUID-VkCopyTensorInfoARM-pNext-pNext
  `pNext` must be `NULL`

- VUID-VkCopyTensorInfoARM-srcTensor-parameter
  `srcTensor` must be a valid VkTensorARM handle

- VUID-VkCopyTensorInfoARM-dstTensor-parameter
  `dstTensor` must be a valid VkTensorARM handle

- VUID-VkCopyTensorInfoARM-pRegions-parameter
  `pRegions` must be a valid pointer to an array of `regionCount` valid VkTensorCopyARM structures

- VUID-VkCopyTensorInfoARM-regionCount-arraylength
  `regionCount` must be greater than `0`

- VUID-VkCopyTensorInfoARM-commonparent
  Both of `dstTensor`, and `srcTensor` must have been created, allocated, or retrieved from the same VkDevice

## See Also

VK_ARM_tensors, VkStructureType, VkTensorARM, VkTensorCopyARM, vkCmdCopyTensorARM

## Document Notes

For more information, see the Vulkan Specification.

This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification, not directly.

## Copyright

Copyright 2014-2026 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0