vkCmdCopyMemoryIndirectNV
To copy data between two memory regions by specifying copy parameters indirectly in a buffer, call:
void vkCmdCopyMemoryIndirectNV(
VkCommandBuffer commandBuffer,
VkDeviceAddress copyBufferAddress,
uint32_t copyCount,
uint32_t stride);
commandBufferis the command buffer into which the command will be recorded.copyBufferAddressis the buffer address specifying the copy parameters. This buffer is laid out in memory as an array of VkCopyMemoryIndirectCommandNV structures.copyCountis the number of copies to execute, and can be zero.strideis the stride in bytes between successive sets of copy parameters.
Each region read from copyBufferAddress is copied from the source
region to the specified destination region.
The results are undefined: if any of the source and destination regions
overlap in memory.
Valid Usage
VUID-vkCmdCopyMemoryIndirectNV-None-07653
The indirectCopy feature must be
enabled
VUID-vkCmdCopyMemoryIndirectNV-copyBufferAddress-07654
copyBufferAddress must be 4 byte aligned
VUID-vkCmdCopyMemoryIndirectNV-stride-07655
stride must be a multiple of 4 and must be greater than or
equal to sizeof(VkCopyMemoryIndirectCommandNV)
VUID-vkCmdCopyMemoryIndirectNV-commandBuffer-07656
The VkCommandPool that commandBuffer was allocated from
must support at least one of the
VkPhysicalDeviceCopyMemoryIndirectPropertiesNV::supportedQueues
Valid Usage (Implicit)
VUID-vkCmdCopyMemoryIndirectNV-commandBuffer-parameter
commandBuffer must be a valid VkCommandBuffer handle
VUID-vkCmdCopyMemoryIndirectNV-commandBuffer-recording
commandBuffer must be in the recording state
VUID-vkCmdCopyMemoryIndirectNV-commandBuffer-cmdpool
The VkCommandPool that commandBuffer was allocated from must support transfer, graphics, or compute operations
VUID-vkCmdCopyMemoryIndirectNV-renderpass
This command must only be called outside of a render pass instance
VUID-vkCmdCopyMemoryIndirectNV-videocoding
This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized - Host access to the
VkCommandPoolthatcommandBufferwas allocated from must be externally synchronized ::