VkTensorCreateInfoARM(3)

# VkTensorCreateInfoARM(3) Manual Page

## Name

VkTensorCreateInfoARM - Structure specifying the parameters of a newly created tensor object

## C Specification

The VkTensorCreateInfoARM structure is defined as:

    // Provided by VK_ARM_tensors
    typedef struct VkTensorCreateInfoARM {
        VkStructureType                  sType;
        const void*                      pNext;
        VkTensorCreateFlagsARM           flags;
        const VkTensorDescriptionARM*    pDescription;
        VkSharingMode                    sharingMode;
        uint32_t                         queueFamilyIndexCount;
        const uint32_t*                  pQueueFamilyIndices;
    } VkTensorCreateInfoARM;

## Members

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

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

- `flags` is a bitmask of VkTensorCreateFlagBitsARM describing additional parameters of the tensor.

- `pDescription` is a pointer to an instance of VkTensorDescriptionARM describing the tensor.

- `sharingMode` is a VkSharingMode value specifying the sharing mode of the tensor when it will be accessed by multiple queue families.

- `queueFamilyIndexCount` is the number of entries in the `pQueueFamilyIndices` array.

- `pQueueFamilyIndices` is a list of queue families that will access this tensor (ignored if `sharingMode` is not VK_SHARING_MODE_CONCURRENT).

## Description

To determine the set of valid `usage` bits for a given tensor format, call vkGetPhysicalDeviceFormatProperties2 with VkTensorFormatPropertiesARM in the `pNext` chain.

Tensor Creation Limits

Valid values for some tensor creation parameters are limited by a numerical upper bound or by inclusion in a bitset.

Several limiting values are defined below. The limiting values are referenced by the relevant valid usage statements of `VkTensorCreateInfoARM`.

- Let the uint64_t tensorElements define the number of data elements in the tensor computed as the product of all `VkTensorCreateInfoARM`::`pDescription->pDimensions`[i] for i between 0 and `VkTensorCreateInfoARM`::`pDescription->dimensionCount` - 1.

Valid Usage

- VUID-VkTensorCreateInfoARM-pDescription-09720
  If `pDescription->tiling` is VK_TENSOR_TILING_OPTIMAL_ARM, `pDescription->pStrides` must be `NULL`

- VUID-VkTensorCreateInfoARM-tensorElements-09721
  `tensorElements` (as defined in https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-tensor-creation-limits) must not be greater than VkPhysicalDeviceTensorPropertiesARM::`maxTensorElements`

- VUID-VkTensorCreateInfoARM-sharingMode-09722
  If `sharingMode` is VK_SHARING_MODE_CONCURRENT, `pQueueFamilyIndices` must be a valid pointer to an array of `queueFamilyIndexCount` `uint32_t` values

- VUID-VkTensorCreateInfoARM-maintenance11-13358
  If the `maintenance11` feature is enabled and `sharingMode` is VK_SHARING_MODE_CONCURRENT, then `queueFamilyIndexCount` must be greater than `0`

- VUID-VkTensorCreateInfoARM-sharingMode-09723
  If the `maintenance11` feature is not enabled and `sharingMode` is VK_SHARING_MODE_CONCURRENT, then `queueFamilyIndexCount` must be greater than `1`

- VUID-VkTensorCreateInfoARM-sharingMode-09725
  If `sharingMode` is VK_SHARING_MODE_CONCURRENT, each element of `pQueueFamilyIndices` must be unique and must be less than `pQueueFamilyPropertyCount` returned by either vkGetPhysicalDeviceQueueFamilyProperties or vkGetPhysicalDeviceQueueFamilyProperties2 for the `physicalDevice` that was used to create `device`

