Function Prototype

vkCmdCopyBuffer2

Copy data between buffer regions

To copy data between buffer objects, call:

void vkCmdCopyBuffer2(
    VkCommandBuffer commandBuffer,
    const VkCopyBufferInfo2* pCopyBufferInfo);
void vkCmdCopyBuffer2KHR(
    VkCommandBuffer commandBuffer,
    const VkCopyBufferInfo2* pCopyBufferInfo);
  • commandBuffer is the command buffer into which the command will be recorded.
  • pCopyBufferInfo is a pointer to a VkCopyBufferInfo2 structure describing the copy parameters.

Each source region specified by pCopyBufferInfo→pRegions is copied from the source buffer to the destination region of the destination buffer. If any of the specified regions in pCopyBufferInfo→srcBuffer overlaps in memory with any of the specified regions in pCopyBufferInfo→dstBuffer, values read from those overlapping regions are undefined.

Valid Usage

VUID-vkCmdCopyBuffer2-commandBuffer-01822

If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, srcBuffer must not be a protected buffer

VUID-vkCmdCopyBuffer2-commandBuffer-01823

If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, dstBuffer must not be a protected buffer

VUID-vkCmdCopyBuffer2-commandBuffer-01824

If commandBuffer is a protected command buffer and protectedNoFault is not supported, dstBuffer must not be an unprotected buffer

Valid Usage (Implicit)

VUID-vkCmdCopyBuffer2-pCopyBufferInfo-parameter

pCopyBufferInfo must be a valid pointer to a valid VkCopyBufferInfo2 structure

VUID-vkCmdCopyBuffer2-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-vkCmdCopyBuffer2-renderpass

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

VUID-vkCmdCopyBuffer2-suspended

This command must not be called between suspended render pass instances

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