VkImageCreateInfo
The VkImageCreateInfo structure is defined as:
typedef struct VkImageCreateInfo {
VkStructureType sType;
const void* pNext;
VkImageCreateFlags flags;
VkImageType imageType;
VkFormat format;
VkExtent3D extent;
uint32_t mipLevels;
uint32_t arrayLayers;
VkSampleCountFlagBits samples;
VkImageTiling tiling;
VkImageUsageFlags usage;
VkSharingMode sharingMode;
uint32_t queueFamilyIndexCount;
const uint32_t* pQueueFamilyIndices;
VkImageLayout initialLayout;
} VkImageCreateInfo;
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.flagsis a bitmask of VkImageCreateFlagBits describing additional parameters of the image.imageTypeis a VkImageType value specifying the basic dimensionality of the image. Layers in array textures do not count as a dimension for the purposes of the image type.formatis a VkFormat describing the format and type of the texel blocks that will be contained in the image.extentis a VkExtent3D describing the number of texels/pixels in each dimension of the base level.mipLevelsdescribes the number of levels of detail available for minified sampling of the image.arrayLayersis the number of layers in the image.samplesis a VkSampleCountFlagBits value specifying the number of samples per texel.tilingis a VkImageTiling value specifying the tiling arrangement of the texel blocks in memory.usageis a bitmask of VkImageUsageFlagBits describing the intended usage of the image.sharingModeis a VkSharingMode value specifying the sharing mode of the image when it will be accessed by multiple queue families.queueFamilyIndexCountis the number of entries in thepQueueFamilyIndicesarray.pQueueFamilyIndicesis a pointer to an array of queue families that will access this image. It is ignored ifsharingModeis notVK_SHARING_MODE_CONCURRENT.initialLayoutis a VkImageLayout value specifying the initial VkImageLayout of all image subresources of the image. See Image Layouts.
Images created with tiling equal to VK_IMAGE_TILING_LINEAR have
further restrictions on their limits and capabilities compared to images
created with tiling equal to VK_IMAGE_TILING_OPTIMAL.
Creation of images with tiling VK_IMAGE_TILING_LINEAR may not be
supported unless other parameters meet all of the constraints:
imageTypeisVK_IMAGE_TYPE_2Dformatis not a depth/stencil formatmipLevelsis 1arrayLayersis 1samplesisVK_SAMPLE_COUNT_1_BITusageonly includesVK_IMAGE_USAGE_TRANSFER_SRC_BITand/orVK_IMAGE_USAGE_TRANSFER_DST_BIT
Images created with one of the formats that require a sampler Y′CBCR conversion, have further restrictions on their limits and capabilities compared to images created with other formats. Creation of images with a format requiring Y′CBCR conversion may not be supported unless other parameters meet all of the constraints:
imageTypeisVK_IMAGE_TYPE_2DmipLevelsis 1arrayLayersis 1, unless theycbcrImageArraysfeature is enabled, or otherwise indicated by VkImageFormatProperties::maxArrayLayers, as returned by vkGetPhysicalDeviceImageFormatPropertiessamplesisVK_SAMPLE_COUNT_1_BIT
Implementations may support additional limits and capabilities beyond those listed above.
To determine the set of valid usage bits for a given format, call
vkGetPhysicalDeviceFormatProperties.
If the size of the resultant image would exceed maxResourceSize, then
vkCreateImage must fail and return
VK_ERROR_OUT_OF_DEVICE_MEMORY.
This failure may occur even when all image creation parameters satisfy
their valid usage requirements.
If the implementation reports VK_TRUE in
VkPhysicalDeviceHostImageCopyProperties::identicalMemoryTypeRequirements,
usage of VK_IMAGE_USAGE_HOST_TRANSFER_BIT must not affect the memory
type requirements of the image as described in
Sparse Resource Memory Requirements and
Resource Memory Association.
For images created without VK_IMAGE_CREATE_EXTENDED_USAGE_BIT a
usage bit is valid if it is supported for the format the image is
created with.
For images created with VK_IMAGE_CREATE_EXTENDED_USAGE_BIT a
usage bit is valid if it is supported for at least one of the formats
a VkImageView created from the image can have (see
Image Views for more detail).
Valid Usage
VUID-VkImageCreateInfo-imageCreateMaxMipLevels-02251
Each of the following values (as described in
Image Creation Limits) must not be
undefined: : imageCreateMaxMipLevels,
imageCreateMaxArrayLayers, imageCreateMaxExtent, and
imageCreateSampleCounts
VUID-VkImageCreateInfo-sharingMode-00941
If sharingMode is VK_SHARING_MODE_CONCURRENT,
pQueueFamilyIndices must be a valid pointer to an array of
queueFamilyIndexCount uint32_t values
VUID-VkImageCreateInfo-sharingMode-00942
If sharingMode is VK_SHARING_MODE_CONCURRENT,
queueFamilyIndexCount must be greater than 1
VUID-VkImageCreateInfo-sharingMode-01420
If sharingMode is VK_SHARING_MODE_CONCURRENT, each element
of pQueueFamilyIndices must be unique and must be less than
pQueueFamilyPropertyCount returned by either
vkGetPhysicalDeviceQueueFamilyProperties or
vkGetPhysicalDeviceQueueFamilyProperties2 for the
physicalDevice that was used to create device
VUID-VkImageCreateInfo-pNext-01974
If the pNext chain includes a VkExternalFormatANDROID
structure, and its externalFormat member is non-zero the
format must be VK_FORMAT_UNDEFINED
VUID-VkImageCreateInfo-pNext-01975
If the pNext chain does not include a
VkExternalFormatANDROID structure, or does and its
externalFormat member is 0, the format must not be
VK_FORMAT_UNDEFINED
VUID-VkImageCreateInfo-extent-00944
extent.width must be greater than 0
VUID-VkImageCreateInfo-extent-00945
extent.height must be greater than 0
VUID-VkImageCreateInfo-extent-00946
extent.depth must be greater than 0
VUID-VkImageCreateInfo-mipLevels-00947
mipLevels must be greater than 0
VUID-VkImageCreateInfo-arrayLayers-00948
arrayLayers must be greater than 0
VUID-VkImageCreateInfo-flags-00949
If flags contains VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,
imageType must be VK_IMAGE_TYPE_2D
VUID-VkImageCreateInfo-flags-08865
If flags contains VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,
extent.width and extent.height must be equal
VUID-VkImageCreateInfo-flags-08866
If flags contains VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,
arrayLayers must be greater than or equal to 6
VUID-VkImageCreateInfo-flags-02557
If flags contains
VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT, imageType must
be VK_IMAGE_TYPE_2D
VUID-VkImageCreateInfo-flags-00950
If flags contains VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,
imageType must be VK_IMAGE_TYPE_3D
VUID-VkImageCreateInfo-flags-09403
If flags contains VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,
flags must not include VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,
VK_IMAGE_CREATE_SPARSE_BINDING_BIT, or
VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
VUID-VkImageCreateInfo-flags-07755
If flags contains
VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT, imageType must
be VK_IMAGE_TYPE_3D
VUID-VkImageCreateInfo-imageType-10197
If flags contains
VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT, flags must not
include VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,
VK_IMAGE_CREATE_SPARSE_BINDING_BIT, or
VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
VUID-VkImageCreateInfo-extent-02252
extent.width must be less than or equal to
imageCreateMaxExtent.width (as defined in
Image Creation Limits)
VUID-VkImageCreateInfo-extent-02253
extent.height must be less than or equal to
imageCreateMaxExtent.height (as defined in
Image Creation Limits)
VUID-VkImageCreateInfo-extent-02254
extent.depth must be less than or equal to
imageCreateMaxExtent.depth (as defined in
Image Creation Limits)
VUID-VkImageCreateInfo-imageType-00956
If imageType is VK_IMAGE_TYPE_1D, both extent.height
and extent.depth must be 1
VUID-VkImageCreateInfo-imageType-00957
If imageType is VK_IMAGE_TYPE_2D, extent.depth must
be 1
VUID-VkImageCreateInfo-mipLevels-00958
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
VUID-VkImageCreateInfo-mipLevels-02255
mipLevels must be less than or equal to
imageCreateMaxMipLevels (as defined in
Image Creation Limits)
VUID-VkImageCreateInfo-arrayLayers-02256
arrayLayers must be less than or equal to
imageCreateMaxArrayLayers (as defined in
Image Creation Limits)
VUID-VkImageCreateInfo-imageType-00961
If imageType is VK_IMAGE_TYPE_3D, arrayLayers must be
1
VUID-VkImageCreateInfo-samples-02257
If samples is not VK_SAMPLE_COUNT_1_BIT, then
imageType must be VK_IMAGE_TYPE_2D, flags must not
contain VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT, mipLevels must
be equal to 1, and imageCreateMaybeLinear (as defined in
Image Creation Limits) must be
VK_FALSE,
VUID-VkImageCreateInfo-samples-02558
If samples is not VK_SAMPLE_COUNT_1_BIT, usage must
not contain VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
VUID-VkImageCreateInfo-usage-00963
If usage includes VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,
then bits other than VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and
VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT must not be set
VUID-VkImageCreateInfo-usage-00964
If usage includes VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT, or
VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, extent.width must be
less than or equal to
VkPhysicalDeviceLimits::maxFramebufferWidth
VUID-VkImageCreateInfo-usage-00965
If usage includes VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT, or
VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, extent.height must be
less than or equal to
VkPhysicalDeviceLimits::maxFramebufferHeight
VUID-VkImageCreateInfo-fragmentDensityMapOffset-06514
If the fragmentDensityMapOffset feature is not enabled and usage
includes VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT,
extent.width must be less than or equal to
VUID-VkImageCreateInfo-fragmentDensityMapOffset-06515
If the fragmentDensityMapOffset feature is not enabled and usage
includes VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT,
extent.height must be less than or equal to
VUID-VkImageCreateInfo-usage-00966
If usage includes VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,
usage must also contain at least one of
VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, or
VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
VUID-VkImageCreateInfo-samples-02258
samples must be a valid VkSampleCountFlagBits value that is
set in imageCreateSampleCounts (as defined in
Image Creation Limits)
VUID-VkImageCreateInfo-usage-00968
If the shaderStorageImageMultisample feature is not enabled, and
usage contains VK_IMAGE_USAGE_STORAGE_BIT, samplesmust be VK_SAMPLE_COUNT_1_BIT
VUID-VkImageCreateInfo-flags-00969
If the sparseBinding feature is not
enabled, flags must not contain
VK_IMAGE_CREATE_SPARSE_BINDING_BIT
VUID-VkImageCreateInfo-flags-01924
If the sparseResidencyAliased
feature is not enabled, flags must not contain
VK_IMAGE_CREATE_SPARSE_ALIASED_BIT
VUID-VkImageCreateInfo-tiling-04121
If tiling is VK_IMAGE_TILING_LINEAR, flags must not
contain VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
VUID-VkImageCreateInfo-imageType-00970
If imageType is VK_IMAGE_TYPE_1D, flags must not
contain VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
VUID-VkImageCreateInfo-imageType-00971
If the sparseResidencyImage2D
feature is not enabled, and imageType is VK_IMAGE_TYPE_2D,
flags must not contain VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
VUID-VkImageCreateInfo-imageType-00972
If the sparseResidencyImage3D
feature is not enabled, and imageType is VK_IMAGE_TYPE_3D,
flags must not contain VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
VUID-VkImageCreateInfo-imageType-00973
If the sparseResidency2Samples feature is not enabled, imageType
is VK_IMAGE_TYPE_2D, and samples is
VK_SAMPLE_COUNT_2_BIT, flags must not contain
VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
VUID-VkImageCreateInfo-imageType-00974
If the sparseResidency4Samples feature is not enabled, imageType
is VK_IMAGE_TYPE_2D, and samples is
VK_SAMPLE_COUNT_4_BIT, flags must not contain
VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
VUID-VkImageCreateInfo-imageType-00975
If the sparseResidency8Samples feature is not enabled, imageType
is VK_IMAGE_TYPE_2D, and samples is
VK_SAMPLE_COUNT_8_BIT, flags must not contain
VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
VUID-VkImageCreateInfo-imageType-00976
If the sparseResidency16Samples feature is not enabled, imageType
is VK_IMAGE_TYPE_2D, and samples is
VK_SAMPLE_COUNT_16_BIT, flags must not contain
VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
VUID-VkImageCreateInfo-flags-00987
If flags contains VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT or
VK_IMAGE_CREATE_SPARSE_ALIASED_BIT, it must also contain
VK_IMAGE_CREATE_SPARSE_BINDING_BIT
VUID-VkImageCreateInfo-None-01925
If any of the bits VK_IMAGE_CREATE_SPARSE_BINDING_BIT,
VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT, or
VK_IMAGE_CREATE_SPARSE_ALIASED_BIT are set,
VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT must not also be set
VUID-VkImageCreateInfo-pNext-00988
If the pNext chain includes a
VkExternalMemoryImageCreateInfoNV structure, it must not contain
a VkExternalMemoryImageCreateInfo structure
VUID-VkImageCreateInfo-pNext-00990
If the pNext chain includes a
VkExternalMemoryImageCreateInfo structure, its handleTypes
member must only contain bits that are also in
VkExternalImageFormatProperties::externalMemoryProperties.compatibleHandleTypes,
as returned by vkGetPhysicalDeviceImageFormatProperties2 with
format, imageType, tiling, usage, and
flags equal to those in this structure, and with a
VkPhysicalDeviceExternalImageFormatInfo structure included in the
pNext chain, with a handleType equal to any one of the
handle types specified in
VkExternalMemoryImageCreateInfo::handleTypes
VUID-VkImageCreateInfo-pNext-00991
If the pNext chain includes a
VkExternalMemoryImageCreateInfoNV structure, its handleTypes
member must only contain bits that are also in
VkExternalImageFormatPropertiesNV::externalMemoryFeatures.compatibleHandleTypes,
as returned by vkGetPhysicalDeviceExternalImageFormatPropertiesNV
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 VkExternalMemoryImageCreateInfoNV::handleTypes
VUID-VkImageCreateInfo-physicalDeviceCount-01421
If the logical device was created with
VkDeviceGroupDeviceCreateInfo::physicalDeviceCount equal to
1, flags must not contain
VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT
VUID-VkImageCreateInfo-flags-02259
If flags contains
VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT, then
mipLevels must be one, arrayLayers must be one,
imageType must be VK_IMAGE_TYPE_2D.
and imageCreateMaybeLinear (as defined in
Image Creation Limits) must be
VK_FALSE
VUID-VkImageCreateInfo-flags-01572
If flags contains
VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT, then formatmust be a compressed image format
VUID-VkImageCreateInfo-flags-01573
If flags contains
VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT, then flagsmust also contain VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
VUID-VkImageCreateInfo-initialLayout-00993
initialLayout must be VK_IMAGE_LAYOUT_UNDEFINED or
VK_IMAGE_LAYOUT_PREINITIALIZED
VUID-VkImageCreateInfo-pNext-01443
If the pNext chain includes a
VkExternalMemoryImageCreateInfo or
VkExternalMemoryImageCreateInfoNV structure whose
handleTypes member is not 0, initialLayout must be
VK_IMAGE_LAYOUT_UNDEFINED
VUID-VkImageCreateInfo-format-06410
If the image format is one of the
formats that require a
sampler Y′CBCR conversion, mipLevels must be 1
VUID-VkImageCreateInfo-format-06411
If the image format is one of the
formats that require a
sampler Y′CBCR conversion, samples must be
VK_SAMPLE_COUNT_1_BIT
VUID-VkImageCreateInfo-format-06412
If the image format is one of the
formats that require a
sampler Y′CBCR conversion, imageType must be
VK_IMAGE_TYPE_2D
VUID-VkImageCreateInfo-imageCreateFormatFeatures-02260
If format is a multi-planar format, and if
imageCreateFormatFeatures (as defined in
Image Creation Limits) does not
contain VK_FORMAT_FEATURE_DISJOINT_BIT, then flags must not
contain VK_IMAGE_CREATE_DISJOINT_BIT
VUID-VkImageCreateInfo-format-01577
If format is not a multi-planar format, and flags does not
include VK_IMAGE_CREATE_ALIAS_BIT, flags must not contain
VK_IMAGE_CREATE_DISJOINT_BIT
VUID-VkImageCreateInfo-format-04712
If format has a _422 or _420 suffix, extent.widthmust be a multiple of 2
VUID-VkImageCreateInfo-format-04713
If format has a _420 suffix, extent.height must be a
multiple of 2
VUID-VkImageCreateInfo-format-09583
If format is one of the VK_FORMAT_PVTRC1_*_IMG formats,
extent.width must be a power of 2
VUID-VkImageCreateInfo-format-09584
If format is one of the VK_FORMAT_PVTRC1_*_IMG formats,
extent.height must be a power of 2
VUID-VkImageCreateInfo-tiling-02261
If tiling is VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, then
the pNext chain must include exactly one of
VkImageDrmFormatModifierListCreateInfoEXT or
VkImageDrmFormatModifierExplicitCreateInfoEXT structures
VUID-VkImageCreateInfo-pNext-02262
If the pNext chain includes a
VkImageDrmFormatModifierListCreateInfoEXT or
VkImageDrmFormatModifierExplicitCreateInfoEXT structure, then
tiling must be VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
VUID-VkImageCreateInfo-tiling-02353
If tiling is VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT and
flags contains VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT, then the
pNext chain must include a VkImageFormatListCreateInfo
structure with non-zero viewFormatCount
VUID-VkImageCreateInfo-flags-01533
If flags contains
VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
format must be a depth or depth/stencil format
VUID-VkImageCreateInfo-pNext-02393
If the pNext chain includes a
VkExternalMemoryImageCreateInfo structure whose handleTypes
member includes
VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID,
imageType must be VK_IMAGE_TYPE_2D
VUID-VkImageCreateInfo-pNext-02394
If the pNext chain includes a
VkExternalMemoryImageCreateInfo structure whose handleTypes
member includes
VK_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
VUID-VkImageCreateInfo-pNext-02396
If the pNext chain includes a VkExternalFormatANDROID
structure whose externalFormat member is not 0, flagsmust not include VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
VUID-VkImageCreateInfo-pNext-02397
If the pNext chain includes a VkExternalFormatANDROID
structure whose externalFormat member is not 0, usagemust not include any usages except
VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT,
VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, or
VK_IMAGE_USAGE_SAMPLED_BIT
VUID-VkImageCreateInfo-pNext-09457
If the pNext chain includes a VkExternalFormatANDROID
structure whose externalFormat member is not 0, and
externalFormatResolve feature
is not enabled, usage must not include
VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT or
VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
VUID-VkImageCreateInfo-pNext-02398
If the pNext chain includes a VkExternalFormatANDROID
structure whose externalFormat member is not 0, tilingmust be VK_IMAGE_TILING_OPTIMAL
VUID-VkImageCreateInfo-pNext-08951
If the pNext chain includes a
VkExternalMemoryImageCreateInfo structure whose handleTypes
member includes
VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX,
imageType must be VK_IMAGE_TYPE_2D
VUID-VkImageCreateInfo-pNext-08952
If the pNext chain includes a
VkExternalMemoryImageCreateInfo structure whose handleTypes
member includes
VK_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
VUID-VkImageCreateInfo-pNext-08953
If the pNext chain includes a VkExternalFormatQNX structure
whose externalFormat member is not 0, flags must not
include VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
VUID-VkImageCreateInfo-pNext-08954
If the pNext chain includes a VkExternalFormatQNX structure
whose externalFormat member is not 0, usage must not
include any usages except VK_IMAGE_USAGE_SAMPLED_BIT
VUID-VkImageCreateInfo-pNext-08955
If the pNext chain includes a VkExternalFormatQNX structure
whose externalFormat member is not 0, tiling must be
VK_IMAGE_TILING_OPTIMAL
VUID-VkImageCreateInfo-format-02795
If format is a depth-stencil format, usage includes
VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and the pNext
chain includes a VkImageStencilUsageCreateInfo structure, then its
VkImageStencilUsageCreateInfo::stencilUsage member must
also include VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
VUID-VkImageCreateInfo-format-02796
If format is a depth-stencil format, usage does not include
VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and the pNext
chain includes a VkImageStencilUsageCreateInfo structure, then its
VkImageStencilUsageCreateInfo::stencilUsage member must
also not include VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
VUID-VkImageCreateInfo-format-02797
If format is a depth-stencil format, usage includes
VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT, and the pNext chain
includes a VkImageStencilUsageCreateInfo structure, then its
VkImageStencilUsageCreateInfo::stencilUsage member must
also include VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
VUID-VkImageCreateInfo-format-02798
If format is a depth-stencil format, usage does not include
VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT, and the pNext chain
includes a VkImageStencilUsageCreateInfo structure, then its
VkImageStencilUsageCreateInfo::stencilUsage member must
also not include VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
VUID-VkImageCreateInfo-Format-02536
If Format is a depth-stencil format and the pNext chain
includes a VkImageStencilUsageCreateInfo structure with its
stencilUsage member including
VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, extent.width must be
less than or equal to
VkPhysicalDeviceLimits::maxFramebufferWidth
VUID-VkImageCreateInfo-format-02537
If format is a depth-stencil format and the pNext chain
includes a VkImageStencilUsageCreateInfo structure with its
stencilUsage member including
VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, extent.height must be
less than or equal to
VkPhysicalDeviceLimits::maxFramebufferHeight
VUID-VkImageCreateInfo-format-02538
If the shaderStorageImageMultisample feature is not enabled,
format is a depth-stencil format and the pNext chain
includes a VkImageStencilUsageCreateInfo structure with its
stencilUsage including VK_IMAGE_USAGE_STORAGE_BIT,
samples must be VK_SAMPLE_COUNT_1_BIT
VUID-VkImageCreateInfo-flags-02050
If flags contains VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV,
imageType must be VK_IMAGE_TYPE_2D or
VK_IMAGE_TYPE_3D
VUID-VkImageCreateInfo-flags-02051
If flags contains VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV, it
must not contain VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT and the
format must not be a depth/stencil format
VUID-VkImageCreateInfo-flags-02052
If flags contains VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV and
imageType is VK_IMAGE_TYPE_2D, extent.width and
extent.height must be greater than 1
VUID-VkImageCreateInfo-flags-02053
If flags contains VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV and
imageType is VK_IMAGE_TYPE_3D, extent.width,
extent.height, and extent.depth must be greater than 1
VUID-VkImageCreateInfo-imageType-02082
If usage includes
VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,
imageType must be VK_IMAGE_TYPE_2D
VUID-VkImageCreateInfo-samples-02083
If usage includes
VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,
samples must be VK_SAMPLE_COUNT_1_BIT
VUID-VkImageCreateInfo-shadingRateImage-07727
If the shadingRateImage feature is
enabled and usage includes
VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV, tiling must be
VK_IMAGE_TILING_OPTIMAL
VUID-VkImageCreateInfo-flags-02565
If flags contains VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT,
tiling must be VK_IMAGE_TILING_OPTIMAL
VUID-VkImageCreateInfo-flags-02566
If flags contains VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT,
imageType must be VK_IMAGE_TYPE_2D
VUID-VkImageCreateInfo-flags-02567
If flags contains VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT,
flags must not contain VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT
VUID-VkImageCreateInfo-flags-02568
If flags contains VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT,
mipLevels must be 1
VUID-VkImageCreateInfo-usage-04992
If usage includes VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI,
tiling must be VK_IMAGE_TILING_LINEAR
VUID-VkImageCreateInfo-imageView2DOn3DImage-04459
If the VK_KHR_portability_subset extension is enabled, and
VkPhysicalDevicePortabilitySubsetFeaturesKHR::imageView2DOn3DImage
is VK_FALSE, flags must not contain
VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
VUID-VkImageCreateInfo-multisampleArrayImage-04460
If the VK_KHR_portability_subset extension is enabled, and
VkPhysicalDevicePortabilitySubsetFeaturesKHR::multisampleArrayImage
is VK_FALSE, and samples is not VK_SAMPLE_COUNT_1_BIT,
then arrayLayers must be 1
VUID-VkImageCreateInfo-pNext-06722
If a VkImageFormatListCreateInfo structure was included in the
pNext chain and format is not a multi-planar format and
VkImageFormatListCreateInfo::viewFormatCount is not zero,
then each format in
VkImageFormatListCreateInfo::pViewFormats must either be
compatible with the format as described in the
compatibility table or, if flags
contains VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT, be an
uncompressed format that is size-compatible with format
VUID-VkImageCreateInfo-pNext-10062
If a VkImageFormatListCreateInfo structure was included in the
pNext chain and format is a multi-planar format and flags contains
VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT and
VkImageFormatListCreateInfo::viewFormatCount is not zero,
then each format in
VkImageFormatListCreateInfo::pViewFormats must be
compatible with the VkFormat for the plane of the image format
VUID-VkImageCreateInfo-flags-04738
If flags does not contain VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
and the pNext chain includes a VkImageFormatListCreateInfo
structure, then VkImageFormatListCreateInfo::viewFormatCountmust be 0 or 1
VUID-VkImageCreateInfo-usage-04815
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
VUID-VkImageCreateInfo-usage-04816
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
VUID-VkImageCreateInfo-flags-08328
If flags includes
VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR, then
videoMaintenance1 must be enabled
VUID-VkImageCreateInfo-flags-08329
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
VUID-VkImageCreateInfo-flags-08331
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
VUID-VkImageCreateInfo-pNext-06811
If the pNext chain includes a VkVideoProfileListInfoKHR
structure with profileCount greater than 0, then
supportedVideoFormat must be VK_TRUE
VUID-VkImageCreateInfo-pNext-10250
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
VUID-VkImageCreateInfo-usage-10251
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
VUID-VkImageCreateInfo-usage-10252
If usage includes
VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR or
VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR, imageTypemust be VK_IMAGE_TYPE_2D
VUID-VkImageCreateInfo-usage-10253
If usage includes
VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR or
VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR, samplesmust be VK_SAMPLE_COUNT_1_BIT
VUID-VkImageCreateInfo-usage-10254
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
VUID-VkImageCreateInfo-usage-10255
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
VUID-VkImageCreateInfo-usage-10256
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
VUID-VkImageCreateInfo-usage-10257
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
VUID-VkImageCreateInfo-usage-10258
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
VUID-VkImageCreateInfo-pNext-06390
If the VkImage is to be used to import memory from a
VkBufferCollectionFUCHSIA, a
VkBufferCollectionImageCreateInfoFUCHSIA structure must be
chained to pNext
VUID-VkImageCreateInfo-multisampledRenderToSingleSampled-06882
If the multisampledRenderToSingleSampled feature is not enabled,
flags must not contain
VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT
VUID-VkImageCreateInfo-flags-06883
If flags contains
VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT,
samples must be VK_SAMPLE_COUNT_1_BIT
VUID-VkImageCreateInfo-pNext-06743
If the pNext chain includes a VkImageCompressionControlEXT
structure, format is a multi-planar
format, and VkImageCompressionControlEXT::flags includes
VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT, then
VkImageCompressionControlEXT::compressionControlPlaneCountmust be equal to the number of planes in format
VUID-VkImageCreateInfo-pNext-06744
If the pNext chain includes a VkImageCompressionControlEXT
structure, format is not a multi-planar
format, and VkImageCompressionControlEXT::flags includes
VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT, then
VkImageCompressionControlEXT::compressionControlPlaneCountmust be 1
VUID-VkImageCreateInfo-pNext-06746
If the pNext chain includes a VkImageCompressionControlEXT
structure, it must not contain a
VkImageDrmFormatModifierExplicitCreateInfoEXT structure
VUID-VkImageCreateInfo-flags-08104
If flags includes
VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT, the
descriptorBufferCaptureReplay feature must be enabled
VUID-VkImageCreateInfo-pNext-08105
If the pNext chain includes a
VkOpaqueCaptureDescriptorDataCreateInfoEXT structure, flagsmust contain
VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT
VUID-VkImageCreateInfo-pNext-06783
If the pNext chain includes a
VkExportMetalObjectCreateInfoEXT structure, its
exportObjectType member must be either
VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT or
VK_EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT
VUID-VkImageCreateInfo-pNext-06784
If the pNext chain includes a VkImportMetalTextureInfoEXT
structure its plane member must be
VK_IMAGE_ASPECT_PLANE_0_BIT, VK_IMAGE_ASPECT_PLANE_1_BIT, or
VK_IMAGE_ASPECT_PLANE_2_BIT
VUID-VkImageCreateInfo-pNext-06785
If the pNext chain includes a VkImportMetalTextureInfoEXT
structure and the image does not have a multi-planar format, then
VkImportMetalTextureInfoEXT::plane must be
VK_IMAGE_ASPECT_PLANE_0_BIT
VUID-VkImageCreateInfo-pNext-06786
If the pNext chain includes a VkImportMetalTextureInfoEXT
structure and the image has a multi-planar
format with only two planes, then
VkImportMetalTextureInfoEXT::plane must not be
VK_IMAGE_ASPECT_PLANE_2_BIT
VUID-VkImageCreateInfo-imageCreateFormatFeatures-09048
If imageCreateFormatFeatures (as defined in
Image Creation Limits) does not
contain VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT, then
usage must not contain VK_IMAGE_USAGE_HOST_TRANSFER_BIT
VUID-VkImageCreateInfo-usage-10245
If usage includes VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT, then
the hostImageCopy feature must be
enabled
VUID-VkImageCreateInfo-pNext-09653
If the pNext chain contains a
VkImageAlignmentControlCreateInfoMESA structure, tilingmust be VK_IMAGE_TILING_OPTIMAL
VUID-VkImageCreateInfo-pNext-09654
If the pNext chain contains a
VkImageAlignmentControlCreateInfoMESA structure, it must not
contain a VkExternalMemoryImageCreateInfo structure
Valid Usage (Implicit)
VUID-VkImageCreateInfo-sType-sType
sType must be VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO
VUID-VkImageCreateInfo-pNext-pNext
Each pNext member of any structure (including this one) in the pNext chain must be either NULL or a pointer to a valid instance of VkBufferCollectionImageCreateInfoFUCHSIA, VkDedicatedAllocationImageCreateInfoNV, VkExportMetalObjectCreateInfoEXT, VkExternalFormatANDROID, VkExternalFormatQNX, VkExternalMemoryImageCreateInfo, VkExternalMemoryImageCreateInfoNV, VkImageAlignmentControlCreateInfoMESA, VkImageCompressionControlEXT, VkImageDrmFormatModifierExplicitCreateInfoEXT, VkImageDrmFormatModifierListCreateInfoEXT, VkImageFormatListCreateInfo, VkImageStencilUsageCreateInfo, VkImageSwapchainCreateInfoKHR, VkImportMetalIOSurfaceInfoEXT, VkImportMetalTextureInfoEXT, VkOpaqueCaptureDescriptorDataCreateInfoEXT, VkOpticalFlowImageFormatInfoNV, or VkVideoProfileListInfoKHR
VUID-VkImageCreateInfo-sType-unique
The sType value of each structure in the pNext chain must be unique, with the exception of structures of type VkExportMetalObjectCreateInfoEXT or VkImportMetalTextureInfoEXT
VUID-VkImageCreateInfo-flags-parameter
flags must be a valid combination of VkImageCreateFlagBits values
VUID-VkImageCreateInfo-imageType-parameter
imageType must be a valid VkImageType value
VUID-VkImageCreateInfo-format-parameter
format must be a valid VkFormat value
VUID-VkImageCreateInfo-samples-parameter
samples must be a valid VkSampleCountFlagBits value
VUID-VkImageCreateInfo-tiling-parameter
tiling must be a valid VkImageTiling value
VUID-VkImageCreateInfo-usage-parameter
usage must be a valid combination of VkImageUsageFlagBits values
VUID-VkImageCreateInfo-usage-requiredbitmask
usage must not be 0
VUID-VkImageCreateInfo-sharingMode-parameter
sharingMode must be a valid VkSharingMode value
VUID-VkImageCreateInfo-initialLayout-parameter
initialLayout must be a valid VkImageLayout value