VkCopyMemoryIndirectCommandKHR(3)

# VkCopyMemoryIndirectCommandKHR(3) Manual Page

## Name

VkCopyMemoryIndirectCommandKHR - Structure specifying indirect memory region copy operation

## C Specification

The structure describing source and destination memory regions, `VkCopyMemoryIndirectCommandKHR` is defined as:

    // Provided by VK_KHR_copy_memory_indirect
    typedef struct VkCopyMemoryIndirectCommandKHR {
        VkDeviceAddress    srcAddress;
        VkDeviceAddress    dstAddress;
        VkDeviceSize       size;
    } VkCopyMemoryIndirectCommandKHR;

    // Provided by VK_NV_copy_memory_indirect
    // Equivalent to VkCopyMemoryIndirectCommandKHR
    typedef VkCopyMemoryIndirectCommandKHR VkCopyMemoryIndirectCommandNV;

## Members

- `srcAddress` is the starting address of the source device memory to copy from.

- `dstAddress` is the starting address of the destination device memory to copy to.

- `size` is the size of the copy in bytes.

## Description

Valid Usage

- VUID-VkCopyMemoryIndirectCommandKHR-srcAddress-10958
  The `srcAddress` must be 4 byte aligned

- VUID-VkCopyMemoryIndirectCommandKHR-dstAddress-10959
  The `dstAddress` must be 4 byte aligned

- VUID-VkCopyMemoryIndirectCommandKHR-size-10960
  The `size` must be 4 byte aligned

- VUID-VkCopyMemoryIndirectCommandKHR-srcAddress-10961
  The memory in range [`srcAddress`, `srcAddress` + `size` - 1] must be within the bounds of the memory allocation backing `srcAddress`

- VUID-VkCopyMemoryIndirectCommandKHR-dstAddress-10962
  The memory in range [`dstAddress`, `dstAddress` + `size` - 1] must be within the bounds of the memory allocation backing `dstAddress`

- VUID-VkCopyMemoryIndirectCommandKHR-srcAddress-12211
  The range of memory defined by `srcAddress` and `size` must be a device address range allocated to the application from a buffer created with the VK_BUFFER_USAGE_TRANSFER_SRC_BIT usage flag set

- VUID-VkCopyMemoryIndirectCommandKHR-dstAddress-12212
  The range of memory defined by `dstAddress` and `size` must be a device address range allocated to the application from a buffer created with the VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag set

Valid Usage (Implicit)

- VUID-VkCopyMemoryIndirectCommandKHR-srcAddress-parameter
  `srcAddress` must be a valid VkDeviceAddress value

- VUID-VkCopyMemoryIndirectCommandKHR-dstAddress-parameter
  `dstAddress` must be a valid VkDeviceAddress value

## See Also

VK_KHR_copy_memory_indirect, VK_NV_copy_memory_indirect, VkDeviceAddress, VkDeviceSize

## Document Notes

For more information, see the Vulkan Specification.

This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification, not directly.

## Copyright

Copyright 2014-2026 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0