Structures

VkBlitImageInfo2

Structure specifying parameters of blit image command

The VkBlitImageInfo2 structure is defined as:

typedef struct VkBlitImageInfo2 {
    VkStructureType sType;
    const void* pNext;
    VkImage srcImage;
    VkImageLayout srcImageLayout;
    VkImage dstImage;
    VkImageLayout dstImageLayout;
    uint32_t regionCount;
    const VkImageBlit2* pRegions;
    VkFilter filter;
} VkBlitImageInfo2;

or the equivalent

typedef VkBlitImageInfo2 VkBlitImageInfo2KHR;
  • sType is a VkStructureType value identifying 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 blit.
  • dstImage is the destination image.
  • dstImageLayout is the layout of the destination image subresources for the blit.
  • regionCount is the number of regions to blit.
  • pRegions is a pointer to an array of VkImageBlit2 structures specifying the regions to blit.
  • filter is a VkFilter specifying the filter to apply if the blits require scaling.

Valid Usage

VUID-VkBlitImageInfo2-pRegions-00215

The source region specified by each element of pRegions must be a region that is contained within srcImage

VUID-VkBlitImageInfo2-pRegions-00216

The destination region specified by each element of pRegions must be a region that is contained within dstImage

VUID-VkBlitImageInfo2-pRegions-00217

The union of all destination regions, specified by the elements of pRegions, must not overlap in memory with any texel that may be sampled during the blit operation

VUID-VkBlitImageInfo2-srcImage-01999

The format features of srcImage must contain VK_FORMAT_FEATURE_BLIT_SRC_BIT

VUID-VkBlitImageInfo2-srcImage-00219

srcImage must have been created with VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag

VUID-VkBlitImageInfo2-srcImage-00220

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

VUID-VkBlitImageInfo2-srcImageLayout-00221

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-VkBlitImageInfo2-srcImageLayout-01398

srcImageLayout must be VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or VK_IMAGE_LAYOUT_GENERAL

VUID-VkBlitImageInfo2-srcImage-09459

If srcImage and dstImage are the same, and an elements of pRegions contains the srcSubresource and dstSubresource with matching mipLevel and overlapping array layers, then the srcImageLayout and dstImageLayout must be VK_IMAGE_LAYOUT_GENERAL or VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR

VUID-VkBlitImageInfo2-dstImage-02000

The format features of dstImage must contain VK_FORMAT_FEATURE_BLIT_DST_BIT

VUID-VkBlitImageInfo2-dstImage-00224

dstImage must have been created with VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag

VUID-VkBlitImageInfo2-dstImage-00225

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

VUID-VkBlitImageInfo2-dstImageLayout-00226

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-VkBlitImageInfo2-dstImageLayout-01399

dstImageLayout must be VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or VK_IMAGE_LAYOUT_GENERAL

VUID-VkBlitImageInfo2-srcImage-00229

If either of srcImage or dstImage was created with a signed integer VkFormat, the other must also have been created with a signed integer VkFormat

VUID-VkBlitImageInfo2-srcImage-00230

If either of srcImage or dstImage was created with an unsigned integer VkFormat, the other must also have been created with an unsigned integer VkFormat

VUID-VkBlitImageInfo2-srcImage-00231

If either of srcImage or dstImage was created with a depth/stencil format, the other must have exactly the same format

VUID-VkBlitImageInfo2-srcImage-00232

If srcImage was created with a depth/stencil format, filtermust be VK_FILTER_NEAREST

VUID-VkBlitImageInfo2-srcImage-00233

srcImage must have been created with a samples value of VK_SAMPLE_COUNT_1_BIT

VUID-VkBlitImageInfo2-dstImage-00234

dstImage must have been created with a samples value of VK_SAMPLE_COUNT_1_BIT

VUID-VkBlitImageInfo2-filter-02001

If filter is VK_FILTER_LINEAR, then the format features of srcImagemust contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

VUID-VkBlitImageInfo2-filter-02002

If filter is VK_FILTER_CUBIC_EXT, then the format features of srcImagemust contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT

VUID-VkBlitImageInfo2-filter-00237

If filter is VK_FILTER_CUBIC_EXT, srcImage must be of type VK_IMAGE_TYPE_2D

VUID-VkBlitImageInfo2-srcSubresource-01705

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

VUID-VkBlitImageInfo2-dstSubresource-01706

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

VUID-VkBlitImageInfo2-srcSubresource-01707

If srcSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS, 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-VkBlitImageInfo2-dstSubresource-01708

If srcSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS, 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-VkBlitImageInfo2-dstImage-02545

dstImage and srcImage must not have been created with flags containing VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT

VUID-VkBlitImageInfo2-srcImage-00240

If either srcImage or dstImage is of type VK_IMAGE_TYPE_3D, then for each element of pRegions, srcSubresource.baseArrayLayer and dstSubresource.baseArrayLayer must each be 0, and srcSubresource.layerCount and dstSubresource.layerCountmust each be 1

VUID-VkBlitImageInfo2-aspectMask-00241

For each element of pRegions, srcSubresource.aspectMaskmust specify aspects present in srcImage

VUID-VkBlitImageInfo2-aspectMask-00242

For each element of pRegions, dstSubresource.aspectMaskmust specify aspects present in dstImage

VUID-VkBlitImageInfo2-srcOffset-00243

For each element of pRegions, srcOffsets[0].x and srcOffsets[1].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-VkBlitImageInfo2-srcOffset-00244

For each element of pRegions, srcOffsets[0].y and srcOffsets[1].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-VkBlitImageInfo2-srcImage-00245

If srcImage is of type VK_IMAGE_TYPE_1D, then for each element of pRegions, srcOffsets[0].y must be 0 and srcOffsets[1].y must be 1

VUID-VkBlitImageInfo2-srcOffset-00246

For each element of pRegions, srcOffsets[0].z and srcOffsets[1].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-VkBlitImageInfo2-srcImage-00247

If srcImage is of type VK_IMAGE_TYPE_1D or VK_IMAGE_TYPE_2D, then for each element of pRegions, srcOffsets[0].z must be 0 and srcOffsets[1].z must be 1

VUID-VkBlitImageInfo2-dstOffset-00248

For each element of pRegions, dstOffsets[0].x and dstOffsets[1].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-VkBlitImageInfo2-dstOffset-00249

For each element of pRegions, dstOffsets[0].y and dstOffsets[1].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-VkBlitImageInfo2-dstImage-00250

If dstImage is of type VK_IMAGE_TYPE_1D, then for each element of pRegions, dstOffsets[0].y must be 0 and dstOffsets[1].y must be 1

VUID-VkBlitImageInfo2-dstOffset-00251

For each element of pRegions, dstOffsets[0].z and dstOffsets[1].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-VkBlitImageInfo2-dstImage-00252

If dstImage is of type VK_IMAGE_TYPE_1D or VK_IMAGE_TYPE_2D, then for each element of pRegions, dstOffsets[0].z must be 0 and dstOffsets[1].z must be 1

VUID-VkBlitImageInfo2-pRegions-04561

If any element of pRegions contains VkCopyCommandTransformInfoQCOM in its pNext chain, then srcImage and dstImage must not be block-compressed images

VUID-VkBlitImageInfo2KHR-pRegions-06207

If any element of pRegions contains VkCopyCommandTransformInfoQCOM in its pNext chain, then srcImage must be of type VK_IMAGE_TYPE_2D

VUID-VkBlitImageInfo2KHR-pRegions-06208

If any element of pRegions contains VkCopyCommandTransformInfoQCOM in its pNext chain, then srcImage must not have a multi-planar format

VUID-VkBlitImageInfo2-filter-09204

If filter is VK_FILTER_CUBIC_EXT and if the selectableCubicWeights feature is not enabled then the cubic weights must be VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM

Valid Usage (Implicit)

VUID-VkBlitImageInfo2-sType-sType

sType must be VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2

VUID-VkBlitImageInfo2-pNext-pNext

pNext must be NULL or a pointer to a valid instance of VkBlitImageCubicWeightsInfoQCOM

VUID-VkBlitImageInfo2-sType-unique

The sType value of each struct in the pNext chain must be unique

VUID-VkBlitImageInfo2-srcImage-parameter

srcImage must be a valid VkImage handle

VUID-VkBlitImageInfo2-dstImage-parameter

dstImage must be a valid VkImage handle

VUID-VkBlitImageInfo2-pRegions-parameter

pRegions must be a valid pointer to an array of regionCount valid VkImageBlit2 structures

VUID-VkBlitImageInfo2-regionCount-arraylength

regionCount must be greater than 0

VUID-VkBlitImageInfo2-commonparent

Both of dstImage, and srcImage must have been created, allocated, or retrieved from the same VkDevice