Description

The following table specifies the required minimum/maximum for all Vulkan graphics implementations. Where a limit corresponds to a fine-grained device feature which is optional, the feature name is listed with two required limits, one when the feature is supported and one when it is not supported. If an implementation supports a feature, the limits reported are the same whether or not the feature is enabled.

Table 1. Required Limit Types
Type Limit Feature

uint32_t

maxImageDimension1D

-

uint32_t

maxImageDimension2D

-

uint32_t

maxImageDimension3D

-

uint32_t

maxImageDimensionCube

-

uint32_t

maxImageArrayLayers

-

uint32_t

maxTexelBufferElements

-

uint32_t

maxUniformBufferRange

-

uint32_t

maxStorageBufferRange

-

uint32_t

maxPushConstantsSize

-

uint32_t

maxMemoryAllocationCount

-

uint32_t

maxSamplerAllocationCount

-

VkDeviceSize

bufferImageGranularity

-

VkDeviceSize

sparseAddressSpaceSize

sparseBinding

uint32_t

maxBoundDescriptorSets

-

uint32_t

maxPerStageDescriptorSamplers

-

uint32_t

maxPerStageDescriptorUniformBuffers

-

uint32_t

maxPerStageDescriptorStorageBuffers

-

uint32_t

maxPerStageDescriptorSampledImages

-

uint32_t

maxPerStageDescriptorStorageImages

-

uint32_t

maxPerStageDescriptorInputAttachments

-

uint32_t

maxPerStageResources

-

uint32_t

maxDescriptorSetSamplers

-

uint32_t

maxDescriptorSetUniformBuffers

-

uint32_t

maxDescriptorSetUniformBuffersDynamic

-

uint32_t

maxDescriptorSetStorageBuffers

-

uint32_t

maxDescriptorSetStorageBuffersDynamic

-

uint32_t

maxDescriptorSetSampledImages

-

uint32_t

maxDescriptorSetStorageImages

-

uint32_t

maxDescriptorSetInputAttachments

-

uint32_t

maxVertexInputAttributes

-

uint32_t

maxVertexInputBindings

-

uint32_t

maxVertexInputAttributeOffset

-

uint32_t

maxVertexInputBindingStride

-

uint32_t

maxVertexOutputComponents

-

uint32_t

maxTessellationGenerationLevel

tessellationShader

uint32_t

maxTessellationPatchSize

tessellationShader

uint32_t

maxTessellationControlPerVertexInputComponents

tessellationShader

uint32_t

maxTessellationControlPerVertexOutputComponents

tessellationShader

uint32_t

maxTessellationControlPerPatchOutputComponents

tessellationShader

uint32_t

maxTessellationControlTotalOutputComponents

tessellationShader

uint32_t

maxTessellationEvaluationInputComponents

tessellationShader

uint32_t

maxTessellationEvaluationOutputComponents

tessellationShader

uint32_t

maxGeometryShaderInvocations

geometryShader

uint32_t

maxGeometryInputComponents

geometryShader

uint32_t

maxGeometryOutputComponents

geometryShader

uint32_t

maxGeometryOutputVertices

geometryShader

uint32_t

maxGeometryTotalOutputComponents

geometryShader

uint32_t

maxFragmentInputComponents

-

uint32_t

maxFragmentOutputAttachments

-

uint32_t

maxFragmentDualSrcAttachments

dualSrcBlend

uint32_t

maxFragmentCombinedOutputResources

-

uint32_t

maxComputeSharedMemorySize

-

3 × uint32_t

maxComputeWorkGroupCount

-

uint32_t

maxComputeWorkGroupInvocations

-

3 × uint32_t

maxComputeWorkGroupSize

-

uint32_t

subPixelPrecisionBits

-

uint32_t

subTexelPrecisionBits

-

uint32_t

mipmapPrecisionBits

-

uint32_t

maxDrawIndexedIndexValue

fullDrawIndexUint32

uint32_t

maxDrawIndirectCount

multiDrawIndirect

float

maxSamplerLodBias

-

float

maxSamplerAnisotropy

samplerAnisotropy

uint32_t

maxViewports

multiViewport

2 × uint32_t

maxViewportDimensions

-

2 × float

viewportBoundsRange

-

uint32_t

viewportSubPixelBits

-

size_t

