## C Specification

The VkResolveImageInfo2 structure is defined as:

// Provided by VK_VERSION_1_3
typedef struct VkResolveImageInfo2 {
VkStructureType           sType;
const void*               pNext;
VkImage                   srcImage;
VkImageLayout             srcImageLayout;
VkImage                   dstImage;
VkImageLayout             dstImageLayout;
uint32_t                  regionCount;
const VkImageResolve2*    pRegions;
} VkResolveImageInfo2;

or the equivalent

// Provided by VK_KHR_copy_commands2
typedef VkResolveImageInfo2 VkResolveImageInfo2KHR;

## Members

• sType is the type of this structure.

• pNext is NULL or a pointer to a structure extending this structure.

• srcImage is the source image.

• srcImageLayout is the layout of the source image subresources for the resolve.

• dstImage is the destination image.

• dstImageLayout is the layout of the destination image subresources for the resolve.

• regionCount is the number of regions to resolve.

• pRegions is a pointer to an array of VkImageResolve2 structures specifying the regions to resolve.

## Description

Valid Usage
• VUID-VkResolveImageInfo2-pRegions-00255
The union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memory

• VUID-VkResolveImageInfo2-srcImage-00256
If srcImage is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory object

• VUID-VkResolveImageInfo2-srcImage-00257
srcImage must have a sample count equal to any valid sample count value other than VK_SAMPLE_COUNT_1_BIT

• VUID-VkResolveImageInfo2-dstImage-00258
If dstImage is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory object

• VUID-VkResolveImageInfo2-dstImage-00259
dstImage must have a sample count equal to VK_SAMPLE_COUNT_1_BIT

• VUID-VkResolveImageInfo2-srcImageLayout-00260
srcImageLayout must specify the layout of the image subresources of srcImage specified in pRegions at the time this command is executed on a VkDevice

• VUID-VkResolveImageInfo2-srcImageLayout-01400
srcImageLayout must be VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or VK_IMAGE_LAYOUT_GENERAL

• VUID-VkResolveImageInfo2-dstImageLayout-00262
dstImageLayout must specify the layout of the image subresources of dstImage specified in pRegions at the time this command is executed on a VkDevice

• VUID-VkResolveImageInfo2-dstImageLayout-01401
dstImageLayout must be VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or VK_IMAGE_LAYOUT_GENERAL

• VUID-VkResolveImageInfo2-dstImage-02003
The format features of dstImage must contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT

• VUID-VkResolveImageInfo2-linearColorAttachment-06519
If the linearColorAttachment feature is enabled and the image is created with VK_IMAGE_TILING_LINEAR, the format features of dstImage must contain VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV

• VUID-VkResolveImageInfo2-srcImage-01386
srcImage and dstImage must have been created with the same image format

• VUID-VkResolveImageInfo2-srcSubresource-01709
The srcSubresource.mipLevel member of each element of pRegions must be less than the mipLevels specified in VkImageCreateInfo when srcImage was created

• VUID-VkResolveImageInfo2-dstSubresource-01710
The dstSubresource.mipLevel member of each element of pRegions must be less than the mipLevels specified in VkImageCreateInfo when dstImage was created

• VUID-VkResolveImageInfo2-srcSubresource-01711
The srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must be less than or equal to the arrayLayers specified in VkImageCreateInfo when srcImage was created

• VUID-VkResolveImageInfo2-dstSubresource-01712
The dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions must be less than or equal to the arrayLayers specified in VkImageCreateInfo when dstImage was created

• VUID-VkResolveImageInfo2-dstImage-02546
dstImage and srcImage must not have been created with flags containing VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT

• VUID-VkResolveImageInfo2-srcImage-04446
If either srcImage or dstImage are of type VK_IMAGE_TYPE_3D, then for each element of pRegions, srcSubresource.baseArrayLayer must be 0 and srcSubresource.layerCount must be 1

• VUID-VkResolveImageInfo2-srcImage-04447
If either srcImage or dstImage are of type VK_IMAGE_TYPE_3D, then for each element of pRegions, dstSubresource.baseArrayLayer must be 0 and dstSubresource.layerCount must be 1

