// Copyright 2020-2021 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

// Common Valid Usage
// Common to VkCmdCopyBuffer* commands
  * [[VUID-{refpage}-srcOffset-00113]]
    The pname:srcOffset member of each element of pname:pRegions must: be
    less than the size of pname:srcBuffer
  * [[VUID-{refpage}-dstOffset-00114]]
    The pname:dstOffset member of each element of pname:pRegions must: be
    less than the size of pname:dstBuffer
  * [[VUID-{refpage}-size-00115]]
    The pname:size member of each element of pname:pRegions must: be less
    than or equal to the size of pname:srcBuffer minus pname:srcOffset
  * [[VUID-{refpage}-size-00116]]
    The pname:size member of each element of pname:pRegions must: be less
    than or equal to the size of pname:dstBuffer minus pname:dstOffset
  * [[VUID-{refpage}-pRegions-00117]]
    The union of the source regions, and the union of the destination
    regions, specified by the elements of pname:pRegions, must: not overlap
    in memory
  * [[VUID-{refpage}-srcBuffer-00118]]
    pname:srcBuffer must: have been created with
    ename:VK_BUFFER_USAGE_TRANSFER_SRC_BIT usage flag
  * [[VUID-{refpage}-srcBuffer-00119]]
    If pname:srcBuffer is non-sparse then it must: be bound completely and
    contiguously to a single sname:VkDeviceMemory object
  * [[VUID-{refpage}-dstBuffer-00120]]
    pname:dstBuffer must: have been created with
    ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
  * [[VUID-{refpage}-dstBuffer-00121]]
    If pname:dstBuffer is non-sparse then it must: be bound completely and
    contiguously to a single sname:VkDeviceMemory object
// Common Valid Usage
