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

// Common Valid Usage
// Common to VkBufferMemoryBarrier* structs
  * [[VUID-{refpage}-offset-01187]]
    pname:offset must: be less than the size of pname:buffer
  * [[VUID-{refpage}-size-01188]]
    If pname:size is not equal to ename:VK_WHOLE_SIZE, pname:size must: be
    greater than `0`
  * [[VUID-{refpage}-size-01189]]
    If pname:size is not equal to ename:VK_WHOLE_SIZE, pname:size must: be
    less than or equal to than the size of pname:buffer minus pname:offset
  * [[VUID-{refpage}-buffer-01931]]
    If pname:buffer is non-sparse then it must: be bound completely and
    contiguously to a single sname:VkDeviceMemory object
ifndef::VK_VERSION_1_1,VK_KHR_external_memory[]
  * [[VUID-{refpage}-buffer-04086]]
    If pname:buffer was created with a sharing mode of
    ename:VK_SHARING_MODE_EXCLUSIVE, and pname:srcQueueFamilyIndex and
    pname:dstQueueFamilyIndex are not equal, pname:srcQueueFamilyIndex and
    pname:dstQueueFamilyIndex must: be valid queue families
endif::VK_VERSION_1_1,VK_KHR_external_memory[]
ifdef::VK_VERSION_1_1,VK_KHR_external_memory[]
  * [[VUID-{refpage}-srcQueueFamilyIndex-04087]]
    If pname:srcQueueFamilyIndex is not equal to pname:dstQueueFamilyIndex,
    at least one must: not be a special queue family reserved for external
    memory ownership transfers, as described in
    <<synchronization-queue-transfers>>
  * [[VUID-{refpage}-buffer-04088]]
    If pname:buffer was created with a sharing mode of
    ename:VK_SHARING_MODE_CONCURRENT, pname:srcQueueFamilyIndex and
    pname:dstQueueFamilyIndex are not equal, and one of
    pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex is one of the
    special queue family values reserved for external memory transfers, the
    other must: be ename:VK_QUEUE_FAMILY_IGNORED
  * [[VUID-{refpage}-buffer-04089]]
    If pname:buffer was created with a sharing mode of
    ename:VK_SHARING_MODE_EXCLUSIVE, and pname:srcQueueFamilyIndex and
    pname:dstQueueFamilyIndex are not equal, pname:srcQueueFamilyIndex and
    pname:dstQueueFamilyIndex must: both be valid queue families, or one of
    the special queue family values reserved for external memory transfers,
    as described in <<synchronization-queue-transfers>>
endif::VK_VERSION_1_1,VK_KHR_external_memory[]
// Common Valid Usage
