Images created with tiling equal to IMAGE_TILING_LINEAR have further restrictions on their limits and capabilities compared to images created with tiling equal to IMAGE_TILING_OPTIMAL. Creation of images with tiling IMAGE_TILING_LINEAR may not be supported unless other parameters meet all of the constraints:
imageType is IMAGE_TYPE_2Dformat is not a depth/stencil formatmipLevels is 1arrayLayers is 1samples is SAMPLE_COUNT_1_BITusage only includes IMAGE_USAGE_TRANSFER_SRC_BIT and/or IMAGE_USAGE_TRANSFER_DST_BITImages 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:
imageType is IMAGE_TYPE_2DmipLevels is 1arrayLayers is 1, unless the ycbcrImageArrays feature is enabled, or otherwise indicated by VkImageFormatProperties::maxArrayLayers, as returned by GetPhysicalDeviceImageFormatPropertiessamples is SAMPLE_COUNT_1_BITImplementations may support additional limits and capabilities beyond those listed above.
To determine the set of valid usage bits for a given format, call GetPhysicalDeviceFormatProperties.
If the size of the resultant image would exceed maxResourceSize, then CreateImage must fail and return ERROR_OUT_OF_DEVICE_MEMORY. This failure may occur even when all image creation parameters satisfy their valid usage requirements.
If the implementation reports TRUE in VkPhysicalDeviceHostImageCopyPropertiesEXT::identicalMemoryTypeRequirements, usage of IMAGE_USAGE_HOST_TRANSFER_BIT_EXT 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 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 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 values for some image creation parameters are limited by a numerical upper bound or by inclusion in a bitset. For example, VkImageCreateInfo::arrayLayers is limited by imageCreateMaxArrayLayers, defined below; and VkImageCreateInfo::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 VkImageCreateInfo.
uint64_t imageCreateDrmFormatModifiers[] be the set of Linux DRM format modifiers that the resultant image may have.
tiling is not IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, then imageCreateDrmFormatModifiers is empty.VkImageCreateInfo::pNext contains VkImageDrmFormatModifierExplicitCreateInfoEXT, then imageCreateDrmFormatModifiers contains exactly one modifier, VkImageDrmFormatModifierExplicitCreateInfoEXT::drmFormatModifier.VkImageCreateInfo::pNext contains VkImageDrmFormatModifierListCreateInfoEXT, then imageCreateDrmFormatModifiers contains the entire array VkImageDrmFormatModifierListCreateInfoEXT::pDrmFormatModifiers.VkBool32 imageCreateMaybeLinear indicate if the resultant image may be linear.
tiling is IMAGE_TILING_LINEAR, then imageCreateMaybeLinear is TRUE.tiling is IMAGE_TILING_OPTIMAL, then imageCreateMaybeLinear is FALSE.tiling is IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, then imageCreateMaybeLinear is TRUE if and only if imageCreateDrmFormatModifiers contains DRM_FORMAT_MOD_LINEAR.VkFormatFeatureFlags imageCreateFormatFeatures be the set of valid format features available during image creation.
tiling is IMAGE_TILING_LINEAR, then imageCreateFormatFeatures is the value of VkFormatProperties::linearTilingFeatures found by calling GetPhysicalDeviceFormatProperties with parameter format equal to VkImageCreateInfo::format.tiling is IMAGE_TILING_OPTIMAL, and if the pNext chain includes no VkExternalFormatANDROID structure with non-zero externalFormat, then imageCreateFormatFeatures is the value of VkFormatProperties::optimalTilingFeatures found by calling GetPhysicalDeviceFormatProperties with parameter format equal to VkImageCreateInfo::format.tiling is IMAGE_TILING_OPTIMAL, and if the pNext chain includes a VkExternalFormatANDROID structure with non-zero externalFormat, then imageCreateFormatFeatures is the value of VkAndroidHardwareBufferFormatPropertiesANDROID::formatFeatures obtained by GetAndroidHardwareBufferPropertiesANDROID with a matching externalFormat value.tiling is IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, then the value of imageCreateFormatFeatures is found by calling GetPhysicalDeviceFormatProperties2 with VkImageFormatProperties::format equal to VkImageCreateInfo::format and with VkDrmFormatModifierPropertiesListEXT chained into VkFormatProperties2; by collecting all members of the returned array VkDrmFormatModifierPropertiesListEXT::pDrmFormatModifierProperties whose drmFormatModifier belongs to imageCreateDrmFormatModifiers; and by taking the bitwise intersection, over the collected array members, of drmFormatModifierTilingFeatures. (The resultant imageCreateFormatFeatures may be empty).VkImageFormatProperties2 imageCreateImageFormatPropertiesList[] be defined as follows.
VkImageCreateInfo::pNext contains no VkExternalFormatANDROID structure with non-zero externalFormat, then imageCreateImageFormatPropertiesList is the list of structures obtained by calling GetPhysicalDeviceImageFormatProperties2, possibly multiple times, as follows:
VkPhysicalDeviceImageFormatInfo2::format, imageType, tiling, usage, and flags must be equal to those in VkImageCreateInfo.VkImageCreateInfo::pNext contains a VkExternalMemoryImageCreateInfo structure whose handleTypes is not 0, then VkPhysicalDeviceImageFormatInfo2::pNext must contain a VkPhysicalDeviceExternalImageFormatInfo structure whose handleType is not 0; and GetPhysicalDeviceImageFormatProperties2 must be called for each handle type in VkExternalMemoryImageCreateInfo::handleTypes, successively setting VkPhysicalDeviceExternalImageFormatInfo::handleType on each call.VkImageCreateInfo::pNext contains no VkExternalMemoryImageCreateInfo structure, or contains a structure whose handleTypes is 0, then VkPhysicalDeviceImageFormatInfo2::pNext must either contain no VkPhysicalDeviceExternalImageFormatInfo structure, or contain a structure whose handleType is 0.VkImageCreateInfo::pNext contains a VkVideoProfileListInfoKHR structure then VkPhysicalDeviceImageFormatInfo2::pNext must also contain the same VkVideoProfileListInfoKHR structure on each call.tiling is IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, then:
VkPhysicalDeviceImageFormatInfo2::pNext must contain a VkPhysicalDeviceImageDrmFormatModifierInfoEXT structure where sharingMode is equal to VkImageCreateInfo::sharingMode;sharingMode is SHARING_MODE_CONCURRENT, then queueFamilyIndexCount and pQueueFamilyIndices must be equal to those in VkImageCreateInfo;flags contains IMAGE_CREATE_MUTABLE_FORMAT_BIT, then the VkImageFormatListCreateInfo structure included in the pNext chain of VkPhysicalDeviceImageFormatInfo2 must be equivalent to the one included in the pNext chain of VkImageCreateInfo;VkImageCreateInfo::pNext contains a VkImageCompressionControlEXT structure, then the VkPhysicalDeviceImageFormatInfo2::pNext chain must contain an equivalent structure;GetPhysicalDeviceImageFormatProperties2 must be called for each modifier in imageCreateDrmFormatModifiers, successively setting VkPhysicalDeviceImageDrmFormatModifierInfoEXT::drmFormatModifier on each call.tiling is not IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, then VkPhysicalDeviceImageFormatInfo2::pNext must contain no VkPhysicalDeviceImageDrmFormatModifierInfoEXT structure.GetPhysicalDeviceImageFormatProperties2 returns an error, then imageCreateImageFormatPropertiesList is defined to be the empty list.VkImageCreateInfo::pNext contains a VkExternalFormatANDROID structure with non-zero externalFormat, then imageCreateImageFormatPropertiesList contains a single element where:
VkImageFormatProperties::maxMipLevels is ⌊log2(max(extent.width, extent.height, extent.depth))⌋ + 1.VkImageFormatProperties::maxArrayLayers is VkPhysicalDeviceLimits::maxImageArrayLayers.VkImageFormatProperties::maxExtent is VkPhysicalDeviceLimits::maxImageDimension2D.VkImageFormatProperties::sampleCounts contains exactly SAMPLE_COUNT_1_BIT.uint32_t imageCreateMaxMipLevels be the minimum value of VkImageFormatProperties::maxMipLevels in imageCreateImageFormatPropertiesList. The value is undefined if imageCreateImageFormatPropertiesList is empty.uint32_t imageCreateMaxArrayLayers be the minimum value of VkImageFormatProperties::maxArrayLayers in imageCreateImageFormatPropertiesList. The value is undefined if imageCreateImageFormatPropertiesList is empty.VkExtent3D imageCreateMaxExtent be the component-wise minimum over all VkImageFormatProperties::maxExtent values in imageCreateImageFormatPropertiesList. The value is undefined if imageCreateImageFormatPropertiesList is empty.VkSampleCountFlags imageCreateSampleCounts be the intersection of each VkImageFormatProperties::sampleCounts in imageCreateImageFormatPropertiesList. The value is undefined if imageCreateImageFormatPropertiesList is empty.VkVideoFormatPropertiesKHR videoFormatProperties[] be defined as follows.
VkImageCreateInfo::pNext contains a VkVideoProfileListInfoKHR structure, then videoFormatProperties is the list of structures obtained by calling GetPhysicalDeviceVideoFormatPropertiesKHR with VkPhysicalDeviceVideoFormatInfoKHR::imageUsage equal to the usage member of VkImageCreateInfo and VkPhysicalDeviceVideoFormatInfoKHR::pNext containing the same VkVideoProfileListInfoKHR structure chained to VkImageCreateInfo.VkImageCreateInfo::pNext contains no VkVideoProfileListInfoKHR structure, then videoFormatProperties is an empty list.VkBool32 supportedVideoFormat indicate if the image parameters are supported by the specified video profiles.
supportedVideoFormat is TRUE if there exists an element in the videoFormatProperties list for which all of the following conditions are true:
VkImageCreateInfo::format equals VkVideoFormatPropertiesKHR::format.VkImageCreateInfo::flags only contains bits also set in VkVideoFormatPropertiesKHR::imageCreateFlags.VkImageCreateInfo::imageType equals VkVideoFormatPropertiesKHR::imageType.VkImageCreateInfo::tiling equals VkVideoFormatPropertiesKHR::imageTiling.VkImageCreateInfo::usage only contains bits also set in VkVideoFormatPropertiesKHR::imageUsageFlags.supportedVideoFormat is FALSE.imageCreateMaxMipLevels, imageCreateMaxArrayLayers, imageCreateMaxExtent, and imageCreateSampleCountssharingMode is SHARING_MODE_CONCURRENT, pQueueFamilyIndices must be a valid pointer to an array of queueFamilyIndexCount uint32_t valuessharingMode is SHARING_MODE_CONCURRENT, queueFamilyIndexCount must be greater than 1sharingMode 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 devicepNext chain includes a VkExternalFormatANDROID structure, and its externalFormat member is non-zero the format must be FORMAT_UNDEFINEDpNext chain does not include a VkExternalFormatANDROID structure, or does and its externalFormat member is 0, the format must not be FORMAT_UNDEFINEDextent.width must be greater than 0extent.height must be greater than 0extent.depth must be greater than 0mipLevels must be greater than 0arrayLayers must be greater than 0flags contains IMAGE_CREATE_CUBE_COMPATIBLE_BIT, imageType must be IMAGE_TYPE_2Dflags contains IMAGE_CREATE_CUBE_COMPATIBLE_BIT, extent.width and extent.height must be equalflags contains IMAGE_CREATE_CUBE_COMPATIBLE_BIT, arrayLayers must be greater than or equal to 6flags contains IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT, imageType must be IMAGE_TYPE_2Dflags contains IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT, imageType must be IMAGE_TYPE_3Dflags contains IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT, imageType must be IMAGE_TYPE_3Dextent.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)imageType is IMAGE_TYPE_1D, both extent.height and extent.depth must be 1imageType is IMAGE_TYPE_2D, extent.depth must be 1mipLevels must be less than or equal to the number of levels in the complete mipmap chain based on extent.width, extent.height, and extent.depthmipLevels 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)imageType is IMAGE_TYPE_3D, arrayLayers must be 1samples 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,samples is not SAMPLE_COUNT_1_BIT, usage must not contain IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXTusage 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 setusage 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 VkPhysicalDeviceLimits::maxFramebufferWidthusage 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 VkPhysicalDeviceLimits::maxFramebufferHeightfragmentDensityMapOffset feature is not enabled and usage includes IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT, extent.width must be less than or equal to ceil(maxFramebufferWidth / minFragmentDensityTexelSizewidth)fragmentDensityMapOffset feature is not enabled and usage includes IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT, extent.height must be less than or equal to ceil(maxFramebufferHeight / minFragmentDensityTexelSizeheight)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_BITsamples must be a bit value that is set in imageCreateSampleCounts (as defined in Image Creation Limits)shaderStorageImageMultisample feature is not enabled, and usage contains IMAGE_USAGE_STORAGE_BIT, samples must be SAMPLE_COUNT_1_BITsparseBinding feature is not enabled, flags must not contain IMAGE_CREATE_SPARSE_BINDING_BITsparseResidencyAliased feature is not enabled, flags must not contain IMAGE_CREATE_SPARSE_ALIASED_BITtiling is IMAGE_TILING_LINEAR, flags must not contain IMAGE_CREATE_SPARSE_RESIDENCY_BITimageType is IMAGE_TYPE_1D, flags must not contain IMAGE_CREATE_SPARSE_RESIDENCY_BITsparseResidencyImage2D feature is not enabled, and imageType is IMAGE_TYPE_2D, flags must not contain IMAGE_CREATE_SPARSE_RESIDENCY_BITsparseResidencyImage3D feature is not enabled, and imageType is IMAGE_TYPE_3D, flags must not contain IMAGE_CREATE_SPARSE_RESIDENCY_BITsparseResidency2Samples feature is not enabled, imageType is IMAGE_TYPE_2D, and samples is SAMPLE_COUNT_2_BIT, flags must not contain IMAGE_CREATE_SPARSE_RESIDENCY_BITsparseResidency4Samples feature is not enabled, imageType is IMAGE_TYPE_2D, and samples is SAMPLE_COUNT_4_BIT, flags must not contain IMAGE_CREATE_SPARSE_RESIDENCY_BITsparseResidency8Samples feature is not enabled, imageType is IMAGE_TYPE_2D, and samples is SAMPLE_COUNT_8_BIT, flags must not contain IMAGE_CREATE_SPARSE_RESIDENCY_BITsparseResidency16Samples feature is not enabled, imageType is IMAGE_TYPE_2D, and samples is SAMPLE_COUNT_16_BIT, flags must not contain IMAGE_CREATE_SPARSE_RESIDENCY_BITflags contains IMAGE_CREATE_SPARSE_RESIDENCY_BIT or IMAGE_CREATE_SPARSE_ALIASED_BIT, it must also contain IMAGE_CREATE_SPARSE_BINDING_BITIMAGE_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 setprotectedMemory feature is not enabled, flags must not contain IMAGE_CREATE_PROTECTED_BITIMAGE_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 setpNext chain includes a VkExternalMemoryImageCreateInfoNV structure, it must not contain a VkExternalMemoryImageCreateInfo structurepNext chain includes a VkExternalMemoryImageCreateInfo structure, its handleTypes member must only contain bits that are also in VkExternalImageFormatProperties::externalMemoryProperties.compatibleHandleTypes, as returned by GetPhysicalDeviceImageFormatProperties2 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::handleTypespNext chain includes a VkExternalMemoryImageCreateInfoNV structure, its handleTypes member must only contain bits that are also in VkExternalImageFormatPropertiesNV::externalMemoryProperties.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 VkExternalMemoryImageCreateInfoNV::handleTypesVkDeviceGroupDeviceCreateInfo::physicalDeviceCount equal to 1, flags must not contain IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BITflags 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 FALSEflags contains IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT, then format must be a compressed image formatflags contains IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT, then flags must also contain IMAGE_CREATE_MUTABLE_FORMAT_BITinitialLayout must be IMAGE_LAYOUT_UNDEFINED or IMAGE_LAYOUT_PREINITIALIZEDpNext chain includes a VkExternalMemoryImageCreateInfo or VkExternalMemoryImageCreateInfoNV structure whose handleTypes member is not 0, initialLayout must be IMAGE_LAYOUT_UNDEFINEDformat is one of the formats that require a sampler Y′CBCR conversion, mipLevels must be 1format is one of the formats that require a sampler Y′CBCR conversion, samples must be SAMPLE_COUNT_1_BITformat is one of the formats that require a sampler Y′CBCR conversion, imageType must be IMAGE_TYPE_2Dformat 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_BITformat is not a multi-planar format, and flags does not include IMAGE_CREATE_ALIAS_BIT, flags must not contain IMAGE_CREATE_DISJOINT_BITformat has a _422 or _420 suffix, width must be a multiple of 2format has a _420 suffix, height must be a multiple of 2tiling is IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, then the pNext chain must include exactly one of VkImageDrmFormatModifierListCreateInfoEXT or VkImageDrmFormatModifierExplicitCreateInfoEXT structurespNext chain includes a VkImageDrmFormatModifierListCreateInfoEXT or VkImageDrmFormatModifierExplicitCreateInfoEXT structure, then tiling must be IMAGE_TILING_DRM_FORMAT_MODIFIER_EXTtiling is IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT and flags contains IMAGE_CREATE_MUTABLE_FORMAT_BIT, then the pNext chain must include a VkImageFormatListCreateInfo structure with non-zero viewFormatCountflags contains IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT format must be a depth or depth/stencil formatpNext chain includes a VkExternalMemoryImageCreateInfo structure whose handleTypes member includes EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID, imageType must be IMAGE_TYPE_2DpNext chain includes a VkExternalMemoryImageCreateInfo 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.depthpNext chain includes a VkExternalFormatANDROID structure whose externalFormat member is not 0, flags must not include IMAGE_CREATE_MUTABLE_FORMAT_BITpNext chain includes a VkExternalFormatANDROID structure whose externalFormat member is not 0, usage must not include any usages except IMAGE_USAGE_SAMPLED_BITpNext chain includes a VkExternalFormatANDROID structure whose externalFormat member is not 0, tiling must be IMAGE_TILING_OPTIMALformat is a depth-stencil format, usage includes IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and the pNext chain includes a VkImageStencilUsageCreateInfo structure, then its VkImageStencilUsageCreateInfo::stencilUsage member must also include IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BITformat is a depth-stencil format, usage does not include IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and the pNext chain includes a VkImageStencilUsageCreateInfo structure, then its VkImageStencilUsageCreateInfo::stencilUsage member must also not include IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BITformat is a depth-stencil format, usage includes IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT, and the pNext chain includes a VkImageStencilUsageCreateInfo structure, then its VkImageStencilUsageCreateInfo::stencilUsage member must also include IMAGE_USAGE_TRANSIENT_ATTACHMENT_BITformat is a depth-stencil format, usage does not include IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT, and the pNext chain includes a VkImageStencilUsageCreateInfo structure, then its VkImageStencilUsageCreateInfo::stencilUsage member must also not include IMAGE_USAGE_TRANSIENT_ATTACHMENT_BITFormat is a depth-stencil format and the pNext chain includes a VkImageStencilUsageCreateInfo structure with its stencilUsage member including IMAGE_USAGE_INPUT_ATTACHMENT_BIT, extent.width must be less than or equal to VkPhysicalDeviceLimits::maxFramebufferWidthformat is a depth-stencil format and the pNext chain includes a VkImageStencilUsageCreateInfo structure with its stencilUsage member including IMAGE_USAGE_INPUT_ATTACHMENT_BIT, extent.height must be less than or equal to VkPhysicalDeviceLimits::maxFramebufferHeightshaderStorageImageMultisample feature is not enabled, format is a depth-stencil format and the pNext chain includes a VkImageStencilUsageCreateInfo structure with its stencilUsage including IMAGE_USAGE_STORAGE_BIT, samples must be SAMPLE_COUNT_1_BITflags contains IMAGE_CREATE_CORNER_SAMPLED_BIT_NV, imageType must be IMAGE_TYPE_2D or IMAGE_TYPE_3Dflags 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 formatflags contains IMAGE_CREATE_CORNER_SAMPLED_BIT_NV and imageType is IMAGE_TYPE_2D, extent.width and extent.height must be greater than 1flags contains IMAGE_CREATE_CORNER_SAMPLED_BIT_NV and imageType is IMAGE_TYPE_3D, extent.width, extent.height, and extent.depth must be greater than 1usage includes IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, imageType must be IMAGE_TYPE_2Dusage includes IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, samples must be SAMPLE_COUNT_1_BITshadingRateImage feature is enabled and usage includes IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV, tiling must be IMAGE_TILING_OPTIMALflags contains IMAGE_CREATE_SUBSAMPLED_BIT_EXT, tiling must be IMAGE_TILING_OPTIMALflags contains IMAGE_CREATE_SUBSAMPLED_BIT_EXT, imageType must be IMAGE_TYPE_2Dflags contains IMAGE_CREATE_SUBSAMPLED_BIT_EXT, flags must not contain IMAGE_CREATE_CUBE_COMPATIBLE_BITflags contains IMAGE_CREATE_SUBSAMPLED_BIT_EXT, mipLevels must be 1usage includes IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI, tiling must be IMAGE_TILING_LINEARVK_KHR_portability_subset extension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::imageView2DOn3DImage is FALSE, flags must not contain IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BITVK_KHR_portability_subset extension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::multisampleArrayImage is FALSE, and samples is not SAMPLE_COUNT_1_BIT, then arrayLayers must be 1VkImageFormatListCreateInfo structure was included in the pNext chain 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 IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT, be an uncompressed format that is size-compatible with formatflags does not contain IMAGE_CREATE_MUTABLE_FORMAT_BIT and the pNext chain includes a VkImageFormatListCreateInfo structure, then VkImageFormatListCreateInfo::viewFormatCount must be 0 or 1usage includes IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR, IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR, or IMAGE_USAGE_VIDEO_DECODE_DPB_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 operationusage includes IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR, IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR, or IMAGE_USAGE_VIDEO_ENCODE_DPB_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 operationpNext chain includes a VkVideoProfileListInfoKHR structure with profileCount greater than 0, then supportedVideoFormat must be TRUEmultisampledRenderToSingleSampled feature is not enabled, flags must not contain IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXTflags contains IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT, samples must be SAMPLE_COUNT_1_BITpNext chain includes a VkImageCompressionControlEXT structure, format is a multi-planar format, and VkImageCompressionControlEXT::flags includes IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT, then VkImageCompressionControlEXT::compressionControlPlaneCount must be equal to the number of planes in formatpNext chain includes a VkImageCompressionControlEXT structure, format is not a multi-planar format, and VkImageCompressionControlEXT::flags includes IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT, then VkImageCompressionControlEXT::compressionControlPlaneCount must be 1pNext chain includes a VkImageCompressionControlEXT structure, it must not contain a VkImageDrmFormatModifierExplicitCreateInfoEXT structureflags includes IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT, the descriptorBufferCaptureReplay feature must be enabledpNext chain includes a VkOpaqueCaptureDescriptorDataCreateInfoEXT structure, flags must contain IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXTpNext chain includes a VkExportMetalObjectCreateInfoEXT structure, its exportObjectType member must be either EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT or EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXTpNext chain includes a VkImportMetalTextureInfoEXT structure its plane member must be IMAGE_ASPECT_PLANE_0_BIT, IMAGE_ASPECT_PLANE_1_BIT, or IMAGE_ASPECT_PLANE_2_BITpNext chain includes a VkImportMetalTextureInfoEXT structure and the image does not have a multi-planar format, then VkImportMetalTextureInfoEXT::plane must be IMAGE_ASPECT_PLANE_0_BITpNext chain includes a VkImportMetalTextureInfoEXT structure and the image has a multi-planar format with only two planes, then VkImportMetalTextureInfoEXT::plane must not be IMAGE_ASPECT_PLANE_2_BITimageCreateFormatFeatures (as defined in Image Creation Limits) does not contain FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT, then usage must not contain IMAGE_USAGE_HOST_TRANSFER_BIT_EXTsType must be STRUCTURE_TYPE_IMAGE_CREATE_INFOpNext member of any structure (including this one) in the pNext chain must be either NULL or a pointer to a valid instance of VkDedicatedAllocationImageCreateInfoNV, VkExportMetalObjectCreateInfoEXT, VkExternalFormatANDROID, VkExternalMemoryImageCreateInfo, VkExternalMemoryImageCreateInfoNV, VkImageCompressionControlEXT, VkImageDrmFormatModifierExplicitCreateInfoEXT, VkImageDrmFormatModifierListCreateInfoEXT, VkImageFormatListCreateInfo, VkImageStencilUsageCreateInfo, VkImageSwapchainCreateInfoKHR, VkImportMetalIOSurfaceInfoEXT, VkImportMetalTextureInfoEXT, VkOpaqueCaptureDescriptorDataCreateInfoEXT, VkOpticalFlowImageFormatInfoNV, or VkVideoProfileListInfoKHRsType value of each struct in the pNext chain must be unique, with the exception of structures of type VkExportMetalObjectCreateInfoEXT or VkImportMetalTextureInfoEXTflags must be a valid combination of VkImageCreateFlagBits valuesimageType must be a valid VkImageType valueformat must be a valid VkFormat valuesamples must be a valid VkSampleCountFlagBits valuetiling must be a valid VkImageTiling valueusage must be a valid combination of VkImageUsageFlagBits valuesusage must not be 0sharingMode must be a valid VkSharingMode valueinitialLayout must be a valid VkImageLayout valueVkDeviceImageMemoryRequirements, VkDeviceImageSubresourceInfoKHR, VkExtent3D, CreateImage
struct VkImageCreateInfo {
VkStructureType sType;
void const * 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;
uint32_t const * pQueueFamilyIndices;
VkImageLayout initialLayout;
}
| Modifier and Type | Class and Description |
|---|---|
| public static class | VkImageCreateInfo.
An array of |
| Modifier and Type | Field and Description |
|---|---|
| public static final int | ALIGNOF
The struct alignment in bytes. |
| public static final int | ARRAYLAYERS
The struct member offsets. |
| public static final int | EXTENT
The struct member offsets. |
| public static final int | FLAGS
The struct member offsets. |
| public static final int | FORMAT
The struct member offsets. |
| public static final int | IMAGETYPE
The struct member offsets. |
| public static final int | INITIALLAYOUT
The struct member offsets. |
| public static final int | MIPLEVELS
The struct member offsets. |
| public static final int | PNEXT
The struct member offsets. |
| public static final int | PQUEUEFAMILYINDICES
The struct member offsets. |
| public static final int | QUEUEFAMILYINDEXCOUNT
The struct member offsets. |
| public static final int | SAMPLES
The struct member offsets. |
| public static final int | SHARINGMODE
The struct member offsets. |
| public static final int | SIZEOF
The struct size in bytes. |
| public static final int | STYPE
The struct member offsets. |
| public static final int | TILING
The struct member offsets. |
| public static final int | USAGE
The struct member offsets. |
| Access | Constructor and Description |
|---|---|
| protected | |
| public | VkImageCreateInfo(ByteBuffer container)
Creates a |
| Modifier and Type | Method and Description |
|---|---|
| public int | |
| public VkImageCreateInfo | |
| public static VkImageCreateInfo | |
| public static VkImageCreateInfo. | calloc(int
the buffer capacity capacity)Returns a new |
| public static VkImageCreateInfo | calloc(MemoryStack
the stack from which to allocate stack)Returns a new |
| public static VkImageCreateInfo. | calloc(int
the buffer capacity capacity, MemoryStack the stack from which to allocate stack)Returns a new |
| public static VkImageCreateInfo | |
| public static VkImageCreateInfo | |
| public static VkImageCreateInfo. | |
| public static VkImageCreateInfo. | |
| protected VkImageCreateInfo | create(long
the struct memory address address, ByteBuffer an optional container buffer, to be referenced strongly by the struct instance. container)Implements abstract org. the constructor, but returns the exact type of the Struct subclass.
|
| public static VkImageCreateInfo | |
| public static VkImageCreateInfo | |
| public static VkImageCreateInfo. | create(int
the buffer capacity capacity)Returns a new |
| public static VkImageCreateInfo. | create(long
the memory address address, int the buffer capacity capacity)Create a |
| public static VkImageCreateInfo | |
| public static VkImageCreateInfo. | |
| public VkExtent3D | |
| public VkImageCreateInfo | |
| public VkImageCreateInfo | |
| public int | |
| public VkImageCreateInfo | |
| public int | format()
a |
| public VkImageCreateInfo | |
| public int | |
| public VkImageCreateInfo | |
| public int | initialLayout()
a |
| public VkImageCreateInfo | |
| public static VkImageCreateInfo | |
| public static VkImageCreateInfo. | malloc(int
the buffer capacity capacity)Returns a new |
| public static VkImageCreateInfo | malloc(MemoryStack
the stack from which to allocate stack)Returns a new |
| public static VkImageCreateInfo. | malloc(int
the buffer capacity capacity, MemoryStack the stack from which to allocate stack)Returns a new |
| public static VkImageCreateInfo | |
| public static VkImageCreateInfo | |
| public static VkImageCreateInfo. | |
| public static VkImageCreateInfo. | |
| public int | |
| public VkImageCreateInfo | |
| public static int | |
| public static void | |
| public static VkExtent3D | |
| public static void | |
| public static int | |
| public static void | |
| public static int | |
| public static void | |
| public static int | |
| public static void | |
| public static int | |
| public static void | |
| public static int | |
| public static void | |
| public static long | |
| public static void | |
| public static IntBuffer | |
| public static void | |
| public static int | |
| public static void | nqueueFamilyIndexCount(long struct, int value)
Sets the specified value to the |
| public static int | |
| public static void | |
| public static int | |
| public static void | |
| public static int | |
| public static void | |
| public static int | |
| public static void | |
| public static int | |
| public static void | |
| public long | |
| public VkImageCreateInfo | |
| public VkImageCreateInfo | pNext(VkDedicatedAllocationImageCreateInfoNV value)
Prepends the specified |
| public VkImageCreateInfo | pNext(VkExportMetalObjectCreateInfoEXT value)
Prepends the specified |
| public VkImageCreateInfo | pNext(VkExternalFormatANDROID value)
Prepends the specified |
| public VkImageCreateInfo | pNext(VkExternalMemoryImageCreateInfo value)
Prepends the specified |
| public VkImageCreateInfo | pNext(VkExternalMemoryImageCreateInfoKHR value)
Prepends the specified |
| public VkImageCreateInfo | pNext(VkExternalMemoryImageCreateInfoNV value)
Prepends the specified |
| public VkImageCreateInfo | pNext(VkImageCompressionControlEXT value)
Prepends the specified |
| public VkImageCreateInfo | pNext(VkImageDrmFormatModifierExplicitCreateInfoEXT value)
Prepends the specified |
| public VkImageCreateInfo | pNext(VkImageDrmFormatModifierListCreateInfoEXT value)
Prepends the specified |
| public VkImageCreateInfo | pNext(VkImageFormatListCreateInfo value)
Prepends the specified |
| public VkImageCreateInfo | pNext(VkImageFormatListCreateInfoKHR value)
Prepends the specified |
| public VkImageCreateInfo | pNext(VkImageStencilUsageCreateInfo value)
Prepends the specified |
| public VkImageCreateInfo | pNext(VkImageStencilUsageCreateInfoEXT value)
Prepends the specified |
| public VkImageCreateInfo | pNext(VkImageSwapchainCreateInfoKHR value)
Prepends the specified |
| public VkImageCreateInfo | pNext(VkImportMetalIOSurfaceInfoEXT value)
Prepends the specified |
| public VkImageCreateInfo | pNext(VkImportMetalTextureInfoEXT value)
Prepends the specified |
| public VkImageCreateInfo | pNext(VkOpaqueCaptureDescriptorDataCreateInfoEXT value)
Prepends the specified |
| public VkImageCreateInfo | pNext(VkOpticalFlowImageFormatInfoNV value)
Prepends the specified |
| public VkImageCreateInfo | pNext(VkVideoProfileListInfoKHR value)
Prepends the specified |
| public IntBuffer | |
| public VkImageCreateInfo | pQueueFamilyIndices(IntBuffer value)
Sets the address of the specified |
| public int | |
| public VkImageCreateInfo | |
| public int | |
| public VkImageCreateInfo | |
| public VkImageCreateInfo | set(int sType, long pNext, int flags, int imageType, int format, VkExtent3D extent, int mipLevels, int arrayLayers, int samples, int tiling, int usage, int sharingMode, int queueFamilyIndexCount, IntBuffer pQueueFamilyIndices, int initialLayout)
Initializes this struct with the specified values. |
| public VkImageCreateInfo | Returns: this structthe source struct src)Copies the specified struct data to this struct. |
| public int | sharingMode()
a |
| public VkImageCreateInfo | |
| public int | |
| public int | |
| public VkImageCreateInfo | |
| public VkImageCreateInfo | |
| public int | |
| public VkImageCreateInfo | |
| public int | |
| public VkImageCreateInfo |