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

See Also

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 2014-2025 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0