VkImageCreateInfo - Structure specifying the parameters of a newly
created image object
Valid values for some image creation parameters are limited by a
numerical upper bound or by inclusion in a bitset. For example,
ImageCreateInfo::arrayLayers is limited by
imageCreateMaxArrayLayers, defined below; and
ImageCreateInfo::samples is limited by imageCreateSampleCounts,
also defined below.
Several limiting values are defined below, as well as assisting values
from which the limiting values are derived. The limiting values are
referenced by the relevant valid usage statements of ImageCreateInfo.
If sharingMode is
SHARING_MODE_CONCURRENT,
pQueueFamilyIndices must be a valid pointer to an array of
queueFamilyIndexCount uint32_t values
If the
maintenance11
feature is enabled and sharingMode is
SHARING_MODE_CONCURRENT, then
queueFamilyIndexCount must be greater than 0
If the
maintenance11
feature is not enabled and sharingMode is
SHARING_MODE_CONCURRENT, then
queueFamilyIndexCount must be greater than 1
If sharingMode is
SHARING_MODE_CONCURRENT, each
element of pQueueFamilyIndices must be unique and must be less
than pQueueFamilyPropertyCount returned by either
getPhysicalDeviceQueueFamilyProperties
or
getPhysicalDeviceQueueFamilyProperties2
for the physicalDevice that was used to create device
If the pNext chain includes a
ExternalFormatANDROID
structure, and its externalFormat member is non-zero the format
must be FORMAT_UNDEFINED
If the pNext chain does not
include a
ExternalFormatANDROID
structure, or does and its externalFormat member is 0, the
format must not be FORMAT_UNDEFINED
extent.width must be
greater than 0
extent.height must be
greater than 0
extent.depth must be
greater than 0
mipLevels must be
greater than 0
arrayLayers must be
greater than 0
If flags contains
IMAGE_CREATE_CUBE_COMPATIBLE_BIT,
imageType must be IMAGE_TYPE_2D
If flags contains
IMAGE_CREATE_CUBE_COMPATIBLE_BIT,
extent.width and extent.height must be equal
If flags contains
IMAGE_CREATE_CUBE_COMPATIBLE_BIT,
arrayLayers must be greater than or equal to 6
If the
zeroInitializeDeviceMemory
feature is not enabled, initialLayout must not be
IMAGE_LAYOUT_ZERO_INITIALIZED_EXT
If flags contains
IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT,
imageType must be IMAGE_TYPE_2D
If flags contains
IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,
imageType must be IMAGE_TYPE_3D
If flags contains
IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,
flags must not include
IMAGE_CREATE_SPARSE_ALIASED_BIT,
IMAGE_CREATE_SPARSE_BINDING_BIT,
or
IMAGE_CREATE_SPARSE_RESIDENCY_BIT
If flags contains
IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT,
imageType must be IMAGE_TYPE_3D
If flags contains
IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT
and either the
maintenance9
feature is not enabled on the device or
image2DViewOf3DSparse
is FALSE , flags must not
include
IMAGE_CREATE_SPARSE_ALIASED_BIT,
IMAGE_CREATE_SPARSE_BINDING_BIT,
or
IMAGE_CREATE_SPARSE_RESIDENCY_BIT
extent.width must be less
than or equal to imageCreateMaxExtent.width (as defined in
Image Creation Limits)
extent.height must be less
than or equal to imageCreateMaxExtent.height (as defined in
Image Creation Limits)
extent.depth must be less
than or equal to imageCreateMaxExtent.depth (as defined in
Image Creation Limits)
If imageType is
IMAGE_TYPE_1D, both extent.height
and extent.depth must be 1
If imageType is
IMAGE_TYPE_2D, extent.depth must
be 1
mipLevels must be less
than or equal to the number of levels in the complete mipmap chain
based on extent.width, extent.height, and extent.depth
mipLevels must be less
than or equal to imageCreateMaxMipLevels (as defined in
Image Creation Limits)
arrayLayers must be
less than or equal to imageCreateMaxArrayLayers (as defined in
Image Creation Limits)
If imageType is
IMAGE_TYPE_3D, arrayLayers must
be 1
If samples is not
SAMPLE_COUNT_1_BIT, then
imageType must be IMAGE_TYPE_2D,
flags must not contain
IMAGE_CREATE_CUBE_COMPATIBLE_BIT,
mipLevels must be equal to 1, and imageCreateMaybeLinear (as
defined in
Image Creation Limits)
must be FALSE,
If samples is not
SAMPLE_COUNT_1_BIT,
usage must not contain
IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
If usage includes
IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,
then bits other than
IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
and
IMAGE_USAGE_INPUT_ATTACHMENT_BIT
must not be set
If usage includes
IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,
or
IMAGE_USAGE_INPUT_ATTACHMENT_BIT,
extent.width must be less than or equal to
PhysicalDeviceLimits::maxFramebufferWidth
If usage includes
IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,
or
IMAGE_USAGE_INPUT_ATTACHMENT_BIT,
extent.height must be less than or equal to
PhysicalDeviceLimits::maxFramebufferHeight
If the
fragmentDensityMapOffset
feature is not enabled and usage includes
IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT,
extent.width must be less than or equal to
\left\lceil{\frac{maxFramebufferWidth}{minFragmentDensityTexelSize_{width}}}\right\rceil
If the
fragmentDensityMapOffset
feature is not enabled and usage includes
IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT,
extent.height must be less than or equal to
\left\lceil{\frac{maxFramebufferHeight}{minFragmentDensityTexelSize_{height}}}\right\rceil
If usage includes
IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,
usage must also contain at least one of
IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
or
IMAGE_USAGE_INPUT_ATTACHMENT_BIT
samples must be a valid
SampleCountFlagBits value
that is set in imageCreateSampleCounts (as defined in
Image Creation Limits)
If the
shaderStorageImageMultisample
feature is not enabled, and usage contains
IMAGE_USAGE_STORAGE_BIT,
samples must be
SAMPLE_COUNT_1_BIT
If the
sparseBinding
feature is not enabled, flags must not contain
IMAGE_CREATE_SPARSE_BINDING_BIT
If the
sparseResidencyAliased
feature is not enabled, flags must not contain
IMAGE_CREATE_SPARSE_ALIASED_BIT
If tiling is
IMAGE_TILING_LINEAR, flags
must not contain
IMAGE_CREATE_SPARSE_RESIDENCY_BIT
If imageType is
IMAGE_TYPE_1D, flags must not
contain
IMAGE_CREATE_SPARSE_RESIDENCY_BIT
If the
sparseResidencyImage2D
feature is not enabled, and imageType is
IMAGE_TYPE_2D, flags must not
contain
IMAGE_CREATE_SPARSE_RESIDENCY_BIT
If the
sparseResidencyImage3D
feature is not enabled, and imageType is
IMAGE_TYPE_3D, flags must not
contain
IMAGE_CREATE_SPARSE_RESIDENCY_BIT
If the
sparseResidency2Samples
feature is not enabled, imageType is
IMAGE_TYPE_2D, and samples is
SAMPLE_COUNT_2_BIT,
flags must not contain
IMAGE_CREATE_SPARSE_RESIDENCY_BIT
If the
sparseResidency4Samples
feature is not enabled, imageType is
IMAGE_TYPE_2D, and samples is
SAMPLE_COUNT_4_BIT,
flags must not contain
IMAGE_CREATE_SPARSE_RESIDENCY_BIT
If the
sparseResidency8Samples
feature is not enabled, imageType is
IMAGE_TYPE_2D, and samples is
SAMPLE_COUNT_8_BIT,
flags must not contain
IMAGE_CREATE_SPARSE_RESIDENCY_BIT
If the
sparseResidency16Samples
feature is not enabled, imageType is
IMAGE_TYPE_2D, and samples is
SAMPLE_COUNT_16_BIT,
flags must not contain
IMAGE_CREATE_SPARSE_RESIDENCY_BIT
If flags contains
IMAGE_CREATE_SPARSE_RESIDENCY_BIT
or
IMAGE_CREATE_SPARSE_ALIASED_BIT,
it must also contain
IMAGE_CREATE_SPARSE_BINDING_BIT
If any of the bits
IMAGE_CREATE_SPARSE_BINDING_BIT,
IMAGE_CREATE_SPARSE_RESIDENCY_BIT,
or
IMAGE_CREATE_SPARSE_ALIASED_BIT
are set,
IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
must not also be set
If the
protectedMemory
feature is not enabled, flags must not contain
IMAGE_CREATE_PROTECTED_BIT
If any of the bits
IMAGE_CREATE_SPARSE_BINDING_BIT,
IMAGE_CREATE_SPARSE_RESIDENCY_BIT,
or
IMAGE_CREATE_SPARSE_ALIASED_BIT
are set,
IMAGE_CREATE_PROTECTED_BIT
must not also be set
If the pNext chain includes a
ExternalMemoryImageCreateInfoNV
structure, it must not contain a
ExternalMemoryImageCreateInfo
structure
If the pNext chain includes a
ExternalMemoryImageCreateInfo
structure, its handleTypes member must only contain bits that
are also in
ExternalImageFormatProperties::externalMemoryProperties.compatibleHandleTypes,
as returned by
getPhysicalDeviceImageFormatProperties2
with format, imageType, tiling, usage, and flags equal to
those in this structure, and with a
PhysicalDeviceExternalImageFormatInfo
structure included in the pNext chain, with a handleType equal
to any one of the handle types specified in
ExternalMemoryImageCreateInfo::handleTypes
If the pNext chain includes a
ExternalMemoryImageCreateInfoNV
structure, its handleTypes member must only contain bits that
are also in
ExternalImageFormatPropertiesNV::externalMemoryFeatures.compatibleHandleTypes,
as returned by
getPhysicalDeviceExternalImageFormatPropertiesNV
with format, imageType, tiling, usage, and flags equal to
those in this structure, and with externalHandleType equal to any
one of the handle types specified in
ExternalMemoryImageCreateInfoNV::handleTypes
If the logical
device was created with
DeviceGroupDeviceCreateInfo::physicalDeviceCount
equal to 1, flags must not contain
IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT
If flags contains
IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT,
then mipLevels must be one, arrayLayers must be one,
imageType must be IMAGE_TYPE_2D,
and imageCreateMaybeLinear (as defined in
Image Creation Limits)
must be FALSE
If flags contains
IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,
then format must be a
compressed image format
If flags contains
IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,
then flags must also contain
IMAGE_CREATE_MUTABLE_FORMAT_BIT
initialLayout must
be IMAGE_LAYOUT_UNDEFINED or
IMAGE_LAYOUT_ZERO_INITIALIZED_EXT
or IMAGE_LAYOUT_PREINITIALIZED
If the pNext chain includes a
ExternalMemoryImageCreateInfo
or
ExternalMemoryImageCreateInfoNV
structure whose handleTypes member is not 0, initialLayout
must be IMAGE_LAYOUT_UNDEFINED
If the image format is one
of the
formats that require a sampler Y′CBCR conversion,
mipLevels must be 1
If the image format is one
of the
formats that require a sampler Y′CBCR conversion,
samples must be
SAMPLE_COUNT_1_BIT
If the image format is one
of the
formats that require a sampler Y′CBCR conversion,
imageType must be IMAGE_TYPE_2D
If format
is a multi-planar format, and if imageCreateFormatFeatures (as
defined in
Image Creation Limits)
does not contain
FORMAT_FEATURE_DISJOINT_BIT,
then flags must not contain
IMAGE_CREATE_DISJOINT_BIT
If format is not a
multi-planar format, and flags does not include
IMAGE_CREATE_ALIAS_BIT,
flags must not contain
IMAGE_CREATE_DISJOINT_BIT
If format has a _422 or
_420 suffix, extent.width must be a multiple of 2
If format has a _420
suffix, extent.height must be a multiple of 2
If format is one of the
VK_FORMAT_PVRTC1_*_IMG formats, extent.width must be a power
of 2
If format is one of the
VK_FORMAT_PVRTC1_*_IMG formats, extent.height must be a power
of 2
If tiling is
IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT,
then the pNext chain must include exactly one of
ImageDrmFormatModifierListCreateInfoEXT
or
ImageDrmFormatModifierExplicitCreateInfoEXT
structures
If the pNext chain includes a
ImageDrmFormatModifierListCreateInfoEXT
or
ImageDrmFormatModifierExplicitCreateInfoEXT
structure, then tiling must be
IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
If tiling is
IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
and flags contains
IMAGE_CREATE_MUTABLE_FORMAT_BIT,
then the pNext chain must include a
ImageFormatListCreateInfo
structure with non-zero viewFormatCount
If flags contains
IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
format must be a depth or depth/stencil format
If the pNext chain includes a
ExternalMemoryImageCreateInfo
structure whose handleTypes member includes
EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID,
imageType must be IMAGE_TYPE_2D
If the pNext chain includes a
ExternalMemoryImageCreateInfo
structure whose handleTypes member includes
EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID,
mipLevels must either be 1 or equal to the number of levels in
the complete mipmap chain based on extent.width, extent.height,
and extent.depth
If the pNext chain includes a
ExternalFormatANDROID
structure whose externalFormat member is not 0, flags must
not include
IMAGE_CREATE_MUTABLE_FORMAT_BIT
If the pNext chain includes a
ExternalFormatANDROID
structure whose externalFormat member is not 0, usage must
not include any usages except
IMAGE_USAGE_INPUT_ATTACHMENT_BIT,
IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
or IMAGE_USAGE_SAMPLED_BIT
If the pNext chain includes a
ExternalFormatANDROID
structure whose externalFormat member is not 0, and
externalFormatResolve
feature is not enabled, usage must not include
IMAGE_USAGE_INPUT_ATTACHMENT_BIT
or
IMAGE_USAGE_COLOR_ATTACHMENT_BIT
If the pNext chain includes a
ExternalFormatANDROID
structure whose externalFormat member is not 0, tiling must
be IMAGE_TILING_OPTIMAL
If the pNext chain includes a
ExternalMemoryImageCreateInfo
structure whose handleTypes member includes
EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX,
imageType must be IMAGE_TYPE_2D
If the pNext chain includes a
ExternalMemoryImageCreateInfo
structure whose handleTypes member includes
EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX,
mipLevels must either be 1 or equal to the number of levels in
the complete mipmap chain based on extent.width, extent.height,
and extent.depth
If the pNext chain includes a
ExternalFormatQNX
structure whose externalFormat member is not 0, flags must
not include
IMAGE_CREATE_MUTABLE_FORMAT_BIT
If the pNext chain includes a
ExternalFormatQNX
structure whose externalFormat member is not 0, usage must
not include any usages except
IMAGE_USAGE_SAMPLED_BIT
If the pNext chain includes a
ExternalFormatQNX
structure whose externalFormat member is not 0, tiling must
be IMAGE_TILING_OPTIMAL
If format is a depth-stencil
format, usage includes
IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
and the pNext chain includes a
ImageStencilUsageCreateInfo
structure, then its
ImageStencilUsageCreateInfo::stencilUsage
member must also include
IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
If format is a depth-stencil
format, usage does not include
IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
and the pNext chain includes a
ImageStencilUsageCreateInfo
structure, then its
ImageStencilUsageCreateInfo::stencilUsage
member must also not include
IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
If format is a depth-stencil
format, usage includes
IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,
and the pNext chain includes a
ImageStencilUsageCreateInfo
structure, then its
ImageStencilUsageCreateInfo::stencilUsage
member must also include
IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
If format is a depth-stencil
format, usage does not include
IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,
and the pNext chain includes a
ImageStencilUsageCreateInfo
structure, then its
ImageStencilUsageCreateInfo::stencilUsage
member must also not include
IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
If
Format is a depth-stencil format and
the pNext chain includes a
ImageStencilUsageCreateInfo
structure with its stencilUsage member including
IMAGE_USAGE_INPUT_ATTACHMENT_BIT,
extent.width must be less than or equal to
PhysicalDeviceLimits::maxFramebufferWidth
If format is a depth-stencil
format and the pNext chain includes a
ImageStencilUsageCreateInfo
structure with its stencilUsage member including
IMAGE_USAGE_INPUT_ATTACHMENT_BIT,
extent.height must be less than or equal to
PhysicalDeviceLimits::maxFramebufferHeight
If the
shaderStorageImageMultisample
feature is not enabled, format is a depth-stencil format and the
pNext chain includes a
ImageStencilUsageCreateInfo
structure with its stencilUsage including
IMAGE_USAGE_STORAGE_BIT,
samples must be
SAMPLE_COUNT_1_BIT
If flags contains
IMAGE_CREATE_CORNER_SAMPLED_BIT_NV,
imageType must be IMAGE_TYPE_2D
or IMAGE_TYPE_3D
If flags contains
IMAGE_CREATE_CORNER_SAMPLED_BIT_NV,
it must not contain
IMAGE_CREATE_CUBE_COMPATIBLE_BIT
and the format must not be a depth/stencil format
If flags contains
IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
and imageType is IMAGE_TYPE_2D,
extent.width and extent.height must be greater than 1
If flags contains
IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
and imageType is IMAGE_TYPE_3D,
extent.width, extent.height, and extent.depth must be
greater than 1
If usage includes
IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,
imageType must be IMAGE_TYPE_2D
If usage includes
IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,
samples must be
SAMPLE_COUNT_1_BIT
If the
shadingRateImage
feature is enabled and usage includes
IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV,
tiling must be
IMAGE_TILING_OPTIMAL
If flags contains
IMAGE_CREATE_SUBSAMPLED_BIT_EXT,
tiling must be
IMAGE_TILING_OPTIMAL
If flags contains
IMAGE_CREATE_SUBSAMPLED_BIT_EXT,
imageType must be IMAGE_TYPE_2D
If flags contains
IMAGE_CREATE_SUBSAMPLED_BIT_EXT,
flags must not contain
IMAGE_CREATE_CUBE_COMPATIBLE_BIT
If flags contains
IMAGE_CREATE_SUBSAMPLED_BIT_EXT,
mipLevels must be 1
If usage includes
IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI,
tiling must be
IMAGE_TILING_LINEAR
If the
VK_KHR_portability_subset extension is enabled, and
PhysicalDevicePortabilitySubsetFeaturesKHR::imageView2DOn3DImage
is FALSE, flags must not
contain
IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
If the
VK_KHR_portability_subset extension is enabled, and
PhysicalDevicePortabilitySubsetFeaturesKHR::multisampleArrayImage
is FALSE, and samples is not
SAMPLE_COUNT_1_BIT, then
arrayLayers must be 1
If a
ImageFormatListCreateInfo
structure was included in the pNext chain and format is not a
multi-planar format
and
ImageFormatListCreateInfo::viewFormatCount
is not zero, then each format in
ImageFormatListCreateInfo::pViewFormats
must either be compatible with the format as described in the
compatibility table
or, if flags contains
IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,
be an uncompressed format that is
size-compatible
with format
If a
ImageFormatListCreateInfo
structure was included in the pNext chain and format is a
multi-planar format
and flags contains
IMAGE_CREATE_MUTABLE_FORMAT_BIT
and
ImageFormatListCreateInfo::viewFormatCount
is not zero, then each format in
ImageFormatListCreateInfo::pViewFormats
must be compatible with the Format
for the plane of the image format
If flags does not contain
IMAGE_CREATE_MUTABLE_FORMAT_BIT
and the pNext chain includes a
ImageFormatListCreateInfo
structure, then
ImageFormatListCreateInfo::viewFormatCount
must be 0 or 1
If usage includes
VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR,
VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR,
or
VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR,
and flags does not include
VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR,
then the pNext chain must include a
VkVideoProfileListInfoKHR
structure with profileCount greater than 0 and pProfiles
including at least one
VkVideoProfileInfoKHR
structure with a videoCodecOperation member specifying a decode
operation
If usage includes
VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR,
VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR,
or
VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR,
and flags does not include
VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR,
then the pNext chain must include a
VkVideoProfileListInfoKHR
structure with profileCount greater than 0 and pProfiles
including at least one
VkVideoProfileInfoKHR
structure with a videoCodecOperation member specifying an encode
operation
If flags includes
VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR,
then
videoMaintenance1
must be enabled
If flags includes
VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR
and usage does not include
VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR,
then usage must not include
VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR
If flags includes
VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR,
then usage must not include
VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR,
VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR,
or
VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR
If the pNext chain includes a
VkVideoProfileListInfoKHR
structure with profileCount greater than 0, then
supportedVideoFormat must be
TRUE
If the pNext chain includes a
VkVideoProfileListInfoKHR
structure and for any element of its pProfiles member
videoCodecOperation is
VK_VIDEO_CODEC_OPERATION_DECODE_VP9_BIT_KHR,
then the
videoDecodeVP9
feature must be enabled
If the pNext chain includes a
VkVideoProfileListInfoKHR
structure and for any element of its pProfiles member
videoCodecOperation is
VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR,
then the
videoEncodeAV1
feature must be enabled
If the pNext chain includes a
VkVideoEncodeProfileRgbConversionInfoVALVE
structure, then the
videoEncodeRgbConversion
feature must be enabled
If usage includes
VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR
or
VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR,
then the
videoEncodeQuantizationMap
feature must be enabled
If usage includes
VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR
or
VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR,
imageType must be IMAGE_TYPE_2D
If usage includes
VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR
or
VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR,
samples must be
SAMPLE_COUNT_1_BIT
If usage includes
VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR
or
VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR,
then the pNext chain must include a
VkVideoProfileListInfoKHR
structure with profileCount equal to 1 and pProfiles pointing
to a
VkVideoProfileInfoKHR
structure with a videoCodecOperation member specifying an encode
operation
If usage includes
VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR,
then
VkVideoEncodeCapabilitiesKHR::flags
must include
VK_VIDEO_ENCODE_CAPABILITY_QUANTIZATION_DELTA_MAP_BIT_KHR,
as returned by
vkGetPhysicalDeviceVideoCapabilitiesKHR
for the video profile specified in the pProfiles member of the
VkVideoProfileListInfoKHR
structure included in the pNext chain
If usage includes
VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR,
then
VkVideoEncodeCapabilitiesKHR::flags
must include
VK_VIDEO_ENCODE_CAPABILITY_EMPHASIS_MAP_BIT_KHR,
as returned by
vkGetPhysicalDeviceVideoCapabilitiesKHR
for the video profile specified in the pProfiles member of the
VkVideoProfileListInfoKHR
structure included in the pNext chain
If usage includes
VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR
or
VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR,
extent.width must be less than or equal to
VkVideoEncodeQuantizationMapCapabilitiesKHR::maxQuantizationMapExtent.width,
as returned by
vkGetPhysicalDeviceVideoCapabilitiesKHR
for the video profile specified in the pProfiles member of the
VkVideoProfileListInfoKHR
structure included in the pNext chain
If usage includes
VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR
or
VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR,
extent.height must be less than or equal to
VkVideoEncodeQuantizationMapCapabilitiesKHR::maxQuantizationMapExtent.height,
as returned by
vkGetPhysicalDeviceVideoCapabilitiesKHR
for the video profile specified in the pProfiles member of the
VkVideoProfileListInfoKHR
structure included in the pNext chain
If the
Image is to be used to import memory from a
BufferCollectionFUCHSIA, a
BufferCollectionImageCreateInfoFUCHSIA
structure must be chained to pNext
If
the
multisampledRenderToSingleSampled
feature is not enabled, flags must not contain
IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT
If flags contains
IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT,
samples must be
SAMPLE_COUNT_1_BIT
If the pNext chain includes a
ImageCompressionControlEXT
structure, format is a
multi-planar format,
and
ImageCompressionControlEXT::flags
includes
IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT,
then
ImageCompressionControlEXT::compressionControlPlaneCount
must be equal to the number of planes in format
If the pNext chain includes a
ImageCompressionControlEXT
structure, format is not a
multi-planar format,
and
ImageCompressionControlEXT::flags
includes
IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT,
then
ImageCompressionControlEXT::compressionControlPlaneCount
must be 1
If the pNext chain includes a
ImageCompressionControlEXT
structure, it must not contain a
ImageDrmFormatModifierExplicitCreateInfoEXT
structure
If flags includes
IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT,
the
descriptorBufferCaptureReplay
or
descriptorHeapCaptureReplay
feature must be enabled
If the pNext chain includes a
OpaqueCaptureDescriptorDataCreateInfoEXT
structure, flags must contain
IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT
If the pNext chain includes a
ExportMetalObjectCreateInfoEXT
structure, its exportObjectType member must be either
EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT
or
EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT
If the pNext chain includes a
ImportMetalTextureInfoEXT
structure its plane member must be
IMAGE_ASPECT_PLANE_0_BIT,
IMAGE_ASPECT_PLANE_1_BIT,
or
IMAGE_ASPECT_PLANE_2_BIT
If the pNext chain includes a
ImportMetalTextureInfoEXT
structure and the image does not have a
multi-planar format,
then
ImportMetalTextureInfoEXT::plane
must be
IMAGE_ASPECT_PLANE_0_BIT
If the pNext chain includes a
ImportMetalTextureInfoEXT
structure and the image has a
multi-planar format
with only two planes, then
ImportMetalTextureInfoEXT::plane
must not be
IMAGE_ASPECT_PLANE_2_BIT
If
imageCreateFormatFeatures (as defined in
Image Creation Limits)
does not contain
FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT,
then usage must not contain
IMAGE_USAGE_HOST_TRANSFER_BIT
If usage includes
IMAGE_USAGE_HOST_TRANSFER_BIT,
then the
hostImageCopy
feature must be enabled
If the
tileMemoryHeap
feature is not enabled, usage must not include
IMAGE_USAGE_TILE_MEMORY_BIT_QCOM
If the pNext chain contains a
ImageAlignmentControlCreateInfoMESA
structure, tiling must be
IMAGE_TILING_OPTIMAL
If the pNext chain contains a
ImageAlignmentControlCreateInfoMESA
structure, it must not contain a
ExternalMemoryImageCreateInfo
structure
If tiling is
VK_IMAGE_TILING_LINEAR then
IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM
must not be set in usage
If flags contains
IMAGE_CREATE_ALIAS_SINGLE_LAYER_DESCRIPTOR_BIT_KHR,
the
maintenance11
feature must be enabled
If flags contains
IMAGE_CREATE_ALIAS_SINGLE_LAYER_DESCRIPTOR_BIT_KHR,
imageType must be IMAGE_TYPE_1D
or IMAGE_TYPE_2D
If Vulkan 1.3 is not supported
and the
ycbcr2plane444Formats
feature is not enabled, format must not be
FORMAT_G8_B8R8_2PLANE_444_UNORM,
FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16,
FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16,
or FORMAT_G16_B16R16_2PLANE_444_UNORM
If
OpaqueCaptureDataCreateInfoEXT::pData
is not NULL, flags must contain
IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT
If flags contains
IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT,
and
OpaqueCaptureDataCreateInfoEXT::pData
is not NULL,
OpaqueCaptureDataCreateInfoEXT::pData->size
must be equal to
imageCaptureReplayOpaqueDataSize