Additional Capabilities
This chapter describes additional capabilities beyond the minimum capabilities described in the Limits and Formats chapters, including:
- Additional Image Capabilities
- Additional Buffer Capabilities
- Optional Semaphore Capabilities
- Optional Fence Capabilities
- Timestamp Calibration Capabilities
Additional Image Capabilities
Additional image capabilities, such as larger dimensions or additional sample counts for certain image types, or additional capabilities for linear tiling format images, are described in this section.
To determine if cubic filtering can be used with a given image format and a
given image view type add a
VkPhysicalDeviceImageViewImageFormatInfoEXT structure to the
pNext chain of the VkPhysicalDeviceImageFormatInfo2 structure,
and a VkFilterCubicImageViewImageFormatPropertiesEXT structure to the
pNext chain of the VkImageFormatProperties2 structure.
Supported Sample Counts
vkGetPhysicalDeviceImageFormatProperties returns a bitmask of
VkSampleCountFlagBits in sampleCounts specifying the supported
sample counts for the image parameters.
sampleCounts will be VK_SAMPLE_COUNT_1_BIT if at least one of
the following conditions is true:
tilingisVK_IMAGE_TILING_LINEARtypeis notVK_IMAGE_TYPE_2DflagscontainsVK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT- Neither the
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BITflag nor theVK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BITflag inVkFormatProperties::optimalTilingFeaturesreturned by vkGetPhysicalDeviceFormatProperties is set - VkPhysicalDeviceExternalImageFormatInfo::
handleTypeis an external handle type for which multisampled image support is not required. formatis one of the formats that require a sampler Y′CBCR conversionusagecontainsVK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHRusagecontainsVK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
Otherwise, the bits set in sampleCounts will be the sample counts
supported for the specified values of usage and format.
For each bit set in usage, the supported sample counts relate to the
limits in VkPhysicalDeviceLimits as follows:
- If
usageincludesVK_IMAGE_USAGE_COLOR_ATTACHMENT_BITandformatis a floating- or fixed-point color format, a superset ofVkPhysicalDeviceLimits::framebufferColorSampleCounts - If
usageincludesVK_IMAGE_USAGE_COLOR_ATTACHMENT_BITandformatis an integer format, a superset ofVkPhysicalDeviceVulkan12Properties::framebufferIntegerColorSampleCounts - If
usageincludesVK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, andformatincludes a depth component, a superset ofVkPhysicalDeviceLimits::framebufferDepthSampleCounts - If
usageincludesVK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, andformatincludes a stencil component, a superset ofVkPhysicalDeviceLimits::framebufferStencilSampleCounts - If
usageincludesVK_IMAGE_USAGE_SAMPLED_BIT, andformatincludes a color component, a superset ofVkPhysicalDeviceLimits::sampledImageColorSampleCounts - If
usageincludesVK_IMAGE_USAGE_SAMPLED_BIT, andformatincludes a depth component, a superset ofVkPhysicalDeviceLimits::sampledImageDepthSampleCounts - If
usageincludesVK_IMAGE_USAGE_SAMPLED_BIT, andformatis an integer format, a superset ofVkPhysicalDeviceLimits::sampledImageIntegerSampleCounts - If
usageincludesVK_IMAGE_USAGE_STORAGE_BIT, a superset ofVkPhysicalDeviceLimits::storageImageSampleCounts
If multiple bits are set in usage, sampleCounts will be the
intersection of the per-usage values described above.
If none of the bits described above are set in usage, then there is no
corresponding limit in VkPhysicalDeviceLimits.
In this case, sampleCounts must include at least
VK_SAMPLE_COUNT_1_BIT.
Allowed Extent Values Based on Image Type
Implementations may support extent values larger than the required minimum/maximum values for certain types of images.
VkImageFormatProperties::maxExtent for each type is subject to
the constraints below.
For VK_IMAGE_TYPE_1D:
maxExtent.width≥ VkPhysicalDeviceLimits::maxImageDimension1DmaxExtent.height= 1maxExtent.depth= 1
For VK_IMAGE_TYPE_2D when flags does not contain
VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT:
maxExtent.width≥ VkPhysicalDeviceLimits::maxImageDimension2DmaxExtent.height≥ VkPhysicalDeviceLimits::maxImageDimension2DmaxExtent.depth= 1
For VK_IMAGE_TYPE_2D when flags contains
VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT:
maxExtent.width≥ VkPhysicalDeviceLimits::maxImageDimensionCubemaxExtent.height≥ VkPhysicalDeviceLimits::maxImageDimensionCubemaxExtent.depth= 1
For VK_IMAGE_TYPE_3D:
maxExtent.width≥ VkPhysicalDeviceLimits::maxImageDimension3DmaxExtent.height≥ VkPhysicalDeviceLimits::maxImageDimension3DmaxExtent.depth≥ VkPhysicalDeviceLimits::maxImageDimension3D