VkCopyMemoryToImageIndirectInfoKHR
The VkCopyMemoryToImageIndirectInfoKHR structure is defined as:
typedef struct VkCopyMemoryToImageIndirectInfoKHR {
VkStructureType sType;
const void* pNext;
VkAddressCopyFlagsKHR srcCopyFlags;
uint32_t copyCount;
VkStridedDeviceAddressRangeKHR copyAddressRange;
VkImage dstImage;
VkImageLayout dstImageLayout;
const VkImageSubresourceLayers* pImageSubresources;
} VkCopyMemoryToImageIndirectInfoKHR;
pub struct CopyMemoryToImageIndirectInfoKHR {
s_type: vk::StructureType,
p_next: *const c_void,
src_copy_flags: vk::AddressCopyFlagsKHR,
copy_count: u32,
copy_address_range: vk::StridedDeviceAddressRangeKHR,
dst_image: vk::Image,
dst_image_layout: vk::ImageLayout,
p_image_subresources: *const vk::ImageSubresourceLayers,
}
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.srcCopyFlagsis a VkAddressCopyFlagsKHR value defining the copy flags for the source address range.copyCountis the number of copies to execute, and can be zero.copyAddressRangeis a memory region specifying the copy parameters. It is laid out as an array of VkCopyMemoryToImageIndirectCommandKHR structures.dstImageis the destination image.dstImageLayoutis the layout of the destination image subresources for the copy.pImageSubresourcesis a pointer to an array ofcopyCount
VkImageSubresourceLayers structures, specifying the image subresources of the destination image data for the copy operation.
Valid Usage
VUID-VkCopyMemoryToImageIndirectInfoKHR-srcCopyFlags-10950
If srcCopyFlags contains VK_ADDRESS_COPY_SPARSE_BIT_KHR, the
source memory regions accessed must be bound to
memory
VUID-VkCopyMemoryToImageIndirectInfoKHR-copyCount-10951
copyCount must be less than or equal to
copyAddressRange.size / copyAddressRange.stride
VUID-VkCopyMemoryToImageIndirectInfoKHR-copyAddressRange-10952
copyAddressRange.address must be 4 byte aligned
VUID-VkCopyMemoryToImageIndirectInfoKHR-copyAddressRange-10953
copyAddressRange.stride must be a multiple of 4 and must be
greater than or equal to
sizeof(VkCopyMemoryToImageIndirectCommandKHR)
VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImage-10955
The format features of dstImage must contain
VK_FORMAT_FEATURE_2_COPY_IMAGE_INDIRECT_DST_BIT_KHR
VUID-VkCopyMemoryToImageIndirectInfoKHR-copyAddressRange-12213
copyAddressRange must be a device address range allocated to the
application from a buffer created with the
VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT usage flag set
VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImage-07661
dstImage must not be a protected image
VUID-VkCopyMemoryToImageIndirectInfoKHR-aspectMask-07662
The aspectMask member for every subresource in
pImageSubresources must only have a single bit set
VUID-VkCopyMemoryToImageIndirectInfoKHR-aspectMask-12287
The aspectMask member for every subresource in
pImageSubresources must specify an aspect present in
dstImage
VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImage-07664
dstImage must have been created with the
VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag set
VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImage-07665
If dstImage is non-sparse then the image
or each specified disjoint plane
must be bound completely and contiguously to a single
VkDeviceMemory object
VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImage-07973
dstImage must have a sample count equal to
VK_SAMPLE_COUNT_1_BIT
VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImageLayout-07667
dstImageLayout must specify the layout of the image subresources
of dstImage at the time this command is executed on a
VkDevice
VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImageLayout-07669
dstImageLayout must be
VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR,
or VK_IMAGE_LAYOUT_GENERAL
VUID-VkCopyMemoryToImageIndirectInfoKHR-mipLevel-07670
The specified mipLevel of each region in pImageSubresourcesmust be less than the mipLevels specified in
VkImageCreateInfo when dstImage was created
VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImage-12288
If dstImage is not of type VK_IMAGE_TYPE_3D, and the
specified layerCount of each region in pImageSubresources is
not VK_REMAINING_ARRAY_LAYERS, the specified baseArrayLayer
+ layerCount of each region in pImageSubresources must
be less than or equal to the arrayLayers specified in
VkImageCreateInfo when dstImage was created
VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImage-12289
If dstImage is of type VK_IMAGE_TYPE_3D, and the specified
layerCount of each region in pImageSubresources is not
VK_REMAINING_ARRAY_LAYERS, for each destination region,
(imageSubresource.baseArrayLayer +
imageSubresource.layerCount) must be less than or equal to the
depth of the specified subresource
VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImage-12290
If dstImage is of type VK_IMAGE_TYPE_3D, and the specified
layerCount of each region in pImageSubresources is not
VK_REMAINING_ARRAY_LAYERS, for each destination region, if
(imageSubresource.baseArrayLayer +
imageSubresource.layerCount) does not equal the depth of the
specified subresource, imageSubresource.layerCount must be a
multiple of the texel block extent
depth of the VkFormat of dstImage
VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImage-12291
If dstImage is of type VK_IMAGE_TYPE_3D, for each
destination region, imageSubresource.baseArrayLayer must be a
multiple of the texel block extent
depth of the VkFormat of dstImage
VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImage-12292
If dstImage is of type VK_IMAGE_TYPE_3D, for each
destination region, imageSubresource.baseArrayLayer must be less
than or equal to the depth of the specified subresource
VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImage-07673
dstImage must not have been created with flags containing
VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
VUID-VkCopyMemoryToImageIndirectInfoKHR-commandBuffer-07674
If the queue family used to create the VkCommandPool which
commandBuffer was allocated from does not support
VK_QUEUE_GRAPHICS_BIT, for each region, the aspectMask
member of pImageSubresources must not be
VK_IMAGE_ASPECT_DEPTH_BIT or VK_IMAGE_ASPECT_STENCIL_BIT
VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImage-10974
The format features of dstImage must contain
VK_FORMAT_FEATURE_TRANSFER_DST_BIT
VUID-VkCopyMemoryToImageIndirectInfoKHR-copyAddressRange-10975
Each memory location accessed by this command must not be accessed by
both a source region and a destination region, and must not be accessed
by more than one destination region, as specified in copyAddressRange
and accessed according to Buffer and
Image Addressing
Valid Usage (Implicit)
VUID-VkCopyMemoryToImageIndirectInfoKHR-sType-sType
sType must be VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INDIRECT_INFO_KHR
VUID-VkCopyMemoryToImageIndirectInfoKHR-pNext-pNext
pNext must be NULL
VUID-VkCopyMemoryToImageIndirectInfoKHR-srcCopyFlags-parameter
srcCopyFlags must be a valid combination of VkAddressCopyFlagBitsKHR values
VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImage-parameter
dstImage must be a valid VkImage handle
VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImageLayout-parameter
dstImageLayout must be a valid VkImageLayout value
VUID-VkCopyMemoryToImageIndirectInfoKHR-pImageSubresources-parameter
pImageSubresources must be a valid pointer to an array of copyCount valid VkImageSubresourceLayers structures
VUID-VkCopyMemoryToImageIndirectInfoKHR-copyCount-arraylength
copyCount must be greater than 0