• VUID-VkResolveImageInfo2-srcOffset-00269
For each element of pRegions, srcOffset.x and (extent.width + srcOffset.x) must both be greater than or equal to 0 and less than or equal to the width of the specified srcSubresource of srcImage

• VUID-VkResolveImageInfo2-srcOffset-00270
For each element of pRegions, srcOffset.y and (extent.height + srcOffset.y) must both be greater than or equal to 0 and less than or equal to the height of the specified srcSubresource of srcImage

• VUID-VkResolveImageInfo2-srcImage-00271
If srcImage is of type VK_IMAGE_TYPE_1D, then for each element of pRegions, srcOffset.y must be 0 and extent.height must be 1

• VUID-VkResolveImageInfo2-srcOffset-00272
For each element of pRegions, srcOffset.z and (extent.depth + srcOffset.z) must both be greater than or equal to 0 and less than or equal to the depth of the specified srcSubresource of srcImage

• VUID-VkResolveImageInfo2-srcImage-00273
If srcImage is of type VK_IMAGE_TYPE_1D or VK_IMAGE_TYPE_2D, then for each element of pRegions, srcOffset.z must be 0 and extent.depth must be 1

• VUID-VkResolveImageInfo2-dstOffset-00274
For each element of pRegions, dstOffset.x and (extent.width + dstOffset.x) must both be greater than or equal to 0 and less than or equal to the width of the specified dstSubresource of dstImage

• VUID-VkResolveImageInfo2-dstOffset-00275
For each element of pRegions, dstOffset.y and (extent.height + dstOffset.y) must both be greater than or equal to 0 and less than or equal to the height of the specified dstSubresource of dstImage

• VUID-VkResolveImageInfo2-dstImage-00276
If dstImage is of type VK_IMAGE_TYPE_1D, then for each element of pRegions, dstOffset.y must be 0 and extent.height must be 1

• VUID-VkResolveImageInfo2-dstOffset-00277
For each element of pRegions, dstOffset.z and (extent.depth + dstOffset.z) must both be greater than or equal to 0 and less than or equal to the depth of the specified dstSubresource of dstImage

• VUID-VkResolveImageInfo2-dstImage-00278
If dstImage is of type VK_IMAGE_TYPE_1D or VK_IMAGE_TYPE_2D, then for each element of pRegions, dstOffset.z must be 0 and extent.depth must be 1

• VUID-VkResolveImageInfo2-srcImage-06762
srcImage must have been created with VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag

• VUID-VkResolveImageInfo2-srcImage-06763
The format features of srcImage must contain VK_FORMAT_FEATURE_TRANSFER_SRC_BIT

• VUID-VkResolveImageInfo2-dstImage-06764
dstImage must have been created with VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag

• VUID-VkResolveImageInfo2-dstImage-06765
The format features of dstImage must contain VK_FORMAT_FEATURE_TRANSFER_DST_BIT

Valid Usage (Implicit)
• VUID-VkResolveImageInfo2-sType-sType
sType must be VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2

• VUID-VkResolveImageInfo2-pNext-pNext
pNext must be NULL

• VUID-VkResolveImageInfo2-srcImage-parameter
srcImage must be a valid VkImage handle

• VUID-VkResolveImageInfo2-srcImageLayout-parameter
srcImageLayout must be a valid VkImageLayout value

• VUID-VkResolveImageInfo2-dstImage-parameter
dstImage must be a valid VkImage handle

• VUID-VkResolveImageInfo2-dstImageLayout-parameter
dstImageLayout must be a valid VkImageLayout value

• VUID-VkResolveImageInfo2-pRegions-parameter
pRegions must be a valid pointer to an array of regionCount valid VkImageResolve2 structures

• VUID-VkResolveImageInfo2-regionCount-arraylength
regionCount must be greater than 0

• VUID-VkResolveImageInfo2-commonparent
Both of dstImage, and srcImage must have been created, allocated, or retrieved from the same VkDevice