minMemoryMapAlignment

-

VkDeviceSize

minTexelBufferOffsetAlignment

-

VkDeviceSize

minUniformBufferOffsetAlignment

-

VkDeviceSize

minStorageBufferOffsetAlignment

-

int32_t

minTexelOffset

-

uint32_t

maxTexelOffset

-

int32_t

minTexelGatherOffset

shaderImageGatherExtended

uint32_t

maxTexelGatherOffset

shaderImageGatherExtended

float

minInterpolationOffset

sampleRateShading

float

maxInterpolationOffset

sampleRateShading

uint32_t

subPixelInterpolationOffsetBits

sampleRateShading

uint32_t

maxFramebufferWidth

-

uint32_t

maxFramebufferHeight

-

uint32_t

maxFramebufferLayers

geometryShader, shaderOutputLayer

VkSampleCountFlags

framebufferColorSampleCounts

-

VkSampleCountFlags

framebufferIntegerColorSampleCounts

-

VkSampleCountFlags

framebufferDepthSampleCounts

-

VkSampleCountFlags

framebufferStencilSampleCounts

-

VkSampleCountFlags

framebufferNoAttachmentsSampleCounts

-

uint32_t

maxColorAttachments

-

VkSampleCountFlags

sampledImageColorSampleCounts

-

VkSampleCountFlags

sampledImageIntegerSampleCounts

-

VkSampleCountFlags

sampledImageDepthSampleCounts

-

VkSampleCountFlags

sampledImageStencilSampleCounts

-

VkSampleCountFlags

storageImageSampleCounts

shaderStorageImageMultisample

uint32_t

maxSampleMaskWords

-

VkBool32

timestampComputeAndGraphics

-

float

timestampPeriod

-

uint32_t

maxClipDistances

shaderClipDistance

uint32_t

maxCullDistances

shaderCullDistance

uint32_t

maxCombinedClipAndCullDistances

shaderCullDistance

uint32_t

discreteQueuePriorities

-

2 × float

pointSizeRange

largePoints

2 × float

lineWidthRange

wideLines

float

pointSizeGranularity

largePoints

float

lineWidthGranularity

wideLines

VkBool32

strictLines

-

VkBool32

standardSampleLocations

-

VkDeviceSize

optimalBufferCopyOffsetAlignment

-

VkDeviceSize

optimalBufferCopyRowPitchAlignment

-

VkDeviceSize

nonCoherentAtomSize

-

uint32_t

maxDiscardRectangles

VK_EXT_discard_rectangles

VkBool32

filterMinmaxSingleComponentFormats

samplerFilterMinmax

VkBool32

filterMinmaxImageComponentMapping

samplerFilterMinmax

float

primitiveOverestimationSize

VK_EXT_conservative_rasterization

VkBool32

maxExtraPrimitiveOverestimationSize

VK_EXT_conservative_rasterization

float

extraPrimitiveOverestimationSizeGranularity

VK_EXT_conservative_rasterization

VkBool32

degenerateTriangleRasterized

VK_EXT_conservative_rasterization

float

degenerateLinesRasterized

VK_EXT_conservative_rasterization

VkBool32

fullyCoveredFragmentShaderInputVariable

VK_EXT_conservative_rasterization

VkBool32

conservativeRasterizationPostDepthCoverage

VK_EXT_conservative_rasterization

uint32_t

maxUpdateAfterBindDescriptorsInAllPools

descriptorIndexing

VkBool32

shaderUniformBufferArrayNonUniformIndexingNative

-

VkBool32

shaderSampledImageArrayNonUniformIndexingNative

-

VkBool32

shaderStorageBufferArrayNonUniformIndexingNative

-

VkBool32

shaderStorageImageArrayNonUniformIndexingNative

-

VkBool32

shaderInputAttachmentArrayNonUniformIndexingNative

-

uint32_t

maxPerStageDescriptorUpdateAfterBindSamplers

descriptorIndexing

uint32_t

maxPerStageDescriptorUpdateAfterBindUniformBuffers

descriptorIndexing

uint32_t

maxPerStageDescriptorUpdateAfterBindStorageBuffers

descriptorIndexing

uint32_t

maxPerStageDescriptorUpdateAfterBindSampledImages

descriptorIndexing

uint32_t

