VkDeviceMemoryCopyKHR
The VkDeviceMemoryCopyKHR structure is defined as:
typedef struct VkDeviceMemoryCopyKHR {
VkStructureType sType;
const void* pNext;
VkDeviceAddressRangeKHR srcRange;
VkAddressCommandFlagsKHR srcFlags;
VkDeviceAddressRangeKHR dstRange;
VkAddressCommandFlagsKHR dstFlags;
} VkDeviceMemoryCopyKHR;
pub struct DeviceMemoryCopyKHR {
s_type: vk::StructureType,
p_next: *const c_void,
src_range: vk::DeviceAddressRangeKHR,
src_flags: vk::AddressCommandFlagsKHR,
dst_range: vk::DeviceAddressRangeKHR,
dst_flags: vk::AddressCommandFlagsKHR,
}
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.srcRangeis a VkDeviceAddressRangeKHR structure defining the source memory to copy from.srcFlagsis a VkAddressCommandFlagsKHR value defining the copy flags for the source address range.dstRangeis a VkDeviceAddressRangeKHR structure defining the destination memory to copy to.dstFlagsis a VkAddressCommandFlagsKHR value defining the copy flags for the destination address range.
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
VUID-VkDeviceMemoryCopyKHR-pNext-pNext
pNext must be NULL
VUID-VkDeviceMemoryCopyKHR-srcFlags-parameter
srcFlags must be a valid combination of VkAddressCommandFlagBitsKHR values
VUID-VkDeviceMemoryCopyKHR-dstFlags-parameter
dstFlags must be a valid combination of VkAddressCommandFlagBitsKHR values