The
format features
of srcImage must contain
FORMAT_FEATURE_TRANSFER_SRC_BIT
srcImageLayout must
specify the layout of the image subresources of srcImage specified
in pRegions at the time this command is executed on a
Device
srcImageLayout must
be
IMAGE_LAYOUT_SHARED_PRESENT_KHR,
IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
or IMAGE_LAYOUT_GENERAL
If srcImage and dstImage
are the same, and any elements of pRegions contains the
srcSubresource and dstSubresource with matching mipLevel and
overlapping array layers, then the srcImageLayout and
dstImageLayout must be
IMAGE_LAYOUT_GENERAL or
IMAGE_LAYOUT_SHARED_PRESENT_KHR
The
format features
of dstImage must contain
FORMAT_FEATURE_TRANSFER_DST_BIT
dstImageLayout must
specify the layout of the image subresources of dstImage specified
in pRegions at the time this command is executed on a
Device
dstImageLayout must
be
IMAGE_LAYOUT_SHARED_PRESENT_KHR,
IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
or IMAGE_LAYOUT_GENERAL
If the
Format of each of srcImage and
dstImage is not a
multi-planar format,
the Format of each of srcImage and
dstImage must be
size-compatible
In a copy to or from a plane of a
multi-planar image,
the Format of the image and plane
must be compatible according to
the description of compatible planes
for the plane being copied
If the
Format of each of srcImage and
dstImage is a
compressed image format,
the formats must have the same texel block extent
The sample count of
srcImage and dstImage must match
The srcOffset and extent
members of each element of pRegions must respect the image
transfer granularity requirements of commandBuffer’s command
pool’s queue family, as described in
QueueFamilyProperties
The dstOffset and extent
members of each element of pRegions must respect the image
transfer granularity requirements of commandBuffer’s command
pool’s queue family, as described in
QueueFamilyProperties
If neither srcImage nor
dstImage has a
multi-planar format
and the
maintenance8
feature is not enabled then for each element of pRegions,
srcSubresource.aspectMask and dstSubresource.aspectMask must
match
For each element of
pRegions where srcSubresource.aspectMask and
dstSubresource.aspectMask each contain at least one of
IMAGE_ASPECT_DEPTH_BIT or
IMAGE_ASPECT_STENCIL_BIT,
srcSubresource.aspectMask and dstSubresource.aspectMask must
match
If
srcSubresource.aspectMask is
IMAGE_ASPECT_COLOR_BIT,
then dstSubresource.aspectMask must not contain both
IMAGE_ASPECT_DEPTH_BIT and
IMAGE_ASPECT_STENCIL_BIT
If
dstSubresource.aspectMask is
IMAGE_ASPECT_COLOR_BIT,
then srcSubresource.aspectMask must not contain both
IMAGE_ASPECT_DEPTH_BIT and
IMAGE_ASPECT_STENCIL_BIT
If srcImage has a
multi-planar format,
then for each element of pRegions, srcSubresource.aspectMask
must be a single valid
multi-planar aspect mask
bit
If dstImage has a
multi-planar format,
then for each element of pRegions, dstSubresource.aspectMask
must be a single valid
multi-planar aspect mask
bit
If srcImage has a
multi-planar format
and the dstImage does not have a multi-planar image format, then
for each element of pRegions, dstSubresource.aspectMask must
be IMAGE_ASPECT_COLOR_BIT
If dstImage has a
multi-planar format
and the srcImage does not have a multi-planar image format, then
for each element of pRegions, srcSubresource.aspectMask must
be IMAGE_ASPECT_COLOR_BIT
If
srcSubresource.aspectMask is
IMAGE_ASPECT_COLOR_BIT and
dstSubresource.aspectMask is
IMAGE_ASPECT_DEPTH_BIT or
IMAGE_ASPECT_STENCIL_BIT,
then the Format values of srcImage
and dstImage must be compatible according to
the list of compatible depth-stencil and color formats
If
srcSubresource.aspectMask is
IMAGE_ASPECT_DEPTH_BIT or
IMAGE_ASPECT_STENCIL_BIT
and dstSubresource.aspectMask is
IMAGE_ASPECT_COLOR_BIT,
then the Format values of srcImage
and dstImage must be compatible according to
the list of compatible depth-stencil and color formats
If the
VK_KHR_maintenance1
extension is not enabled, or
PhysicalDeviceProperties::apiVersion
is less than Vulkan 1.1, and either srcImage or dstImage is of
type IMAGE_TYPE_3D, then for each
element of pRegions, srcSubresource.baseArrayLayer and
dstSubresource.baseArrayLayer must both be 0, and
srcSubresource.layerCount and dstSubresource.layerCount must
both be 1
If srcImage is of type
IMAGE_TYPE_3D, then for each element
of pRegions, srcSubresource.baseArrayLayer must be 0 and
srcSubresource.layerCount must be 1
If dstImage is of type
IMAGE_TYPE_3D, then for each element
of pRegions, dstSubresource.baseArrayLayer must be 0 and
dstSubresource.layerCount must be 1
For each element of
pRegions, srcSubresource.aspectMask must specify aspects
present in srcImage
For each element of
pRegions, dstSubresource.aspectMask must specify aspects
present in dstImage
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
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
If srcImage is of type
IMAGE_TYPE_1D, then for each element
of pRegions, srcOffset.y must be 0 and extent.height
must be 1
If srcImage is of type
IMAGE_TYPE_3D, then 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
If srcImage is of type
IMAGE_TYPE_1D, then for each element
of pRegions, srcOffset.z must be 0 and extent.depth must
be 1
If dstImage is of type
IMAGE_TYPE_1D, then for each element
of pRegions, dstOffset.z must be 0
If either the
Format of each of srcImage and
dstImage is not a
compressed image format,
and dstImage is of type
IMAGE_TYPE_1D, then for each element
of pRegions, extent.depth must be 1
If srcImage is of type
IMAGE_TYPE_2D, then for each element
of pRegions, srcOffset.z must be 0
If dstImage is of type
IMAGE_TYPE_2D, then for each element
of pRegions, dstOffset.z must be 0
If the
VK_KHR_maintenance1
extension is not enabled, and
PhysicalDeviceProperties::apiVersion
is less than Vulkan 1.1, srcImage and dstImage must have the
same ImageType
If the
VK_KHR_maintenance1
extension is not enabled, and
PhysicalDeviceProperties::apiVersion
is less than Vulkan 1.1, srcImage or dstImage is of type
IMAGE_TYPE_2D, then for each element
of pRegions, extent.depth must be 1
If srcImage and dstImage
have a different ImageType, and the
maintenance5
feature is not enabled, one must be
IMAGE_TYPE_3D and the other must
be IMAGE_TYPE_2D
If srcImage and dstImage
have the same ImageType, for each
element of pRegions, if neither of the layerCount members of
srcSubresource or dstSubresource are
REMAINING_ARRAY_LAYERS, the
layerCount members of srcSubresource or dstSubresource must
match
If srcImage and dstImage
have the same ImageType, and one of
the layerCount members of srcSubresource or dstSubresource is
REMAINING_ARRAY_LAYERS, the other
member must be either
REMAINING_ARRAY_LAYERS or equal to the
arrayLayers member of the ImageCreateInfo
used to create the image minus baseArrayLayer
If srcImage and dstImage
are both of type IMAGE_TYPE_2D, then
for each element of pRegions, extent.depth must be 1
If srcImage is of type
IMAGE_TYPE_2D, and dstImage is of
type IMAGE_TYPE_3D, then for each
element of pRegions, extent.depth must equal
srcSubresource.layerCount
If dstImage is of type
IMAGE_TYPE_2D, and srcImage is of
type IMAGE_TYPE_3D, then for each
element of pRegions, extent.depth must equal
dstSubresource.layerCount
For each element of
pRegions, dstOffset.x and (extent.width + dstOffset.x),
where extent is
adjusted for size-compatibility,
must both be greater than or equal to 0 and less than or equal
to the width of the specified dstSubresource of dstImage
For each element of
pRegions, dstOffset.y and (extent.height + dstOffset.y),
where extent is
adjusted for size-compatibility,
must both be greater than or equal to 0 and less than or equal
to the height of the specified dstSubresource of dstImage
If dstImage is of type
IMAGE_TYPE_1D, then for each element
of pRegions, dstOffset.y must be 0
If either the
Format of each of srcImage and
dstImage is not a
compressed image format,
and dstImage is of type
IMAGE_TYPE_1D, then for each element
of pRegions, extent.height must be 1, where extent is
adjusted for size-compatibility
If dstImage is of type
IMAGE_TYPE_3D, then for each element
of pRegions, dstOffset.z and (extent.depth + dstOffset.z),
where extent is
adjusted for size-compatibility,
must both be greater than or equal to 0 and less than or equal
to the depth of the specified dstSubresource of dstImage
For each element of
pRegions, srcOffset.x must be a multiple of the
texel block extent width
of the Format of srcImage
For each element of
pRegions, srcOffset.y must be a multiple of the
texel block extent height
of the Format of srcImage
For each element of
pRegions, srcOffset.z must be a multiple of the
texel block extent depth
of the Format of srcImage
For each element of
pRegions, dstOffset.x must be a multiple of the
texel block extent width
of the Format of dstImage
For each element of
pRegions, dstOffset.y must be a multiple of the
texel block extent height
of the Format of dstImage
For each element of
pRegions, dstOffset.z must be a multiple of the
texel block extent depth
of the Format of dstImage
For each element of
pRegions, if the sum of srcOffset.x and extent.width does not
equal the width of the subresource specified by srcSubresource,
extent.width must be a multiple of the
texel block extent width
of the Format of srcImage
For each element of
pRegions, if the sum of srcOffset.y and extent.height does not
equal the height of the subresource specified by srcSubresource,
extent.height must be a multiple of the
texel block extent height
of the Format of srcImage
For each element of
pRegions, if the sum of srcOffset.z and extent.depth does not
equal the depth of the subresource specified by srcSubresource,
extent.depth must be a multiple of the
texel block extent depth
of the Format of srcImage
If the aspect member of any
element of pRegions includes any flag other than
IMAGE_ASPECT_STENCIL_BIT
or srcImage was not created with
separate stencil usage,
srcImage must have been created with the
IMAGE_USAGE_TRANSFER_SRC_BIT
usage flag set
If the aspect member of any
element of pRegions includes any flag other than
IMAGE_ASPECT_STENCIL_BIT
or dstImage was not created with
separate stencil usage,
dstImage must have been created with the
IMAGE_USAGE_TRANSFER_DST_BIT
usage flag set
If the aspect member of any
element of pRegions includes
IMAGE_ASPECT_STENCIL_BIT,
and srcImage was created with
separate stencil usage,
srcImage must have been created with the
IMAGE_USAGE_TRANSFER_SRC_BIT
usage flag set
If the aspect member of any
element of pRegions includes
IMAGE_ASPECT_STENCIL_BIT,
and dstImage was created with
separate stencil usage,
srcImage must have been created with the
IMAGE_USAGE_TRANSFER_DST_BIT
usage flag set
If srcImage is non-sparse
then the image or each specified disjoint plane must be bound
completely and contiguously to a single
DeviceMemory object
The
srcSubresource.mipLevel member of each element of pRegions
must be less than the mipLevels specified in
ImageCreateInfo when srcImage was created
If
srcSubresource.layerCount is not
REMAINING_ARRAY_LAYERS,
srcSubresource.baseArrayLayer + srcSubresource.layerCount of
each element of pRegions must be less than or equal to the
arrayLayers specified in ImageCreateInfo
when srcImage was created
srcImage must not have
been created with flags containing
IMAGE_CREATE_SUBSAMPLED_BIT_EXT
If dstImage is non-sparse
then the image or each specified disjoint plane must be bound
completely and contiguously to a single
DeviceMemory object
The
dstSubresource.mipLevel member of each element of pRegions
must be less than the mipLevels specified in
ImageCreateInfo when dstImage was created
If
dstSubresource.layerCount is not
REMAINING_ARRAY_LAYERS,
dstSubresource.baseArrayLayer + dstSubresource.layerCount of
each element of pRegions must be less than or equal to the
arrayLayers specified in ImageCreateInfo
when dstImage was created
dstImage must not have
been created with flags containing
IMAGE_CREATE_SUBSAMPLED_BIT_EXT