maxPerStageDescriptorUpdateAfterBindStorageImages

descriptorIndexing

uint32_t

maxPerStageDescriptorUpdateAfterBindInputAttachments

descriptorIndexing

uint32_t

maxPerStageUpdateAfterBindResources

descriptorIndexing

uint32_t

maxDescriptorSetUpdateAfterBindSamplers

descriptorIndexing

uint32_t

maxDescriptorSetUpdateAfterBindUniformBuffers

descriptorIndexing

uint32_t

maxDescriptorSetUpdateAfterBindUniformBuffersDynamic

descriptorIndexing

uint32_t

maxDescriptorSetUpdateAfterBindStorageBuffers

descriptorIndexing

uint32_t

maxDescriptorSetUpdateAfterBindStorageBuffersDynamic

descriptorIndexing

uint32_t

maxDescriptorSetUpdateAfterBindSampledImages

descriptorIndexing

uint32_t

maxDescriptorSetUpdateAfterBindStorageImages

descriptorIndexing

uint32_t

maxDescriptorSetUpdateAfterBindInputAttachments

descriptorIndexing

uint32_t

maxVertexAttribDivisor

Vulkan 1.4, VK_KHR_vertex_attribute_divisor, VK_EXT_vertex_attribute_divisor

uint64_t

maxTimelineSemaphoreValueDifference

timelineSemaphore

uint32_t

lineSubPixelPrecisionBits

Vulkan 1.4, VK_KHR_line_rasterization, VK_EXT_line_rasterization

uint32_t

maxCustomBorderColorSamplers

VK_EXT_custom_border_color

VkDeviceSize

robustStorageBufferAccessSizeAlignment

VK_EXT_robustness2, VK_KHR_robustness2

VkDeviceSize

robustUniformBufferAccessSizeAlignment

VK_EXT_robustness2, VK_KHR_robustness2

2 × uint32_t

minFragmentShadingRateAttachmentTexelSize

attachmentFragmentShadingRate

2 × uint32_t

maxFragmentShadingRateAttachmentTexelSize

attachmentFragmentShadingRate

uint32_t

maxFragmentShadingRateAttachmentTexelSizeAspectRatio

attachmentFragmentShadingRate

VkBool32

primitiveFragmentShadingRateWithMultipleViewports

primitiveFragmentShadingRate

VkBool32

layeredShadingRateAttachments

attachmentFragmentShadingRate

VkBool32

fragmentShadingRateNonTrivialCombinerOps

pipelineFragmentShadingRate

2 × uint32_t

maxFragmentSize

pipelineFragmentShadingRate

uint32_t

maxFragmentSizeAspectRatio

pipelineFragmentShadingRate

uint32_t

maxFragmentShadingRateCoverageSamples

pipelineFragmentShadingRate

VkSampleCountFlagBits

maxFragmentShadingRateRasterizationSamples

pipelineFragmentShadingRate

VkBool32

fragmentShadingRateWithShaderDepthStencilWrites

pipelineFragmentShadingRate

VkBool32

fragmentShadingRateWithSampleMask

pipelineFragmentShadingRate

VkBool32

fragmentShadingRateWithShaderSampleMask

pipelineFragmentShadingRate

VkBool32

fragmentShadingRateWithConservativeRasterization

pipelineFragmentShadingRate

VkBool32

fragmentShadingRateWithFragmentShaderInterlock

pipelineFragmentShadingRate

VkBool32

fragmentShadingRateWithCustomSampleLocations

pipelineFragmentShadingRate

VkBool32

fragmentShadingRateStrictMultiplyCombiner

pipelineFragmentShadingRate

VkBool32

deviceNoDynamicHostAllocations

-

VkBool32

deviceDestroyFreesMemory

-

VkBool32

commandPoolMultipleCommandBuffersRecording

-

VkBool32

commandPoolResetCommandBuffer

-

VkBool32

commandBufferSimultaneousUse

-

VkBool32

secondaryCommandBufferNullOrImagelessFramebuffer

-

VkBool32

recycleDescriptorSetMemory

-

VkBool32

recyclePipelineMemory

-

uint32_t

maxRenderPassSubpasses

-

uint32_t

maxRenderPassDependencies

-

uint32_t

maxSubpassInputAttachments

-

uint32_t

