VkBlitImageInfo2
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;
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.srcImageis the source image.srcImageLayoutis the layout of the source image subresources for the blit.dstImageis the destination image.dstImageLayoutis the layout of the destination image subresources for the blit.regionCountis the number of regions to blit.pRegionsis a pointer to an array of VkImageBlit2 structures specifying the regions to blit.filteris 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-06421
srcImage must not use a
format that requires a
sampler Y′CBCR conversion
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-06422
dstImage must not use a
format that requires a
sampler Y′CBCR conversion
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 dstSubresource.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-maintenance8-10207
If the maintenance8 feature is enabled
and srcImage is of type VK_IMAGE_TYPE_3D, then for each
element of pRegions, srcSubresource.baseArrayLayer must be
0, and srcSubresource.layerCount and
dstSubresource.layerCount must each be 1
VUID-VkBlitImageInfo2-maintenance8-10208
If the maintenance8 feature is enabled
and dstImage is of type VK_IMAGE_TYPE_3D, then for each
element of pRegions, dstSubresource.baseArrayLayer must be
0, and srcSubresource.layerCount and
dstSubresource.layerCount must each be 1
VUID-VkBlitImageInfo2-maintenance8-10579
If the maintenance8 feature is enabled,
dstImage is VK_IMAGE_TYPE_3D, and srcImage is not of
type VK_IMAGE_TYPE_3D, then for each element of pRegions,
the absolute difference of the z member of each member of
dstOffsets must equal srcSubresource.layerCount
VUID-VkBlitImageInfo2-maintenance8-10580
If the maintenance8 feature is enabled,
srcImage is VK_IMAGE_TYPE_3D, and dstImage is not of
type VK_IMAGE_TYPE_3D, then for each element of pRegions,
the absolute difference of the z member of each member of
srcOffsets must equal dstSubresource.layerCount
VUID-VkBlitImageInfo2-srcImage-00240
If
the maintenance8 feature is not enabled and
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 structure in the pNext chain must be unique
VUID-VkBlitImageInfo2-srcImage-parameter
srcImage must be a valid VkImage handle
VUID-VkBlitImageInfo2-srcImageLayout-parameter
srcImageLayout must be a valid VkImageLayout value
VUID-VkBlitImageInfo2-dstImage-parameter
dstImage must be a valid VkImage handle
VUID-VkBlitImageInfo2-dstImageLayout-parameter
dstImageLayout must be a valid VkImageLayout value
VUID-VkBlitImageInfo2-pRegions-parameter
pRegions must be a valid pointer to an array of regionCount valid VkImageBlit2 structures
VUID-VkBlitImageInfo2-filter-parameter
filter must be a valid VkFilter value
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