VkCopyMemoryToImageIndirectCommandKHR
The structure describing source and destination memory regions,
VkCopyMemoryToImageIndirectCommandKHR is defined as:
typedef struct VkCopyMemoryToImageIndirectCommandKHR {
VkDeviceAddress srcAddress;
uint32_t bufferRowLength;
uint32_t bufferImageHeight;
VkImageSubresourceLayers imageSubresource;
VkOffset3D imageOffset;
VkExtent3D imageExtent;
} VkCopyMemoryToImageIndirectCommandKHR;
pub struct CopyMemoryToImageIndirectCommandKHR {
src_address: vk::DeviceAddress,
buffer_row_length: u32,
buffer_image_height: u32,
image_subresource: vk::ImageSubresourceLayers,
image_offset: vk::Offset3D,
image_extent: vk::Extent3D,
}
typedef VkCopyMemoryToImageIndirectCommandKHR VkCopyMemoryToImageIndirectCommandNV;
type CopyMemoryToImageIndirectCommandNV = vk::CopyMemoryToImageIndirectCommandKHR;
srcAddressis the starting address of the source device memory to copy from.bufferRowLengthandbufferImageHeightspecify in texels a subregion of a larger two- or three-dimensional image in buffer memory, and control the addressing calculations. If either of these values is zero, that aspect of the buffer memory is considered to be tightly packed according to theimageExtent.imageSubresourceis a VkImageSubresourceLayers structure used to specify the specific image subresources of the image used for the destination image data, which must match the value specified in corresponding index of thepCopyMemoryToImageIndirectInfo→pImageSubresourcesarray of vkCmdCopyMemoryToImageIndirectKHR during command recording.imageOffsetselects the initialx,y,zoffsets in texels of the sub-region of the destination image data.imageExtentis the size in texels of the destination image inwidth,heightanddepth.
Valid Usage
VUID-VkCopyMemoryToImageIndirectCommandKHR-srcAddress-10963
The srcAddress must be 4 byte aligned
VUID-VkCopyMemoryToImageIndirectCommandKHR-dstImage-12282
If dstImage does not have either a depth/stencil format
or a multi-planar format,
srcAddress must be a multiple of the
texel block size
VUID-VkCopyMemoryToImageIndirectCommandKHR-dstImage-12283
If dstImage has a
multi-planar format,
srcAddress must be a multiple of the element size of the
compatible format for the format and the aspectMask of the
imageSubresource as defined in Compatible Formats of Planes of Multi-Planar Formats
VUID-VkCopyMemoryToImageIndirectCommandKHR-bufferRowLength-10964
bufferRowLength must be 0, or greater than or equal to the
width member of imageExtent
VUID-VkCopyMemoryToImageIndirectCommandKHR-bufferImageHeight-10965
bufferImageHeight must be 0, or greater than or equal to the
height member of imageExtent
VUID-VkCopyMemoryToImageIndirectCommandKHR-imageOffset-10966
imageOffset must specify a valid offset in the destination image
VUID-VkCopyMemoryToImageIndirectCommandKHR-imageExtent-10967
imageExtent must specify a valid region in the destination image
and can be 0
VUID-VkCopyMemoryToImageIndirectCommandKHR-srcAddress-10968
The memory region starting at srcAddress and described by
bufferRowLength and bufferImageHeight must not exceed the
bounds of the memory allocation backing memory at srcAddress
VUID-VkCopyMemoryToImageIndirectCommandKHR-imageOffset-10969
The imageOffset and imageExtent members of each region must
respect the image transfer granularity requirements of
commandBuffer’s command pool’s queue family, as described in
VkQueueFamilyProperties
VUID-VkCopyMemoryToImageIndirectCommandKHR-imageOffset-10970
For each destination region, imageOffset.x and
(imageExtent.width + imageOffset.x) must both be
greater than or equal to 0 and less than or equal to the width of the
specified subresource
VUID-VkCopyMemoryToImageIndirectCommandKHR-imageOffset-10971
For each destination region, imageOffset.y and
(imageExtent.height + imageOffset.y) must both
be greater than or equal to 0 and less than or equal to the height of
the specified subresource
VUID-VkCopyMemoryToImageIndirectCommandKHR-imageSubresource-12284
The members of imageSubresource must be identical to the members
of the VkImageSubresourceLayers structure specified in the
corresponding index of the
pCopyMemoryToImageIndirectInfo→pImageSubresources array of
vkCmdCopyMemoryToImageIndirectKHR during command recording
VUID-VkCopyMemoryToImageIndirectCommandKHR-dstImage-12285
If dstImage is of type VK_IMAGE_TYPE_1D, imageOffset.ymust be 0 and imageExtent.height must be 1
VUID-VkCopyMemoryToImageIndirectCommandKHR-dstImage-12286
If dstImage is of type VK_IMAGE_TYPE_1D or
VK_IMAGE_TYPE_2D, imageOffset.z must be 0 and
imageExtent.depth must be 1
VUID-VkCopyMemoryToImageIndirectCommandKHR-srcAddress-12214
srcAddress must be a device address allocated to the application
from a buffer created with the VK_BUFFER_USAGE_TRANSFER_SRC_BIT
usage flag set
Valid Usage (Implicit)
VUID-VkCopyMemoryToImageIndirectCommandKHR-srcAddress-parameter
srcAddress must be a valid VkDeviceAddress value
VUID-VkCopyMemoryToImageIndirectCommandKHR-imageSubresource-parameter
imageSubresource must be a valid VkImageSubresourceLayers structure