maxSubpassPreserveAttachments

-

uint32_t

maxFramebufferAttachments

-

uint32_t

maxDescriptorSetLayoutBindings

-

uint32_t

maxQueryFaultCount

-

uint32_t

maxCallbackFaultCount

-

uint32_t

maxCommandPoolCommandBuffers

-

VkDeviceSize

maxCommandBufferSize

-

VkBool32

shaderSignedZeroInfNanPreserveFloat16

shaderFloat16

Table 2. Required Limits
Limit Unsupported Limit Supported Limit Limit Type1

maxImageDimension1D

-

4096 (Vulkan Core)
8192 (Vulkan Roadmap 2022, Vulkan 1.4)

min

maxImageDimension2D

-

4096 (Vulkan Core)
8192 (Vulkan Roadmap 2022, Vulkan 1.4)

min

maxImageDimension3D

-

256 (Vulkan Core)
512 (Vulkan 1.4)

min

maxImageDimensionCube

-

4096 (Vulkan Core)
8192 (Vulkan Roadmap 2022, Vulkan 1.4)

min

maxImageArrayLayers

-

256 (Vulkan Core)
2048 (Vulkan Roadmap 2022, Vulkan 1.4)

min

maxTexelBufferElements

-

65536

min

maxUniformBufferRange

-

16384 (Vulkan Core)
65536 (Vulkan Roadmap 2022, Vulkan 1.4)

min

maxStorageBufferRange

-

227

min

maxPushConstantsSize

-

128 (Vulkan Core)
256 (Vulkan 1.4)

min

maxMemoryAllocationCount

-

4096

min

maxSamplerAllocationCount

-

4000

min

bufferImageGranularity

-

131072 (Vulkan Core)
4096 (Vulkan Roadmap 2022, Vulkan 1.4)

max

sparseAddressSpaceSize

0

231

min

maxBoundDescriptorSets

-

4 (Vulkan Core)
7 (Vulkan Roadmap 2024, Vulkan 1.4)

min

maxPerStageDescriptorSamplers

-

16

min

maxPerStageDescriptorUniformBuffers

-

12 (Vulkan Core)
15 (Vulkan Roadmap 2022, Vulkan 1.4)

min

maxPerStageDescriptorStorageBuffers

-

4 (Vulkan Core)
30 (Vulkan Roadmap 2022)

min

maxPerStageDescriptorSampledImages

-

16 (Vulkan Core)
200 (Vulkan Roadmap 2022)

min

maxPerStageDescriptorStorageImages

-

4 (Vulkan Core)
144 (Vulkan Roadmap 2022)

min

maxPerStageDescriptorInputAttachments

-

4

min

maxPerStageResources

-

128 2 (Vulkan Core)
200 (Vulkan Roadmap 2022, Vulkan 1.4)

min

maxDescriptorSetSamplers

-

96 8 (Vulkan Core)
576 (Vulkan Roadmap 2022)

min, n × PerStage

maxDescriptorSetUniformBuffers

-

72 8 (Vulkan Core)
90 (Vulkan Roadmap 2022, Vulkan 1.4)

min, n × PerStage

maxDescriptorSetUniformBuffersDynamic

-

8

min

maxDescriptorSetStorageBuffers

-

24 8 (Vulkan Core)
96 (Vulkan Roadmap 2022, Vulkan 1.4)

min, n × PerStage

maxDescriptorSetStorageBuffersDynamic

-

4

min

maxDescriptorSetSampledImages

-

96 8 (Vulkan Core)
1800 (Vulkan Roadmap 2022)

min, n × PerStage

maxDescriptorSetStorageImages

-

24 8 (Vulkan Core)
144 (Vulkan Roadmap 2022, Vulkan 1.4)

min, n × PerStage

maxDescriptorSetInputAttachments

-

4

min

maxVertexInputAttributes

-

16

min

maxVertexInputBindings

-

16

min

maxVertexInputAttributeOffset

-

2047

min

maxVertexInputBindingStride

-

2048

min

maxVertexOutputComponents

-

64

min

maxTessellationGenerationLevel

0

64

min

maxTessellationPatchSize

0

32

min

maxTessellationControlPerVertexInputComponents

0

64

min

maxTessellationControlPerVertexOutputComponents

0

64

min

maxTessellationControlPerPatchOutputComponents