- VUID-VkTensorCreateInfoARM-pNext-09864
  If the `pNext` chain includes a VkExternalMemoryTensorCreateInfoARM structure, its `handleTypes` member must only contain bits that are also in VkExternalTensorPropertiesARM::`externalMemoryProperties.compatibleHandleTypes`, as returned by vkGetPhysicalDeviceExternalTensorPropertiesARM with `pExternalTensorInfo->handleType` equal to any one of the handle types specified in VkExternalMemoryTensorCreateInfoARM::`handleTypes`

- VUID-VkTensorCreateInfoARM-flags-09726
  If `flags` includes VK_TENSOR_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM, the `descriptorBufferCaptureReplay` feature must be enabled

- VUID-VkTensorCreateInfoARM-pNext-09727
  If the `pNext` chain includes a VkOpaqueCaptureDescriptorDataCreateInfoEXT structure, `flags` must contain VK_TENSOR_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM

- VUID-VkTensorCreateInfoARM-pDescription-09728
  If `pDescription->usage` does not have any of the following bits set (i.e. if it is not possible to create a tensor view for this tensor), then the format features must contain the format feature flags required by the `usage` flags for `pDescription->format` as indicated in the https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#format-feature-dependent-usage-flags section

  - VK_TENSOR_USAGE_SHADER_BIT_ARM

  - VK_TENSOR_USAGE_DATA_GRAPH_BIT_ARM

- VUID-VkTensorCreateInfoARM-protectedMemory-09729
  If the `protectedMemory` feature is not enabled, `flags` must not contain VK_TENSOR_CREATE_PROTECTED_BIT_ARM

- VUID-VkTensorCreateInfoARM-flags-11395
  If VkOpaqueCaptureDataCreateInfoEXT::`pData` is not `NULL`, `flags` must contain VK_TENSOR_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_ARM

- VUID-VkTensorCreateInfoARM-flags-11396
  If `flags` contains VK_TENSOR_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_ARM, VkOpaqueCaptureDataCreateInfoEXT::`pData->size` must be equal to `imageCaptureReplayOpaqueDataSize`

- VUID-VkTensorCreateInfoARM-pNext-09833
  If a VkTensorRollingBackingCreateInfoARM structure is present in the `pNext` chain of VkTensorCreateInfoARM, then `pDescription->tiling` must be VK_TENSOR_TILING_LINEAR_ARM, VK_TENSOR_TILING_BRICK_16_WIDE_ARM, VK_TENSOR_TILING_BRICK_8_WIDE_ARM, or VK_TENSOR_TILING_BRICK_4_WIDE_ARM

- VUID-VkTensorCreateInfoARM-pNext-09834
  If a VkTensorRollingBackingCreateInfoARM structure is present in the `pNext` chain of VkTensorCreateInfoARM, then `pDescription->dimensionCount` must be less than or equal to `4`

Valid Usage (Implicit)

- VUID-VkTensorCreateInfoARM-sType-sType
  `sType` must be VK_STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM

- VUID-VkTensorCreateInfoARM-pNext-pNext
  Each `pNext` member of any structure (including this one) in the `pNext` chain must be either `NULL` or a pointer to a valid instance of VkExternalMemoryTensorCreateInfoARM, VkOpaqueCaptureDataCreateInfoEXT, VkOpaqueCaptureDescriptorDataCreateInfoEXT, or VkTensorRollingBackingCreateInfoARM

- VUID-VkTensorCreateInfoARM-sType-unique
  The `sType` value of each structure in the `pNext` chain must be unique

- VUID-VkTensorCreateInfoARM-flags-parameter
  `flags` must be a valid combination of VkTensorCreateFlagBitsARM values

- VUID-VkTensorCreateInfoARM-pDescription-parameter
  `pDescription` must be a valid pointer to a valid VkTensorDescriptionARM structure

- VUID-VkTensorCreateInfoARM-sharingMode-parameter
  `sharingMode` must be a valid VkSharingMode value

## See Also

VK_ARM_tensors, VkDeviceTensorMemoryRequirementsARM, VkSharingMode, VkStructureType, VkTensorCreateFlagsARM, VkTensorDescriptionARM, vkCreateTensorARM

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