| // 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 |