0

120

min

maxTessellationControlTotalOutputComponents

0

2048

min

maxTessellationEvaluationInputComponents

0

64

min

maxTessellationEvaluationOutputComponents

0

64

min

maxGeometryShaderInvocations

0

32

min

maxGeometryInputComponents

0

64

min

maxGeometryOutputComponents

0

64

min

maxGeometryOutputVertices

0

256

min

maxGeometryTotalOutputComponents

0

1024

min

maxFragmentInputComponents

-

64

min

maxFragmentOutputAttachments

-

4

min

maxFragmentDualSrcAttachments

0

1

min

maxFragmentCombinedOutputResources

-

4 (Vulkan Core)
16 (Vulkan Roadmap 2022, Vulkan 1.4)

min

maxComputeSharedMemorySize

-

16384

min

maxComputeWorkGroupCount

-

(65535,65535,65535)

min

maxComputeWorkGroupInvocations

-

128 (Vulkan Core)
256 (Vulkan Roadmap 2022, Vulkan 1.4)

min

maxComputeWorkGroupSize

-

(128,128,64) (Vulkan Core)
(256,256,64) (Vulkan Roadmap 2022, Vulkan 1.4)

min

subgroupSize

-

1/4 (Vulkan Core)
4 (Vulkan Roadmap 2022)

min

subgroupSupportedStages

-

VK_SHADER_STAGE_COMPUTE_BIT (Vulkan Core)
VK_SHADER_STAGE_COMPUTE_BIT |
VK_SHADER_STAGE_FRAGMENT_BIT (Vulkan Roadmap 2022)

bitfield

subgroupSupportedOperations

-

VK_SUBGROUP_FEATURE_BASIC_BIT (Vulkan Core)
VK_SUBGROUP_FEATURE_BASIC_BIT |
VK_SUBGROUP_FEATURE_VOTE_BIT |
VK_SUBGROUP_FEATURE_ARITHMETIC_BIT |
VK_SUBGROUP_FEATURE_BALLOT_BIT |
VK_SUBGROUP_FEATURE_SHUFFLE_BIT |
VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT |
VK_SUBGROUP_FEATURE_QUAD_BIT (Vulkan Roadmap 2022)

bitfield

shaderSignedZeroInfNanPreserveFloat16

-

- (Vulkan Core)
VK_TRUE (Vulkan Roadmap 2022, Vulkan 1.4)

Boolean

shaderSignedZeroInfNanPreserveFloat32

-

- (Vulkan Core)
VK_TRUE (Vulkan Roadmap 2022, Vulkan 1.4)

Boolean

shaderRoundingModeRTEFloat16

-

VK_FALSE (Vulkan Core)
VK_TRUE (Vulkan Roadmap 2024)

Boolean

shaderRoundingModeRTEFloat32

-

VK_FALSE (Vulkan Core)
VK_TRUE (Vulkan Roadmap 2024)

Boolean

maxSubgroupSize

-

- (Vulkan Core)
4 (Vulkan Roadmap 2022)

min

subPixelPrecisionBits

-

4

min

subTexelPrecisionBits

-

4 (Vulkan Core)
8 (Vulkan Roadmap 2022, Vulkan 1.4)

min

mipmapPrecisionBits

-

4 (Vulkan Core)
6 (Vulkan Roadmap 2022, Vulkan 1.4)

min

maxDrawIndexedIndexValue

224-1

232-1

min

maxDrawIndirectCount

1

216-1

min

maxSamplerLodBias

-

2 (Vulkan Core)
14 (Vulkan Roadmap 2022, Vulkan 1.4)

min

maxSamplerAnisotropy

1

16

min

maxViewports

1

16

min

maxViewportDimensions 3

-

(4096,4096) (Vulkan Core)
(7680,7680) (Vulkan 1.4)

min

viewportBoundsRange 4

-

(-8192,8191) (Vulkan Core)
(-15360,15359) (Vulkan 1.4)

(max,min)

viewportSubPixelBits

-

0

min

minMemoryMapAlignment

-

64

min

minTexelBufferOffsetAlignment

-

256

max

minUniformBufferOffsetAlignment

-

256

max

minStorageBufferOffsetAlignment

-

256

max

minTexelOffset

-

-8

max

maxTexelOffset

