VkImageFormatProperties
The VkImageFormatProperties structure is defined as:
typedef struct VkImageFormatProperties {
VkExtent3D maxExtent;
uint32_t maxMipLevels;
uint32_t maxArrayLayers;
VkSampleCountFlags sampleCounts;
VkDeviceSize maxResourceSize;
} VkImageFormatProperties;
maxExtentare the maximum image dimensions. See the Allowed Extent Values section below for how these values are constrained bytype.maxMipLevelsis the maximum number of mipmap levels.maxMipLevelsmust be equal to the number of levels in the complete mipmap chain based on themaxExtent.width,maxExtent.height, andmaxExtent.depth, except when one of the following conditions is true, in which case it may instead be1:vkGetPhysicalDeviceImageFormatProperties::tilingwasVK_IMAGE_TILING_LINEAR- VkPhysicalDeviceImageFormatInfo2::
tilingwasVK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT - the VkPhysicalDeviceImageFormatInfo2::
pNextchain included a VkPhysicalDeviceExternalImageFormatInfo structure with a handle type included in thehandleTypesmember for which mipmap image support is not required - image
formatis one of the formats that require a sampler Y′CBCR conversion flagscontainsVK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
maxArrayLayersis the maximum number of array layers.maxArrayLayersmust be no less than VkPhysicalDeviceLimits::maxImageArrayLayers, except when one of the following conditions is true, in which case it may instead be1:tilingisVK_IMAGE_TILING_LINEARtilingisVK_IMAGE_TILING_OPTIMALandtypeisVK_IMAGE_TYPE_3Dformatis one of the formats that require a sampler Y′CBCR conversion
- If
tilingisVK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, thenmaxArrayLayersmust not be 0. sampleCountsis a bitmask of VkSampleCountFlagBits specifying all the supported sample counts for this image as described below.maxResourceSizeis an upper bound on the total image size in bytes, inclusive of all image subresources. Implementations may have an address space limit on total size of a resource, which is advertised by this property.maxResourceSizemust be at least 231.
There is no mechanism to query the size of an image before creating it, to
compare that size against maxResourceSize.
If an application attempts to create an image that exceeds this limit, the
creation will fail and vkCreateImage will return
VK_ERROR_OUT_OF_DEVICE_MEMORY.
While the advertised limit must be at least 231, it may not be possible
to create an image that approaches that size, particularly for
VK_IMAGE_TYPE_1D.
If the combination of parameters to
vkGetPhysicalDeviceImageFormatProperties is not supported by the
implementation for use in vkCreateImage, then all members of
VkImageFormatProperties will be filled with zero.
Filling VkImageFormatProperties with zero for unsupported formats is
an exception to the usual rule that output structures have undefined:
contents on error.
This exception was unintentional, but is preserved for backwards
compatibility.