Function Prototype

vkCmdCopyMemoryKHR

Copy data between memory ranges

To copy data between memory ranges, call:

void vkCmdCopyMemoryKHR(
    VkCommandBuffer commandBuffer,
    const VkCopyDeviceMemoryInfoKHR* pCopyMemoryInfo);
  • commandBuffer is the command buffer into which the command will be recorded.
  • pCopyMemoryInfo a pointer to a VkCopyDeviceMemoryInfoKHR structure describing the copies to perform.

Valid Usage

VUID-vkCmdCopyMemoryKHR-commandBuffer-13012

If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, the srcCopyFlags member of all elements of pCopyMemoryInfo→pRegions must not include VK_ADDRESS_COMMAND_PROTECTED_BIT_KHR

VUID-vkCmdCopyMemoryKHR-commandBuffer-13013

If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, the dstCopyFlags member of all elements of pCopyMemoryInfo→pRegions must not include VK_ADDRESS_COMMAND_PROTECTED_BIT_KHR

VUID-vkCmdCopyMemoryKHR-commandBuffer-13014

If commandBuffer is a protected command buffer and protectedNoFault is not supported, the dstCopyFlags member of all elements of pCopyMemoryInfo→pRegions must include VK_ADDRESS_COMMAND_PROTECTED_BIT_KHR

Valid Usage (Implicit)

VUID-vkCmdCopyMemoryKHR-pCopyMemoryInfo-parameter

If pCopyMemoryInfo is not NULL, pCopyMemoryInfo must be a valid pointer to a valid VkCopyDeviceMemoryInfoKHR structure

VUID-vkCmdCopyMemoryKHR-commandBuffer-cmdpool

The VkCommandPool that commandBuffer was allocated from must support VK_QUEUE_TRANSFER_BIT operations

VUID-vkCmdCopyMemoryKHR-renderpass

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

VUID-vkCmdCopyMemoryKHR-suspended

This command must not be called between suspended render pass instances

VUID-vkCmdCopyMemoryKHR-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