-

7

min

minTexelGatherOffset

0

-8

max

maxTexelGatherOffset

0

7

min

minInterpolationOffset

0.0

-0.5 5

max

maxInterpolationOffset

0.0

0.5 - (1 ULP) 5

min

subPixelInterpolationOffsetBits

0

4 5

min

maxFramebufferWidth

-

4096 (Vulkan Core)
7680 (Vulkan 1.4)

min

maxFramebufferHeight

-

4096 (Vulkan Core)
7680 (Vulkan 1.4)

min

maxFramebufferLayers

1

256

min

framebufferColorSampleCounts

-

(VK_SAMPLE_COUNT_1_BIT | VK_SAMPLE_COUNT_4_BIT)

min

framebufferIntegerColorSampleCounts

-

(VK_SAMPLE_COUNT_1_BIT)

min

framebufferDepthSampleCounts

-

(VK_SAMPLE_COUNT_1_BIT | VK_SAMPLE_COUNT_4_BIT)

min

framebufferStencilSampleCounts

-

(VK_SAMPLE_COUNT_1_BIT | VK_SAMPLE_COUNT_4_BIT)

min

framebufferNoAttachmentsSampleCounts

-

(VK_SAMPLE_COUNT_1_BIT | VK_SAMPLE_COUNT_4_BIT)

min

maxColorAttachments

-

4 (Vulkan Core)
7 (Vulkan Roadmap 2022)
8 (Vulkan Roadmap 2024, Vulkan 1.4)

min

sampledImageColorSampleCounts

-

(VK_SAMPLE_COUNT_1_BIT | VK_SAMPLE_COUNT_4_BIT)

min

sampledImageIntegerSampleCounts

-

VK_SAMPLE_COUNT_1_BIT

min

sampledImageDepthSampleCounts

-

(VK_SAMPLE_COUNT_1_BIT | VK_SAMPLE_COUNT_4_BIT)

min

sampledImageStencilSampleCounts

-

(VK_SAMPLE_COUNT_1_BIT | VK_SAMPLE_COUNT_4_BIT)

min

storageImageSampleCounts

VK_SAMPLE_COUNT_1_BIT

(VK_SAMPLE_COUNT_1_BIT | VK_SAMPLE_COUNT_4_BIT)

min

maxSampleMaskWords

-

1

min

timestampComputeAndGraphics

-

- (Vulkan Core)
VK_TRUE (Vulkan Roadmap 2024, Vulkan 1.4)

Boolean

timestampPeriod

-

-

duration

maxClipDistances

0

8

min

maxCullDistances

0

8

min

maxCombinedClipAndCullDistances

0

8

min

discreteQueuePriorities

-

2

min

pointSizeRange

(1.0,1.0)

(1.0,64.0 - ULP) 6 (Vulkan Core)
(1.0,256.0 - pointSizeGranularity) (Vulkan 1.4)

(max,min)

lineWidthRange

(1.0,1.0)

(1.0,8.0 - ULP) 7

(max,min)

pointSizeGranularity

0.0

1.0 6 (Vulkan Core)
0.125 (Vulkan Roadmap 2022, Vulkan 1.4)

max, fixed point increment

lineWidthGranularity

0.0

1.0 7 (Vulkan Core)
0.5 (Vulkan Roadmap 2022, Vulkan 1.4)

max, fixed point increment

strictLines

-

-

implementation-dependent

standardSampleLocations

-

- (Vulkan Core)
VK_TRUE (Vulkan Roadmap 2022, Vulkan 1.4)

Boolean

optimalBufferCopyOffsetAlignment

-

-

recommendation

optimalBufferCopyRowPitchAlignment

-

-

recommendation

nonCoherentAtomSize

-

256

max

maxMultiviewViewCount

-

6

min

maxMultiviewInstanceIndex

-

227-1

min

maxDiscardRectangles

0

4

min

sampleLocationSampleCounts

-

VK_SAMPLE_COUNT_4_BIT

min

maxSampleLocationGridSize

-

(1,1)

min

sampleLocationCoordinateRange

-

(0.0, 0.9375)

(max,min)

sampleLocationSubPixelBits

-

4

min

variableSampleLocations

-

VK_FALSE

implementation-dependent

minImportedHostPointerAlignment

-

65536

max

