Function Prototype

vkCmdCopyMemoryToImageIndirectKHR

Copy data from a memory region to an image object

To copy data from a memory region to an image object by specifying copy parameters in memory, call:

void vkCmdCopyMemoryToImageIndirectKHR(
    VkCommandBuffer commandBuffer,
    const VkCopyMemoryToImageIndirectInfoKHR* pCopyMemoryToImageIndirectInfo);

Each region specified in the memory referenced by pCopyMemoryToImageIndirectInfo→copyAddressRange is copied from the source region to an image region in the destination image. If the destination image is of type VK_IMAGE_TYPE_3D, the starting slice and number of slices to copy are specified in pImageSubresources→baseArrayLayer and pImageSubresources→layerCount respectively as imageOffset and imageExtent from VkCopyMemoryToImageIndirectCommandKHR are only available at device execution time.

Valid Usage

VUID-vkCmdCopyMemoryToImageIndirectKHR-commandBuffer-10948

The VkCommandPool that commandBuffer was allocated from must support at least one of the queue types specified in VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR::supportedQueues

VUID-vkCmdCopyMemoryToImageIndirectKHR-commandBuffer-10949

commandBuffer must not be a protected command buffer

Valid Usage (Implicit)

VUID-vkCmdCopyMemoryToImageIndirectKHR-pCopyMemoryToImageIndirectInfo-parameter

pCopyMemoryToImageIndirectInfo must be a valid pointer to a valid VkCopyMemoryToImageIndirectInfoKHR structure

VUID-vkCmdCopyMemoryToImageIndirectKHR-commandBuffer-cmdpool

The VkCommandPool that commandBuffer was allocated from must support VK_QUEUE_COMPUTE_BIT, VK_QUEUE_GRAPHICS_BIT, or VK_QUEUE_TRANSFER_BIT operations

VUID-vkCmdCopyMemoryToImageIndirectKHR-renderpass

This command must only be called outside of a render pass instance

VUID-vkCmdCopyMemoryToImageIndirectKHR-suspended

This command must not be called between suspended render pass instances

VUID-vkCmdCopyMemoryToImageIndirectKHR-videocoding

This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the VkCommandPool that commandBuffer was allocated from must be externally synchronized