VkPhysicalDeviceTensorPropertiesARM(3)

# VkPhysicalDeviceTensorPropertiesARM(3) Manual Page

## Name

VkPhysicalDeviceTensorPropertiesARM - Structure describing the tensor properties of a physical device

## C Specification

The `VkPhysicalDeviceTensorPropertiesARM` structure is defined as:

    // Provided by VK_ARM_tensors
    typedef struct VkPhysicalDeviceTensorPropertiesARM {
        VkStructureType       sType;
        void*                 pNext;
        uint32_t              maxTensorDimensionCount;
        uint64_t              maxTensorElements;
        uint64_t              maxPerDimensionTensorElements;
        int64_t               maxTensorStride;
        uint64_t              maxTensorSize;
        uint32_t              maxTensorShaderAccessArrayLength;
        uint32_t              maxTensorShaderAccessSize;
        uint32_t              maxDescriptorSetStorageTensors;
        uint32_t              maxPerStageDescriptorSetStorageTensors;
        uint32_t              maxDescriptorSetUpdateAfterBindStorageTensors;
        uint32_t              maxPerStageDescriptorUpdateAfterBindStorageTensors;
        VkBool32              shaderStorageTensorArrayNonUniformIndexingNative;
        VkShaderStageFlags    shaderTensorSupportedStages;
    } VkPhysicalDeviceTensorPropertiesARM;

## Members

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

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

- `maxTensorDimensionCount` is the maximum number of dimensions that can be specified in the `dimensionCount` member of VkTensorDescriptionARM.

- `maxTensorElements` is the maximum number of data elements in a created tensor as specified in the VkTensorDescriptionARM of VkTensorCreateInfoARM. The number of data elements in a tensor is computed as the product of `pDimensions`[i] for all 0 ≤ i ≤ dimensionCount-1.

- `maxPerDimensionTensorElements` is the maximum number of data elements alongside any dimension of a tensor.

- `maxTensorStride` is the maximum value for a tensor stride that can be used in VkTensorDescriptionARM::`pStrides`.

- `maxTensorSize` is the maximum size, in bytes, of a tensor.

- `maxTensorShaderAccessArrayLength` is the maximum number of elements in an array returned by `OpTensoReadARM` or consumed by `OpTensorWriteARM`.

- `maxTensorShaderAccessSize` is the maximum size in bytes of the data that can be read from a tensor with `OpTensorReadARM` or written to a tensor with `OpTensorWriteARM`.

- `maxDescriptorSetStorageTensors` is the maximum number of tensors that can be included in descriptor bindings in a pipeline layout across all pipeline shader stages and descriptor set numbers. Descriptors with a type of VK_DESCRIPTOR_TYPE_TENSOR_ARM count against this limit.

- `maxPerStageDescriptorSetStorageTensors` is the maximum number of tensors that can be accessible to a single shader stage in a pipeline layout. Descriptors with a type of VK_DESCRIPTOR_TYPE_TENSOR_ARM count against this limit. A descriptor is accessible to a pipeline shader stage when the `stageFlags` member of the VkDescriptorSetLayoutBinding structure has the bit for that shader stage set.

- `maxDescriptorSetUpdateAfterBindStorageTensors` is similar to `maxDescriptorSetStorageTensors` but counts descriptors from descriptor sets created with or without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set.

- `maxPerStageDescriptorUpdateAfterBindStorageTensors` is similar to `maxPerStageDescriptorSetStorageTensors` but counts descriptors from descriptor sets created with or without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set.

- `shaderStorageTensorArrayNonUniformIndexingNative` is a boolean value indicating whether storage tensor descriptors natively support nonuniform indexing. If this is VK_FALSE, then a single dynamic instance of an instruction that nonuniformly indexes an array of storage buffers may execute multiple times in order to access all the descriptors.

- `shaderTensorSupportedStages` is a bitfield of VkShaderStageFlagBits describing the shader stages that can access tensor resources. `shaderTensorSupportedStages` will have the VK_SHADER_STAGE_COMPUTE_BIT bit set if any of the physical device’s queues support VK_QUEUE_COMPUTE_BIT.

## Description

If the `VkPhysicalDeviceTensorPropertiesARM` structure is included in the `pNext` chain of the VkPhysicalDeviceProperties2 structure passed to vkGetPhysicalDeviceProperties2, it is filled in with each corresponding implementation-dependent property.

Valid Usage (Implicit)

- VUID-VkPhysicalDeviceTensorPropertiesARM-sType-sType
  `sType` must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM

Structure Chaining

Extends the structure

  - VkPhysicalDeviceProperties2

## See Also

VK_ARM_tensors, VkBool32, VkShaderStageFlags, VkStructureType

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