filterMinmaxSingleComponentFormats

-

-

implementation-dependent

filterMinmaxImageComponentMapping

-

-

implementation-dependent

advancedBlendMaxColorAttachments

-

1

min

advancedBlendIndependentBlend

-

VK_FALSE

implementation-dependent

advancedBlendNonPremultipliedSrcColor

-

VK_FALSE

implementation-dependent

advancedBlendNonPremultipliedDstColor

-

VK_FALSE

implementation-dependent

advancedBlendCorrelatedOverlap

-

VK_FALSE

implementation-dependent

advancedBlendAllOperations

-

VK_FALSE

implementation-dependent

maxPerSetDescriptors

-

1024

min

maxMemoryAllocationSize

-

230

min

primitiveOverestimationSize

-

0.0

min

maxExtraPrimitiveOverestimationSize

-

0.0

min

extraPrimitiveOverestimationSizeGranularity

-

0.0

min

primitiveUnderestimation

-

VK_FALSE

implementation-dependent

conservativePointAndLineRasterization

-

VK_FALSE

implementation-dependent

degenerateTrianglesRasterized

-

VK_FALSE

implementation-dependent

degenerateLinesRasterized

-

VK_FALSE

implementation-dependent

fullyCoveredFragmentShaderInputVariable

-

VK_FALSE

implementation-dependent

conservativeRasterizationPostDepthCoverage

-

VK_FALSE

implementation-dependent

maxUpdateAfterBindDescriptorsInAllPools

0

500000

min

shaderUniformBufferArrayNonUniformIndexingNative

-

VK_FALSE

implementation-dependent

shaderSampledImageArrayNonUniformIndexingNative

-

VK_FALSE

implementation-dependent

shaderStorageBufferArrayNonUniformIndexingNative

-

VK_FALSE

implementation-dependent

shaderStorageImageArrayNonUniformIndexingNative

-

VK_FALSE

implementation-dependent

shaderInputAttachmentArrayNonUniformIndexingNative

-

VK_FALSE

implementation-dependent

maxPerStageDescriptorUpdateAfterBindSamplers

0 9

500000 9

min

maxPerStageDescriptorUpdateAfterBindUniformBuffers

0 9

12 9

min

maxPerStageDescriptorUpdateAfterBindStorageBuffers

0 9

500000 9

min

maxPerStageDescriptorUpdateAfterBindSampledImages

0 9

500000 9

min

maxPerStageDescriptorUpdateAfterBindStorageImages

0 9

500000 9

min

maxPerStageDescriptorUpdateAfterBindInputAttachments

0 9

4 9 (Vulkan Core)
7 (Vulkan Roadmap 2022)

min

maxPerStageUpdateAfterBindResources

0 9

500000 9

min

maxDescriptorSetUpdateAfterBindSamplers

0 9

500000 9

min

maxDescriptorSetUpdateAfterBindUniformBuffers

0 9

72 8 9

min, n × PerStage

maxDescriptorSetUpdateAfterBindUniformBuffersDynamic

0 9

8 9

min

maxDescriptorSetUpdateAfterBindStorageBuffers

0 9

500000 9

min

maxDescriptorSetUpdateAfterBindStorageBuffersDynamic

0 9

4 9

min

maxDescriptorSetUpdateAfterBindSampledImages

0 9

500000 9

min

maxDescriptorSetUpdateAfterBindStorageImages

0 9

500000 9

min

maxDescriptorSetUpdateAfterBindInputAttachments

0 9

4 9

min

maxVertexAttribDivisor

-

216-1

min

maxTimelineSemaphoreValueDifference

-

231-1

min

lineSubPixelPrecisionBits

-

4

min

maxCustomBorderColorSamplers

-

32

min

robustStorageBufferAccessSizeAlignment

-

4

max

robustUniformBufferAccessSizeAlignment

-

256

max

minFragmentShadingRateAttachmentTexelSize

(0,0)

(32,32)

max

maxFragmentShadingRateAttachmentTexelSize

(0,0)

(8,8)

min

maxFragmentShadingRateAttachmentTexelSizeAspectRatio

0

1

min

primitiveFragmentShadingRateWithMultipleViewports

VK_FALSE

VK_FALSE

implementation-dependent

layeredShadingRateAttachments

VK_FALSE

