Structures

VkDeviceMemoryCopyKHR

Structure specifying a memory range copy operation

The VkDeviceMemoryCopyKHR structure is defined as:

typedef struct VkDeviceMemoryCopyKHR {
    VkStructureType sType;
    const void* pNext;
    VkDeviceAddressRangeKHR srcRange;
    VkAddressCommandFlagsKHR srcFlags;
    VkDeviceAddressRangeKHR dstRange;
    VkAddressCommandFlagsKHR dstFlags;
} VkDeviceMemoryCopyKHR;

This structure defines a copy operation where srcRange.size bytes will be copied from srcRange.address to dstRange.address.

Valid Usage

VUID-VkDeviceMemoryCopyKHR-srcRange-13097

If the range specified by srcRange is not bound completely to memory when accessed, srcFlags must not include VK_ADDRESS_COMMAND_FULLY_BOUND_BIT_KHR

VUID-VkDeviceMemoryCopyKHR-srcRange-13098

If the buffer from which the range specified by srcRange was created with VK_BUFFER_CREATE_PROTECTED_BIT, and protectedNoFault is not supported, srcFlags must include VK_ADDRESS_COMMAND_PROTECTED_BIT_KHR

VUID-VkDeviceMemoryCopyKHR-srcRange-13099

If the buffer from which the range specified by srcRange was created without VK_BUFFER_CREATE_PROTECTED_BIT, and protectedNoFault is not supported, srcFlags must not include VK_ADDRESS_COMMAND_PROTECTED_BIT_KHR

VUID-VkDeviceMemoryCopyKHR-srcFlags-13100

srcFlags must not include both VK_ADDRESS_COMMAND_STORAGE_BUFFER_USAGE_BIT_KHR and VK_ADDRESS_COMMAND_UNKNOWN_STORAGE_BUFFER_USAGE_BIT_KHR

VUID-VkDeviceMemoryCopyKHR-srcRange-13122

If any buffer, which is bound to a range of VkDeviceMemory that overlaps the range backing srcRange, was created with VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, srcFlags must include VK_ADDRESS_COMMAND_STORAGE_BUFFER_USAGE_BIT_KHR or VK_ADDRESS_COMMAND_UNKNOWN_STORAGE_BUFFER_USAGE_BIT_KHR

VUID-VkDeviceMemoryCopyKHR-srcRange-13123

If any buffer, which is bound to a range of VkDeviceMemory that overlaps the range backing srcRange, was created without VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, srcFlags must not include VK_ADDRESS_COMMAND_STORAGE_BUFFER_USAGE_BIT_KHR

VUID-VkDeviceMemoryCopyKHR-srcFlags-13101

srcFlags must not include both VK_ADDRESS_COMMAND_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR and VK_ADDRESS_COMMAND_UNKNOWN_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR

VUID-VkDeviceMemoryCopyKHR-srcRange-13124

If any buffer, which is bound to a range of VkDeviceMemory that overlaps the range backing srcRange, was created with VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT, srcFlags must include VK_ADDRESS_COMMAND_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR or VK_ADDRESS_COMMAND_UNKNOWN_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR

VUID-VkDeviceMemoryCopyKHR-srcRange-13125

If any buffer, which is bound to a range of VkDeviceMemory that overlaps the range backing srcRange, was created without VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT, srcFlags must not include VK_ADDRESS_COMMAND_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR

VUID-VkDeviceMemoryCopyKHR-dstRange-13097

If the range specified by dstRange is not bound completely to memory when accessed, dstFlags must not include VK_ADDRESS_COMMAND_FULLY_BOUND_BIT_KHR

VUID-VkDeviceMemoryCopyKHR-dstRange-13098

If the buffer from which the range specified by dstRange was created with VK_BUFFER_CREATE_PROTECTED_BIT, and protectedNoFault is not supported, dstFlags must include VK_ADDRESS_COMMAND_PROTECTED_BIT_KHR

VUID-VkDeviceMemoryCopyKHR-dstRange-13099

If the buffer from which the range specified by dstRange was created without VK_BUFFER_CREATE_PROTECTED_BIT, and protectedNoFault is not supported, dstFlags must not include VK_ADDRESS_COMMAND_PROTECTED_BIT_KHR

VUID-VkDeviceMemoryCopyKHR-dstFlags-13100

dstFlags must not include both VK_ADDRESS_COMMAND_STORAGE_BUFFER_USAGE_BIT_KHR and VK_ADDRESS_COMMAND_UNKNOWN_STORAGE_BUFFER_USAGE_BIT_KHR

VUID-VkDeviceMemoryCopyKHR-dstRange-13122

If any buffer, which is bound to a range of VkDeviceMemory that overlaps the range backing dstRange, was created with VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, dstFlags must include VK_ADDRESS_COMMAND_STORAGE_BUFFER_USAGE_BIT_KHR or VK_ADDRESS_COMMAND_UNKNOWN_STORAGE_BUFFER_USAGE_BIT_KHR

VUID-VkDeviceMemoryCopyKHR-dstRange-13123

If any buffer, which is bound to a range of VkDeviceMemory that overlaps the range backing dstRange, was created without VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, dstFlags must not include VK_ADDRESS_COMMAND_STORAGE_BUFFER_USAGE_BIT_KHR

VUID-VkDeviceMemoryCopyKHR-dstFlags-13101

dstFlags must not include both VK_ADDRESS_COMMAND_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR and VK_ADDRESS_COMMAND_UNKNOWN_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR

VUID-VkDeviceMemoryCopyKHR-dstRange-13124

If any buffer, which is bound to a range of VkDeviceMemory that overlaps the range backing dstRange, was created with VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT, dstFlags must include VK_ADDRESS_COMMAND_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR or VK_ADDRESS_COMMAND_UNKNOWN_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR

VUID-VkDeviceMemoryCopyKHR-dstRange-13125

If any buffer, which is bound to a range of VkDeviceMemory that overlaps the range backing dstRange, was created without VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT, dstFlags must not include VK_ADDRESS_COMMAND_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR

VUID-VkDeviceMemoryCopyKHR-size-13016

The size member of dstRange must be greater than or equal to the size member of srcRange

VUID-VkDeviceMemoryCopyKHR-srcRange-13017

The buffer from which srcRange was queried must have been created with VK_BUFFER_USAGE_TRANSFER_SRC_BIT

VUID-VkDeviceMemoryCopyKHR-dstRange-13018

The buffer from which dstRange was queried must have been created with VK_BUFFER_USAGE_TRANSFER_DST_BIT

Valid Usage (Implicit)

VUID-VkDeviceMemoryCopyKHR-sType-sType

sType must be VK_STRUCTURE_TYPE_DEVICE_MEMORY_COPY_KHR