VK_FALSE

implementation-dependent

fragmentShadingRateNonTrivialCombinerOps

-

VK_FALSE

implementation-dependent

maxFragmentSize

-

(2,2)

min

maxFragmentSizeAspectRatio

-

2

min

maxFragmentShadingRateCoverageSamples

-

16

min

maxFragmentShadingRateRasterizationSamples

-

VK_SAMPLE_COUNT_4_BIT

min

fragmentShadingRateWithShaderDepthStencilWrites

-

VK_FALSE

implementation-dependent

fragmentShadingRateWithSampleMask

-

VK_FALSE

implementation-dependent

fragmentShadingRateWithShaderSampleMask

-

VK_FALSE

implementation-dependent

fragmentShadingRateWithConservativeRasterization

-

VK_FALSE

implementation-dependent

fragmentShadingRateWithFragmentShaderInterlock

-

VK_FALSE

implementation-dependent

fragmentShadingRateWithCustomSampleLocations

-

VK_FALSE

implementation-dependent

fragmentShadingRateStrictMultiplyCombiner

-

VK_FALSE

implementation-dependent

deviceNoDynamicHostAllocations

-

-

implementation-dependent

deviceDestroyFreesMemory

-

-

implementation-dependent

commandPoolMultipleCommandBuffersRecording

-

-

implementation-dependent

commandPoolResetCommandBuffer

-

-

implementation-dependent

commandBufferSimultaneousUse

-

-

implementation-dependent

secondaryCommandBufferNullOrImagelessFramebuffer

-

-

implementation-dependent

recycleDescriptorSetMemory

-

-

implementation-dependent

recyclePipelineMemory

-

-

implementation-dependent

maxRenderPassSubpasses

-

1

min

maxRenderPassDependencies

-

18

min

maxSubpassInputAttachments

-

0

min

maxSubpassPreserveAttachments

-

0

min

maxFramebufferAttachments

-

9 11

min

maxDescriptorSetLayoutBindings

-

64

min

maxQueryFaultCount

-

16

min

maxCallbackFaultCount

-

1

min

maxCommandPoolCommandBuffers

-

256

min

maxCommandBufferSize

-

220

min

1

The Limit Type column specifies the limit is either the minimum limit all implementations must support, the maximum limit all implementations must support, or the exact value all implementations must support. For bitmasks a minimum limit is the least bits all implementations must set, but they may have additional bits set beyond this minimum.

2

The maxPerStageResources must be at least the smallest of the following:

  • the sum of the maxPerStageDescriptorUniformBuffers, maxPerStageDescriptorStorageBuffers, maxPerStageDescriptorSampledImages, maxPerStageDescriptorStorageImages, maxPerStageDescriptorInputAttachments, maxColorAttachments limits, or

  • 128.

    It may not be possible to reach this limit in every stage.

3

See maxViewportDimensions for the required relationship to other limits.

4

See viewportBoundsRange for the required relationship to other limits.

5

The values minInterpolationOffset and maxInterpolationOffset describe the closed interval of supported interpolation offsets: [minInterpolationOffset, maxInterpolationOffset]. The ULP is determined by subPixelInterpolationOffsetBits. If subPixelInterpolationOffsetBits is 4, this provides increments of (1/24) = 0.0625, and thus the range of supported interpolation offsets would be [-0.5, 0.4375].

6

The point size ULP is determined by pointSizeGranularity. If the pointSizeGranularity is 0.125, the range of supported point sizes must be at least [1.0, 63.875].

7

The line width ULP is determined by lineWidthGranularity. If the lineWidthGranularity is 0.0625, the range of supported line widths must be at least [1.0, 7.9375].

8

The minimum maxDescriptorSet* limit is n times the corresponding specification minimum maxPerStageDescriptor* limit, where n is the number of shader stages supported by the VkPhysicalDevice. If all shader stages are supported, n = 6 (vertex, tessellation control, tessellation evaluation, geometry, fragment, compute).

9

The UpdateAfterBind descriptor limits must each be greater than or equal to the corresponding non-UpdateAfterBind limit.

11

maxFramebufferAttachments must be greater than or equal to two times maxColorAttachments (for color and resolve attachments) plus one (for the depth/stencil attachment), or else must be equal to 232-1.

See Also

No cross-references are available

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