• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1{
2  "version info": {
3    "schema version": 2,
4    "api version": "1.1.102",
5    "comment": "from git branch: github-master commit: 35e7bee5f0f50b7c1634cd205ded035acea43ad9",
6    "date": "2019-03-04 05:06:36Z"
7  },
8  "validation": {
9    "vkGetInstanceProcAddr": {
10      "core": [
11        {
12          "vuid": "VUID-vkGetInstanceProcAddr-instance-parameter",
13          "text": " If <code>instance</code> is not <code>NULL</code>, <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
14        },
15        {
16          "vuid": "VUID-vkGetInstanceProcAddr-pName-parameter",
17          "text": " <code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
18        }
19      ]
20    },
21    "vkGetDeviceProcAddr": {
22      "core": [
23        {
24          "vuid": "VUID-vkGetDeviceProcAddr-device-parameter",
25          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
26        },
27        {
28          "vuid": "VUID-vkGetDeviceProcAddr-pName-parameter",
29          "text": " <code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
30        }
31      ]
32    },
33    "vkEnumerateInstanceVersion": {
34      "(VK_VERSION_1_1)": [
35        {
36          "vuid": "VUID-vkEnumerateInstanceVersion-pApiVersion-parameter",
37          "text": " <code>pApiVersion</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
38        }
39      ]
40    },
41    "vkCreateInstance": {
42      "core": [
43        {
44          "vuid": "VUID-vkCreateInstance-ppEnabledExtensionNames-01388",
45          "text": " All <a href=\"#extendingvulkan-extensions-extensiondependencies\">required extensions</a> for each extension in the <a href=\"#VkInstanceCreateInfo\">VkInstanceCreateInfo</a>::<code>ppEnabledExtensionNames</code> list <strong class=\"purple\">must</strong> also be present in that list."
46        },
47        {
48          "vuid": "VUID-vkCreateInstance-pCreateInfo-parameter",
49          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkInstanceCreateInfo</code> structure"
50        },
51        {
52          "vuid": "VUID-vkCreateInstance-pAllocator-parameter",
53          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
54        },
55        {
56          "vuid": "VUID-vkCreateInstance-pInstance-parameter",
57          "text": " <code>pInstance</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkInstance</code> handle"
58        }
59      ]
60    },
61    "VkInstanceCreateInfo": {
62      "core": [
63        {
64          "vuid": "VUID-VkInstanceCreateInfo-sType-sType",
65          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO</code>"
66        },
67        {
68          "vuid": "VUID-VkInstanceCreateInfo-pNext-pNext",
69          "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDebugReportCallbackCreateInfoEXT\">VkDebugReportCallbackCreateInfoEXT</a>, <a href=\"#VkDebugUtilsMessengerCreateInfoEXT\">VkDebugUtilsMessengerCreateInfoEXT</a>, <a href=\"#VkValidationFeaturesEXT\">VkValidationFeaturesEXT</a>, or <a href=\"#VkValidationFlagsEXT\">VkValidationFlagsEXT</a>"
70        },
71        {
72          "vuid": "VUID-VkInstanceCreateInfo-sType-unique",
73          "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
74        },
75        {
76          "vuid": "VUID-VkInstanceCreateInfo-flags-zerobitmask",
77          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
78        },
79        {
80          "vuid": "VUID-VkInstanceCreateInfo-pApplicationInfo-parameter",
81          "text": " If <code>pApplicationInfo</code> is not <code>NULL</code>, <code>pApplicationInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkApplicationInfo</code> structure"
82        },
83        {
84          "vuid": "VUID-VkInstanceCreateInfo-ppEnabledLayerNames-parameter",
85          "text": " If <code>enabledLayerCount</code> is not <code>0</code>, <code>ppEnabledLayerNames</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledLayerCount</code> null-terminated UTF-8 strings"
86        },
87        {
88          "vuid": "VUID-VkInstanceCreateInfo-ppEnabledExtensionNames-parameter",
89          "text": " If <code>enabledExtensionCount</code> is not <code>0</code>, <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledExtensionCount</code> null-terminated UTF-8 strings"
90        }
91      ]
92    },
93    "VkValidationFlagsEXT": {
94      "(VK_EXT_validation_flags)": [
95        {
96          "vuid": "VUID-VkValidationFlagsEXT-sType-sType",
97          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT</code>"
98        },
99        {
100          "vuid": "VUID-VkValidationFlagsEXT-pDisabledValidationChecks-parameter",
101          "text": " <code>pDisabledValidationChecks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>disabledValidationCheckCount</code> valid <a href=\"#VkValidationCheckEXT\">VkValidationCheckEXT</a> values"
102        },
103        {
104          "vuid": "VUID-VkValidationFlagsEXT-disabledValidationCheckCount-arraylength",
105          "text": " <code>disabledValidationCheckCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
106        }
107      ]
108    },
109    "VkValidationFeaturesEXT": {
110      "(VK_EXT_validation_features)": [
111        {
112          "vuid": "VUID-VkValidationFeaturesEXT-sType-sType",
113          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT</code>"
114        },
115        {
116          "vuid": "VUID-VkValidationFeaturesEXT-pEnabledValidationFeatures-parameter",
117          "text": " If <code>enabledValidationFeatureCount</code> is not <code>0</code>, <code>pEnabledValidationFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledValidationFeatureCount</code> valid <a href=\"#VkValidationFeatureEnableEXT\">VkValidationFeatureEnableEXT</a> values"
118        },
119        {
120          "vuid": "VUID-VkValidationFeaturesEXT-pDisabledValidationFeatures-parameter",
121          "text": " If <code>disabledValidationFeatureCount</code> is not <code>0</code>, <code>pDisabledValidationFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>disabledValidationFeatureCount</code> valid <a href=\"#VkValidationFeatureDisableEXT\">VkValidationFeatureDisableEXT</a> values"
122        }
123      ]
124    },
125    "VkApplicationInfo": {
126      "core": [
127        {
128          "vuid": "VUID-VkApplicationInfo-sType-sType",
129          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_APPLICATION_INFO</code>"
130        },
131        {
132          "vuid": "VUID-VkApplicationInfo-pNext-pNext",
133          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
134        },
135        {
136          "vuid": "VUID-VkApplicationInfo-pApplicationName-parameter",
137          "text": " If <code>pApplicationName</code> is not <code>NULL</code>, <code>pApplicationName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
138        },
139        {
140          "vuid": "VUID-VkApplicationInfo-pEngineName-parameter",
141          "text": " If <code>pEngineName</code> is not <code>NULL</code>, <code>pEngineName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
142        }
143      ]
144    },
145    "vkDestroyInstance": {
146      "core": [
147        {
148          "vuid": "VUID-vkDestroyInstance-instance-00629",
149          "text": " All child objects created using <code>instance</code> <strong class=\"purple\">must</strong> have been destroyed prior to destroying <code>instance</code>"
150        },
151        {
152          "vuid": "VUID-vkDestroyInstance-instance-00630",
153          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>instance</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
154        },
155        {
156          "vuid": "VUID-vkDestroyInstance-instance-00631",
157          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>instance</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
158        },
159        {
160          "vuid": "VUID-vkDestroyInstance-instance-parameter",
161          "text": " If <code>instance</code> is not <code>NULL</code>, <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
162        },
163        {
164          "vuid": "VUID-vkDestroyInstance-pAllocator-parameter",
165          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
166        }
167      ]
168    },
169    "vkEnumeratePhysicalDevices": {
170      "core": [
171        {
172          "vuid": "VUID-vkEnumeratePhysicalDevices-instance-parameter",
173          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
174        },
175        {
176          "vuid": "VUID-vkEnumeratePhysicalDevices-pPhysicalDeviceCount-parameter",
177          "text": " <code>pPhysicalDeviceCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
178        },
179        {
180          "vuid": "VUID-vkEnumeratePhysicalDevices-pPhysicalDevices-parameter",
181          "text": " If the value referenced by <code>pPhysicalDeviceCount</code> is not <code>0</code>, and <code>pPhysicalDevices</code> is not <code>NULL</code>, <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPhysicalDeviceCount</code> <code>VkPhysicalDevice</code> handles"
182        }
183      ]
184    },
185    "vkGetPhysicalDeviceProperties": {
186      "core": [
187        {
188          "vuid": "VUID-vkGetPhysicalDeviceProperties-physicalDevice-parameter",
189          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
190        },
191        {
192          "vuid": "VUID-vkGetPhysicalDeviceProperties-pProperties-parameter",
193          "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceProperties</code> structure"
194        }
195      ]
196    },
197    "vkGetPhysicalDeviceProperties2": {
198      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
199        {
200          "vuid": "VUID-vkGetPhysicalDeviceProperties2-physicalDevice-parameter",
201          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
202        },
203        {
204          "vuid": "VUID-vkGetPhysicalDeviceProperties2-pProperties-parameter",
205          "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceProperties2</code> structure"
206        }
207      ]
208    },
209    "VkPhysicalDeviceProperties2": {
210      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
211        {
212          "vuid": "VUID-VkPhysicalDeviceProperties2-sType-sType",
213          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2</code>"
214        },
215        {
216          "vuid": "VUID-VkPhysicalDeviceProperties2-pNext-pNext",
217          "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceConservativeRasterizationPropertiesEXT\">VkPhysicalDeviceConservativeRasterizationPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixPropertiesNV\">VkPhysicalDeviceCooperativeMatrixPropertiesNV</a>, <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingPropertiesEXT\">VkPhysicalDeviceDescriptorIndexingPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDiscardRectanglePropertiesEXT\">VkPhysicalDeviceDiscardRectanglePropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDriverPropertiesKHR\">VkPhysicalDeviceDriverPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceExternalMemoryHostPropertiesEXT\">VkPhysicalDeviceExternalMemoryHostPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFloatControlsPropertiesKHR\">VkPhysicalDeviceFloatControlsPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapPropertiesEXT\">VkPhysicalDeviceFragmentDensityMapPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceIDProperties\">VkPhysicalDeviceIDProperties</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockPropertiesEXT\">VkPhysicalDeviceInlineUniformBlockPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceMaintenance3Properties\">VkPhysicalDeviceMaintenance3Properties</a>, <a href=\"#VkPhysicalDeviceMeshShaderPropertiesNV\">VkPhysicalDeviceMeshShaderPropertiesNV</a>, <a href=\"#VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX\">VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX</a>, <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>, <a href=\"#VkPhysicalDevicePCIBusInfoPropertiesEXT\">VkPhysicalDevicePCIBusInfoPropertiesEXT</a>, <a href=\"#VkPhysicalDevicePointClippingProperties\">VkPhysicalDevicePointClippingProperties</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryProperties\">VkPhysicalDeviceProtectedMemoryProperties</a>, <a href=\"#VkPhysicalDevicePushDescriptorPropertiesKHR\">VkPhysicalDevicePushDescriptorPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>, <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT\">VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceShaderCorePropertiesAMD\">VkPhysicalDeviceShaderCorePropertiesAMD</a>, <a href=\"#VkPhysicalDeviceShadingRateImagePropertiesNV\">VkPhysicalDeviceShadingRateImagePropertiesNV</a>, <a href=\"#VkPhysicalDeviceSubgroupProperties\">VkPhysicalDeviceSubgroupProperties</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>, or <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT\">VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT</a>"
218        },
219        {
220          "vuid": "VUID-VkPhysicalDeviceProperties2-sType-unique",
221          "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
222        }
223      ]
224    },
225    "VkPhysicalDeviceIDProperties": {
226      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_external_memory_capabilities,VK_KHR_external_semaphore_capabilities,VK_KHR_external_fence_capabilities)": [
227        {
228          "vuid": "VUID-VkPhysicalDeviceIDProperties-sType-sType",
229          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES</code>"
230        }
231      ]
232    },
233    "VkPhysicalDeviceDriverPropertiesKHR": {
234      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_KHR_driver_properties)": [
235        {
236          "vuid": "VUID-VkPhysicalDeviceDriverPropertiesKHR-sType-sType",
237          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR</code>"
238        }
239      ]
240    },
241    "VkPhysicalDevicePCIBusInfoPropertiesEXT": {
242      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_pci_bus_info)": [
243        {
244          "vuid": "VUID-VkPhysicalDevicePCIBusInfoPropertiesEXT-sType-sType",
245          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT</code>"
246        }
247      ]
248    },
249    "vkGetPhysicalDeviceQueueFamilyProperties": {
250      "core": [
251        {
252          "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties-physicalDevice-parameter",
253          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
254        },
255        {
256          "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties-pQueueFamilyPropertyCount-parameter",
257          "text": " <code>pQueueFamilyPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
258        },
259        {
260          "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties-pQueueFamilyProperties-parameter",
261          "text": " If the value referenced by <code>pQueueFamilyPropertyCount</code> is not <code>0</code>, and <code>pQueueFamilyProperties</code> is not <code>NULL</code>, <code>pQueueFamilyProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pQueueFamilyPropertyCount</code> <code>VkQueueFamilyProperties</code> structures"
262        }
263      ]
264    },
265    "vkGetPhysicalDeviceQueueFamilyProperties2": {
266      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
267        {
268          "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-physicalDevice-parameter",
269          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
270        },
271        {
272          "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-pQueueFamilyPropertyCount-parameter",
273          "text": " <code>pQueueFamilyPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
274        },
275        {
276          "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-pQueueFamilyProperties-parameter",
277          "text": " If the value referenced by <code>pQueueFamilyPropertyCount</code> is not <code>0</code>, and <code>pQueueFamilyProperties</code> is not <code>NULL</code>, <code>pQueueFamilyProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pQueueFamilyPropertyCount</code> <code>VkQueueFamilyProperties2</code> structures"
278        }
279      ]
280    },
281    "VkQueueFamilyProperties2": {
282      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
283        {
284          "vuid": "VUID-VkQueueFamilyProperties2-sType-sType",
285          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2</code>"
286        },
287        {
288          "vuid": "VUID-VkQueueFamilyProperties2-pNext-pNext",
289          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkQueueFamilyCheckpointPropertiesNV\">VkQueueFamilyCheckpointPropertiesNV</a>"
290        }
291      ]
292    },
293    "VkQueueFamilyCheckpointPropertiesNV": {
294      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_NV_device_diagnostic_checkpoints)": [
295        {
296          "vuid": "VUID-VkQueueFamilyCheckpointPropertiesNV-sType-sType",
297          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV</code>"
298        }
299      ]
300    },
301    "vkEnumeratePhysicalDeviceGroups": {
302      "(VK_VERSION_1_1,VK_KHR_device_group_creation)": [
303        {
304          "vuid": "VUID-vkEnumeratePhysicalDeviceGroups-instance-parameter",
305          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
306        },
307        {
308          "vuid": "VUID-vkEnumeratePhysicalDeviceGroups-pPhysicalDeviceGroupCount-parameter",
309          "text": " <code>pPhysicalDeviceGroupCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
310        },
311        {
312          "vuid": "VUID-vkEnumeratePhysicalDeviceGroups-pPhysicalDeviceGroupProperties-parameter",
313          "text": " If the value referenced by <code>pPhysicalDeviceGroupCount</code> is not <code>0</code>, and <code>pPhysicalDeviceGroupProperties</code> is not <code>NULL</code>, <code>pPhysicalDeviceGroupProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPhysicalDeviceGroupCount</code> <code>VkPhysicalDeviceGroupProperties</code> structures"
314        }
315      ]
316    },
317    "VkPhysicalDeviceGroupProperties": {
318      "(VK_VERSION_1_1,VK_KHR_device_group_creation)": [
319        {
320          "vuid": "VUID-VkPhysicalDeviceGroupProperties-sType-sType",
321          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES</code>"
322        },
323        {
324          "vuid": "VUID-VkPhysicalDeviceGroupProperties-pNext-pNext",
325          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
326        }
327      ]
328    },
329    "vkCreateDevice": {
330      "core": [
331        {
332          "vuid": "VUID-vkCreateDevice-ppEnabledExtensionNames-01387",
333          "text": " All <a href=\"#extendingvulkan-extensions-extensiondependencies\">required extensions</a> for each extension in the <a href=\"#VkDeviceCreateInfo\">VkDeviceCreateInfo</a>::<code>ppEnabledExtensionNames</code> list <strong class=\"purple\">must</strong> also be present in that list."
334        },
335        {
336          "vuid": "VUID-vkCreateDevice-physicalDevice-parameter",
337          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
338        },
339        {
340          "vuid": "VUID-vkCreateDevice-pCreateInfo-parameter",
341          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDeviceCreateInfo</code> structure"
342        },
343        {
344          "vuid": "VUID-vkCreateDevice-pAllocator-parameter",
345          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
346        },
347        {
348          "vuid": "VUID-vkCreateDevice-pDevice-parameter",
349          "text": " <code>pDevice</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDevice</code> handle"
350        }
351      ]
352    },
353    "VkDeviceCreateInfo": {
354      "core": [
355        {
356          "vuid": "VUID-VkDeviceCreateInfo-queueFamilyIndex-00372",
357          "text": ""
358        },
359        {
360          "vuid": "VUID-VkDeviceCreateInfo-sType-sType",
361          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO</code>"
362        },
363        {
364          "vuid": "VUID-VkDeviceCreateInfo-pNext-pNext",
365          "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>, <a href=\"#VkDeviceMemoryOverallocationCreateInfoAMD\">VkDeviceMemoryOverallocationCreateInfoAMD</a>, <a href=\"#VkPhysicalDevice16BitStorageFeatures\">VkPhysicalDevice16BitStorageFeatures</a>, <a href=\"#VkPhysicalDevice8BitStorageFeaturesKHR\">VkPhysicalDevice8BitStorageFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceASTCDecodeFeaturesEXT\">VkPhysicalDeviceASTCDecodeFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT\">VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBufferAddressFeaturesEXT\">VkPhysicalDeviceBufferAddressFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceComputeShaderDerivativesFeaturesNV\">VkPhysicalDeviceComputeShaderDerivativesFeaturesNV</a>, <a href=\"#VkPhysicalDeviceConditionalRenderingFeaturesEXT\">VkPhysicalDeviceConditionalRenderingFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixFeaturesNV\">VkPhysicalDeviceCooperativeMatrixFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCornerSampledImageFeaturesNV\">VkPhysicalDeviceCornerSampledImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV\">VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDepthClipEnableFeaturesEXT\">VkPhysicalDeviceDepthClipEnableFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExclusiveScissorFeaturesNV\">VkPhysicalDeviceExclusiveScissorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a>, <a href=\"#VkPhysicalDeviceFloat16Int8FeaturesKHR\">VkPhysicalDeviceFloat16Int8FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapFeaturesEXT\">VkPhysicalDeviceFragmentDensityMapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV\">VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockFeaturesEXT\">VkPhysicalDeviceInlineUniformBlockFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMemoryPriorityFeaturesEXT\">VkPhysicalDeviceMemoryPriorityFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMeshShaderFeaturesNV\">VkPhysicalDeviceMeshShaderFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMultiviewFeatures\">VkPhysicalDeviceMultiviewFeatures</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryFeatures\">VkPhysicalDeviceProtectedMemoryFeatures</a>, <a href=\"#VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV\">VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV</a>, <a href=\"#VkPhysicalDeviceSamplerYcbcrConversionFeatures\">VkPhysicalDeviceSamplerYcbcrConversionFeatures</a>, <a href=\"#VkPhysicalDeviceScalarBlockLayoutFeaturesEXT\">VkPhysicalDeviceScalarBlockLayoutFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderAtomicInt64FeaturesKHR\">VkPhysicalDeviceShaderAtomicInt64FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderDrawParameterFeatures\">VkPhysicalDeviceShaderDrawParameterFeatures</a>, <a href=\"#VkPhysicalDeviceShaderImageFootprintFeaturesNV\">VkPhysicalDeviceShaderImageFootprintFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShadingRateImageFeaturesNV\">VkPhysicalDeviceShadingRateImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackFeaturesEXT\">VkPhysicalDeviceTransformFeedbackFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceVariablePointerFeatures\">VkPhysicalDeviceVariablePointerFeatures</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT\">VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceVulkanMemoryModelFeaturesKHR\">VkPhysicalDeviceVulkanMemoryModelFeaturesKHR</a>, or <a href=\"#VkPhysicalDeviceYcbcrImageArraysFeaturesEXT\">VkPhysicalDeviceYcbcrImageArraysFeaturesEXT</a>"
366        },
367        {
368          "vuid": "VUID-VkDeviceCreateInfo-sType-unique",
369          "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
370        },
371        {
372          "vuid": "VUID-VkDeviceCreateInfo-flags-zerobitmask",
373          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
374        },
375        {
376          "vuid": "VUID-VkDeviceCreateInfo-pQueueCreateInfos-parameter",
377          "text": " <code>pQueueCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueCreateInfoCount</code> valid <code>VkDeviceQueueCreateInfo</code> structures"
378        },
379        {
380          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledLayerNames-parameter",
381          "text": " If <code>enabledLayerCount</code> is not <code>0</code>, <code>ppEnabledLayerNames</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledLayerCount</code> null-terminated UTF-8 strings"
382        },
383        {
384          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-parameter",
385          "text": " If <code>enabledExtensionCount</code> is not <code>0</code>, <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledExtensionCount</code> null-terminated UTF-8 strings"
386        },
387        {
388          "vuid": "VUID-VkDeviceCreateInfo-pEnabledFeatures-parameter",
389          "text": " If <code>pEnabledFeatures</code> is not <code>NULL</code>, <code>pEnabledFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceFeatures</code> structure"
390        },
391        {
392          "vuid": "VUID-VkDeviceCreateInfo-queueCreateInfoCount-arraylength",
393          "text": " <code>queueCreateInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
394        }
395      ],
396      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
397        {
398          "vuid": "VUID-VkDeviceCreateInfo-pNext-00373",
399          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a> structure, then <code>pEnabledFeatures</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
400        }
401      ],
402      "(VK_AMD_negative_viewport_height)+(VK_VERSION_1_1)": [
403        {
404          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-01840",
405          "text": " <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> not contain <code><a href=\"#VK_AMD_negative_viewport_height\">VK_AMD_negative_viewport_height</a></code>"
406        }
407      ],
408      "(VK_AMD_negative_viewport_height)+!(VK_VERSION_1_1)+(VK_KHR_maintenance1)": [
409        {
410          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-00374",
411          "text": " <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> not contain both <code><a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a></code> and <code><a href=\"#VK_AMD_negative_viewport_height\">VK_AMD_negative_viewport_height</a></code>"
412        }
413      ]
414    },
415    "VkDeviceGroupDeviceCreateInfo": {
416      "(VK_VERSION_1_1,VK_KHR_device_group_creation)": [
417        {
418          "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00375",
419          "text": " Each element of <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be unique"
420        },
421        {
422          "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00376",
423          "text": " All elements of <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be in the same device group as enumerated by <a href=\"#vkEnumeratePhysicalDeviceGroups\">vkEnumeratePhysicalDeviceGroups</a>"
424        },
425        {
426          "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-physicalDeviceCount-00377",
427          "text": " If <code>physicalDeviceCount</code> is not <code>0</code>, the <code>physicalDevice</code> parameter of <a href=\"#vkCreateDevice\">vkCreateDevice</a> <strong class=\"purple\">must</strong> be an element of <code>pPhysicalDevices</code>."
428        },
429        {
430          "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-sType-sType",
431          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO</code>"
432        },
433        {
434          "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-parameter",
435          "text": " If <code>physicalDeviceCount</code> is not <code>0</code>, <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>physicalDeviceCount</code> valid <code>VkPhysicalDevice</code> handles"
436        }
437      ]
438    },
439    "VkDeviceMemoryOverallocationCreateInfoAMD": {
440      "(VK_AMD_memory_overallocation_behavior)": [
441        {
442          "vuid": "VUID-VkDeviceMemoryOverallocationCreateInfoAMD-sType-sType",
443          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD</code>"
444        },
445        {
446          "vuid": "VUID-VkDeviceMemoryOverallocationCreateInfoAMD-overallocationBehavior-parameter",
447          "text": " <code>overallocationBehavior</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkMemoryOverallocationBehaviorAMD\">VkMemoryOverallocationBehaviorAMD</a> value"
448        }
449      ]
450    },
451    "vkDestroyDevice": {
452      "core": [
453        {
454          "vuid": "VUID-vkDestroyDevice-device-00378",
455          "text": " All child objects created on <code>device</code> <strong class=\"purple\">must</strong> have been destroyed prior to destroying <code>device</code>"
456        },
457        {
458          "vuid": "VUID-vkDestroyDevice-device-00379",
459          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>device</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
460        },
461        {
462          "vuid": "VUID-vkDestroyDevice-device-00380",
463          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>device</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
464        },
465        {
466          "vuid": "VUID-vkDestroyDevice-device-parameter",
467          "text": " If <code>device</code> is not <code>NULL</code>, <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
468        },
469        {
470          "vuid": "VUID-vkDestroyDevice-pAllocator-parameter",
471          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
472        }
473      ]
474    },
475    "VkDeviceQueueCreateInfo": {
476      "core": [
477        {
478          "vuid": "VUID-VkDeviceQueueCreateInfo-queueFamilyIndex-00381",
479          "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code>"
480        },
481        {
482          "vuid": "VUID-VkDeviceQueueCreateInfo-queueCount-00382",
483          "text": " <code>queueCount</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>queueCount</code> member of the <code>VkQueueFamilyProperties</code> structure, as returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> in the <code>pQueueFamilyProperties</code>[<code>queueFamilyIndex</code>]"
484        },
485        {
486          "vuid": "VUID-VkDeviceQueueCreateInfo-pQueuePriorities-00383",
487          "text": " Each element of <code>pQueuePriorities</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code> inclusive"
488        },
489        {
490          "vuid": "VUID-VkDeviceQueueCreateInfo-sType-sType",
491          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO</code>"
492        },
493        {
494          "vuid": "VUID-VkDeviceQueueCreateInfo-pNext-pNext",
495          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceQueueGlobalPriorityCreateInfoEXT\">VkDeviceQueueGlobalPriorityCreateInfoEXT</a>"
496        },
497        {
498          "vuid": "VUID-VkDeviceQueueCreateInfo-flags-parameter",
499          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceQueueCreateFlagBits\">VkDeviceQueueCreateFlagBits</a> values"
500        },
501        {
502          "vuid": "VUID-VkDeviceQueueCreateInfo-pQueuePriorities-parameter",
503          "text": " <code>pQueuePriorities</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueCount</code> <code>float</code> values"
504        },
505        {
506          "vuid": "VUID-VkDeviceQueueCreateInfo-queueCount-arraylength",
507          "text": " <code>queueCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
508        }
509      ]
510    },
511    "VkDeviceQueueGlobalPriorityCreateInfoEXT": {
512      "(VK_EXT_global_priority)": [
513        {
514          "vuid": "VUID-VkDeviceQueueGlobalPriorityCreateInfoEXT-sType-sType",
515          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT</code>"
516        },
517        {
518          "vuid": "VUID-VkDeviceQueueGlobalPriorityCreateInfoEXT-globalPriority-parameter",
519          "text": " <code>globalPriority</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueueGlobalPriorityEXT\">VkQueueGlobalPriorityEXT</a> value"
520        }
521      ]
522    },
523    "vkGetDeviceQueue": {
524      "core": [
525        {
526          "vuid": "VUID-vkGetDeviceQueue-queueFamilyIndex-00384",
527          "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be one of the queue family indices specified when <code>device</code> was created, via the <code>VkDeviceQueueCreateInfo</code> structure"
528        },
529        {
530          "vuid": "VUID-vkGetDeviceQueue-queueIndex-00385",
531          "text": " <code>queueIndex</code> <strong class=\"purple\">must</strong> be less than the number of queues created for the specified queue family index when <code>device</code> was created, via the <code>queueCount</code> member of the <code>VkDeviceQueueCreateInfo</code> structure"
532        },
533        {
534          "vuid": "VUID-vkGetDeviceQueue-flags-01841",
535          "text": " <a href=\"#VkDeviceQueueCreateInfo\">VkDeviceQueueCreateInfo</a>::<code>flags</code> <strong class=\"purple\">must</strong> have been set to zero when <code>device</code> was created"
536        },
537        {
538          "vuid": "VUID-vkGetDeviceQueue-device-parameter",
539          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
540        },
541        {
542          "vuid": "VUID-vkGetDeviceQueue-pQueue-parameter",
543          "text": " <code>pQueue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkQueue</code> handle"
544        }
545      ]
546    },
547    "vkGetDeviceQueue2": {
548      "(VK_VERSION_1_1)": [
549        {
550          "vuid": "VUID-vkGetDeviceQueue2-device-parameter",
551          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
552        },
553        {
554          "vuid": "VUID-vkGetDeviceQueue2-pQueueInfo-parameter",
555          "text": " <code>pQueueInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDeviceQueueInfo2</code> structure"
556        },
557        {
558          "vuid": "VUID-vkGetDeviceQueue2-pQueue-parameter",
559          "text": " <code>pQueue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkQueue</code> handle"
560        }
561      ]
562    },
563    "VkDeviceQueueInfo2": {
564      "(VK_VERSION_1_1)": [
565        {
566          "vuid": "VUID-VkDeviceQueueInfo2-queueFamilyIndex-01842",
567          "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be one of the queue family indices specified when <code>device</code> was created, via the <code>VkDeviceQueueCreateInfo</code> structure"
568        },
569        {
570          "vuid": "VUID-VkDeviceQueueInfo2-queueIndex-01843",
571          "text": " <code>queueIndex</code> <strong class=\"purple\">must</strong> be less than the number of queues created for the specified queue family index and <a href=\"#VkDeviceQueueCreateFlags\">VkDeviceQueueCreateFlags</a> member <code>flags</code> equal to this <code>flags</code> value when <code>device</code> was created, via the <code>queueCount</code> member of the <code>VkDeviceQueueCreateInfo</code> structure"
572        },
573        {
574          "vuid": "VUID-VkDeviceQueueInfo2-sType-sType",
575          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2</code>"
576        },
577        {
578          "vuid": "VUID-VkDeviceQueueInfo2-pNext-pNext",
579          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
580        },
581        {
582          "vuid": "VUID-VkDeviceQueueInfo2-flags-parameter",
583          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceQueueCreateFlagBits\">VkDeviceQueueCreateFlagBits</a> values"
584        },
585        {
586          "vuid": "VUID-VkDeviceQueueInfo2-flags-requiredbitmask",
587          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
588        }
589      ]
590    },
591    "vkCreateCommandPool": {
592      "core": [
593        {
594          "vuid": "VUID-vkCreateCommandPool-queueFamilyIndex-01937",
595          "text": " <code>pCreateInfo</code>::<code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be the index of a queue family available in the logical device <code>device</code>."
596        },
597        {
598          "vuid": "VUID-vkCreateCommandPool-device-parameter",
599          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
600        },
601        {
602          "vuid": "VUID-vkCreateCommandPool-pCreateInfo-parameter",
603          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkCommandPoolCreateInfo</code> structure"
604        },
605        {
606          "vuid": "VUID-vkCreateCommandPool-pAllocator-parameter",
607          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
608        },
609        {
610          "vuid": "VUID-vkCreateCommandPool-pCommandPool-parameter",
611          "text": " <code>pCommandPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkCommandPool</code> handle"
612        }
613      ]
614    },
615    "VkCommandPoolCreateInfo": {
616      "core": [
617        {
618          "vuid": "VUID-VkCommandPoolCreateInfo-sType-sType",
619          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO</code>"
620        },
621        {
622          "vuid": "VUID-VkCommandPoolCreateInfo-pNext-pNext",
623          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
624        },
625        {
626          "vuid": "VUID-VkCommandPoolCreateInfo-flags-parameter",
627          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandPoolCreateFlagBits\">VkCommandPoolCreateFlagBits</a> values"
628        }
629      ]
630    },
631    "vkTrimCommandPool": {
632      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
633        {
634          "vuid": "VUID-vkTrimCommandPool-device-parameter",
635          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
636        },
637        {
638          "vuid": "VUID-vkTrimCommandPool-commandPool-parameter",
639          "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> handle"
640        },
641        {
642          "vuid": "VUID-vkTrimCommandPool-flags-zerobitmask",
643          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
644        },
645        {
646          "vuid": "VUID-vkTrimCommandPool-commandPool-parent",
647          "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
648        }
649      ]
650    },
651    "vkResetCommandPool": {
652      "core": [
653        {
654          "vuid": "VUID-vkResetCommandPool-commandPool-00040",
655          "text": " All <code>VkCommandBuffer</code> objects allocated from <code>commandPool</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>"
656        },
657        {
658          "vuid": "VUID-vkResetCommandPool-device-parameter",
659          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
660        },
661        {
662          "vuid": "VUID-vkResetCommandPool-commandPool-parameter",
663          "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> handle"
664        },
665        {
666          "vuid": "VUID-vkResetCommandPool-flags-parameter",
667          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandPoolResetFlagBits\">VkCommandPoolResetFlagBits</a> values"
668        },
669        {
670          "vuid": "VUID-vkResetCommandPool-commandPool-parent",
671          "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
672        }
673      ]
674    },
675    "vkDestroyCommandPool": {
676      "core": [
677        {
678          "vuid": "VUID-vkDestroyCommandPool-commandPool-00041",
679          "text": " All <code>VkCommandBuffer</code> objects allocated from <code>commandPool</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>."
680        },
681        {
682          "vuid": "VUID-vkDestroyCommandPool-commandPool-00042",
683          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>commandPool</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
684        },
685        {
686          "vuid": "VUID-vkDestroyCommandPool-commandPool-00043",
687          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>commandPool</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
688        },
689        {
690          "vuid": "VUID-vkDestroyCommandPool-device-parameter",
691          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
692        },
693        {
694          "vuid": "VUID-vkDestroyCommandPool-commandPool-parameter",
695          "text": " If <code>commandPool</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> handle"
696        },
697        {
698          "vuid": "VUID-vkDestroyCommandPool-pAllocator-parameter",
699          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
700        },
701        {
702          "vuid": "VUID-vkDestroyCommandPool-commandPool-parent",
703          "text": " If <code>commandPool</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
704        }
705      ]
706    },
707    "vkAllocateCommandBuffers": {
708      "core": [
709        {
710          "vuid": "VUID-vkAllocateCommandBuffers-device-parameter",
711          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
712        },
713        {
714          "vuid": "VUID-vkAllocateCommandBuffers-pAllocateInfo-parameter",
715          "text": " <code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkCommandBufferAllocateInfo</code> structure"
716        },
717        {
718          "vuid": "VUID-vkAllocateCommandBuffers-pCommandBuffers-parameter",
719          "text": " <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pAllocateInfo</code>::commandBufferCount <code>VkCommandBuffer</code> handles"
720        }
721      ]
722    },
723    "VkCommandBufferAllocateInfo": {
724      "core": [
725        {
726          "vuid": "VUID-VkCommandBufferAllocateInfo-commandBufferCount-00044",
727          "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
728        },
729        {
730          "vuid": "VUID-VkCommandBufferAllocateInfo-sType-sType",
731          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO</code>"
732        },
733        {
734          "vuid": "VUID-VkCommandBufferAllocateInfo-pNext-pNext",
735          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
736        },
737        {
738          "vuid": "VUID-VkCommandBufferAllocateInfo-commandPool-parameter",
739          "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> handle"
740        },
741        {
742          "vuid": "VUID-VkCommandBufferAllocateInfo-level-parameter",
743          "text": " <code>level</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBufferLevel\">VkCommandBufferLevel</a> value"
744        }
745      ]
746    },
747    "vkResetCommandBuffer": {
748      "core": [
749        {
750          "vuid": "VUID-vkResetCommandBuffer-commandBuffer-00045",
751          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>"
752        },
753        {
754          "vuid": "VUID-vkResetCommandBuffer-commandBuffer-00046",
755          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been allocated from a pool that was created with the <code>VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT</code>"
756        },
757        {
758          "vuid": "VUID-vkResetCommandBuffer-commandBuffer-parameter",
759          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
760        },
761        {
762          "vuid": "VUID-vkResetCommandBuffer-flags-parameter",
763          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandBufferResetFlagBits\">VkCommandBufferResetFlagBits</a> values"
764        }
765      ]
766    },
767    "vkFreeCommandBuffers": {
768      "core": [
769        {
770          "vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-00047",
771          "text": " All elements of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>"
772        },
773        {
774          "vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-00048",
775          "text": " <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>commandBufferCount</code> <code>VkCommandBuffer</code> handles, each element of which <strong class=\"purple\">must</strong> either be a valid handle or <code>NULL</code>"
776        },
777        {
778          "vuid": "VUID-vkFreeCommandBuffers-device-parameter",
779          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
780        },
781        {
782          "vuid": "VUID-vkFreeCommandBuffers-commandPool-parameter",
783          "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> handle"
784        },
785        {
786          "vuid": "VUID-vkFreeCommandBuffers-commandBufferCount-arraylength",
787          "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
788        },
789        {
790          "vuid": "VUID-vkFreeCommandBuffers-commandPool-parent",
791          "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
792        },
793        {
794          "vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-parent",
795          "text": " Each element of <code>pCommandBuffers</code> that is a valid handle <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>commandPool</code>"
796        }
797      ]
798    },
799    "vkBeginCommandBuffer": {
800      "core": [
801        {
802          "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00049",
803          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">recording or pending state</a>."
804        },
805        {
806          "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00050",
807          "text": " If <code>commandBuffer</code> was allocated from a <a href=\"#VkCommandPool\">VkCommandPool</a> which did not have the <code>VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT</code> flag set, <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">initial state</a>."
808        },
809        {
810          "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00051",
811          "text": " If <code>commandBuffer</code> is a secondary command buffer, the <code>pInheritanceInfo</code> member of <code>pBeginInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBufferInheritanceInfo</code> structure"
812        },
813        {
814          "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00052",
815          "text": " If <code>commandBuffer</code> is a secondary command buffer and either the <code>occlusionQueryEnable</code> member of the <code>pInheritanceInfo</code> member of <code>pBeginInfo</code> is <code>VK_FALSE</code>, or the precise occlusion queries feature is not enabled, the <code>queryFlags</code> member of the <code>pInheritanceInfo</code> member <code>pBeginInfo</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_CONTROL_PRECISE_BIT</code>"
816        },
817        {
818          "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-parameter",
819          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
820        },
821        {
822          "vuid": "VUID-vkBeginCommandBuffer-pBeginInfo-parameter",
823          "text": " <code>pBeginInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkCommandBufferBeginInfo</code> structure"
824        }
825      ]
826    },
827    "VkCommandBufferBeginInfo": {
828      "core": [
829        {
830          "vuid": "VUID-VkCommandBufferBeginInfo-flags-00053",
831          "text": " If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>, the <code>renderPass</code> member of <code>pInheritanceInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code>"
832        },
833        {
834          "vuid": "VUID-VkCommandBufferBeginInfo-flags-00054",
835          "text": " If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>, the <code>subpass</code> member of <code>pInheritanceInfo</code> <strong class=\"purple\">must</strong> be a valid subpass index within the <code>renderPass</code> member of <code>pInheritanceInfo</code>"
836        },
837        {
838          "vuid": "VUID-VkCommandBufferBeginInfo-flags-00055",
839          "text": " If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>, the <code>framebuffer</code> member of <code>pInheritanceInfo</code> <strong class=\"purple\">must</strong> be either <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, or a valid <code>VkFramebuffer</code> that is compatible with the <code>renderPass</code> member of <code>pInheritanceInfo</code>"
840        },
841        {
842          "vuid": "VUID-VkCommandBufferBeginInfo-sType-sType",
843          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO</code>"
844        },
845        {
846          "vuid": "VUID-VkCommandBufferBeginInfo-pNext-pNext",
847          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupCommandBufferBeginInfo\">VkDeviceGroupCommandBufferBeginInfo</a>"
848        },
849        {
850          "vuid": "VUID-VkCommandBufferBeginInfo-flags-parameter",
851          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandBufferUsageFlagBits\">VkCommandBufferUsageFlagBits</a> values"
852        }
853      ]
854    },
855    "VkCommandBufferInheritanceInfo": {
856      "core": [
857        {
858          "vuid": "VUID-VkCommandBufferInheritanceInfo-occlusionQueryEnable-00056",
859          "text": " If the <a href=\"#features-inheritedQueries\">inherited queries</a> feature is not enabled, <code>occlusionQueryEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
860        },
861        {
862          "vuid": "VUID-VkCommandBufferInheritanceInfo-queryFlags-00057",
863          "text": " If the <a href=\"#features-inheritedQueries\">inherited queries</a> feature is enabled, <code>queryFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryControlFlagBits\">VkQueryControlFlagBits</a> values"
864        },
865        {
866          "vuid": "VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-00058",
867          "text": " If the <a href=\"#features-pipelineStatisticsQuery\">pipeline statistics queries</a> feature is not enabled, <code>pipelineStatistics</code> <strong class=\"purple\">must</strong> be <code>0</code>"
868        },
869        {
870          "vuid": "VUID-VkCommandBufferInheritanceInfo-sType-sType",
871          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO</code>"
872        },
873        {
874          "vuid": "VUID-VkCommandBufferInheritanceInfo-pNext-pNext",
875          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkCommandBufferInheritanceConditionalRenderingInfoEXT\">VkCommandBufferInheritanceConditionalRenderingInfoEXT</a>"
876        },
877        {
878          "vuid": "VUID-VkCommandBufferInheritanceInfo-commonparent",
879          "text": " Both of <code>framebuffer</code>, and <code>renderPass</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
880        }
881      ]
882    },
883    "VkCommandBufferInheritanceConditionalRenderingInfoEXT": {
884      "(VK_EXT_conditional_rendering)": [
885        {
886          "vuid": "VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-conditionalRenderingEnable-01977",
887          "text": " If the <a href=\"#features-inheritedConditionalRendering\">inherited conditional rendering</a> feature is not enabled, <code>conditionalRenderingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
888        },
889        {
890          "vuid": "VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-sType-sType",
891          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT</code>"
892        }
893      ]
894    },
895    "vkEndCommandBuffer": {
896      "core": [
897        {
898          "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00059",
899          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>."
900        },
901        {
902          "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00060",
903          "text": " If <code>commandBuffer</code> is a primary command buffer, there <strong class=\"purple\">must</strong> not be an active render pass instance"
904        },
905        {
906          "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00061",
907          "text": " All queries made <a href=\"#queries-operation-active\">active</a> during the recording of <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been made inactive"
908        },
909        {
910          "vuid": "VUID-vkEndCommandBuffer-commandBuffer-parameter",
911          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
912        }
913      ],
914      "(VK_EXT_conditional_rendering)": [
915        {
916          "vuid": "VUID-vkEndCommandBuffer-None-01978",
917          "text": " Conditional rendering must not be <a href=\"#active-conditional-rendering\">active</a>"
918        }
919      ],
920      "(VK_EXT_debug_utils)": [
921        {
922          "vuid": "VUID-vkEndCommandBuffer-commandBuffer-01815",
923          "text": " If <code>commandBuffer</code> is a secondary command buffer, there <strong class=\"purple\">must</strong> not be an outstanding <a href=\"#vkCmdBeginDebugUtilsLabelEXT\">vkCmdBeginDebugUtilsLabelEXT</a> command recorded to <code>commandBuffer</code> that has not previously been ended by a call to <a href=\"#vkCmdEndDebugUtilsLabelEXT\">vkCmdEndDebugUtilsLabelEXT</a>."
924        }
925      ],
926      "(VK_EXT_debug_marker)": [
927        {
928          "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00062",
929          "text": " If <code>commandBuffer</code> is a secondary command buffer, there <strong class=\"purple\">must</strong> not be an outstanding <a href=\"#vkCmdDebugMarkerBeginEXT\">vkCmdDebugMarkerBeginEXT</a> command recorded to <code>commandBuffer</code> that has not previously been ended by a call to <a href=\"#vkCmdDebugMarkerEndEXT\">vkCmdDebugMarkerEndEXT</a>."
930        }
931      ]
932    },
933    "vkQueueSubmit": {
934      "core": [
935        {
936          "vuid": "VUID-vkQueueSubmit-fence-00063",
937          "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be unsignaled"
938        },
939        {
940          "vuid": "VUID-vkQueueSubmit-fence-00064",
941          "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> not be associated with any other queue command that has not yet completed execution on that queue"
942        },
943        {
944          "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00065",
945          "text": " Any calls to <a href=\"#vkCmdSetEvent\">vkCmdSetEvent</a>, <a href=\"#vkCmdResetEvent\">vkCmdResetEvent</a> or <a href=\"#vkCmdWaitEvents\">vkCmdWaitEvents</a> that have been recorded into any of the command buffer elements of the <code>pCommandBuffers</code> member of any element of <code>pSubmits</code>, <strong class=\"purple\">must</strong> not reference any <a href=\"#VkEvent\">VkEvent</a> that is referenced by any of those commands in a command buffer that has been submitted to another queue and is still in the <em>pending state</em>."
946        },
947        {
948          "vuid": "VUID-vkQueueSubmit-pWaitDstStageMask-00066",
949          "text": " Any stage flag included in any element of the <code>pWaitDstStageMask</code> member of any element of <code>pSubmits</code> <strong class=\"purple\">must</strong> be a pipeline stage supported by one of the capabilities of <code>queue</code>, as specified in the <a href=\"#synchronization-pipeline-stages-supported\">table of supported pipeline stages</a>."
950        },
951        {
952          "vuid": "VUID-vkQueueSubmit-pSignalSemaphores-00067",
953          "text": " Each element of the <code>pSignalSemaphores</code> member of any element of <code>pSubmits</code> <strong class=\"purple\">must</strong> be unsignaled when the semaphore signal operation it defines is executed on the device"
954        },
955        {
956          "vuid": "VUID-vkQueueSubmit-pWaitSemaphores-00068",
957          "text": " When a semaphore unsignal operation defined by any element of the <code>pWaitSemaphores</code> member of any element of <code>pSubmits</code> executes on <code>queue</code>, no other queue <strong class=\"purple\">must</strong> be waiting on the same semaphore."
958        },
959        {
960          "vuid": "VUID-vkQueueSubmit-pWaitSemaphores-00069",
961          "text": " All elements of the <code>pWaitSemaphores</code> member of all elements of <code>pSubmits</code> <strong class=\"purple\">must</strong> be semaphores that are signaled, or have <a href=\"#synchronization-semaphores-signaling\">semaphore signal operations</a> previously submitted for execution."
962        },
963        {
964          "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00070",
965          "text": " Each element of the <code>pCommandBuffers</code> member of each element of <code>pSubmits</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">pending or executable state</a>."
966        },
967        {
968          "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00071",
969          "text": " If any element of the <code>pCommandBuffers</code> member of any element of <code>pSubmits</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code>, it <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>."
970        },
971        {
972          "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00072",
973          "text": " Any <a href=\"#commandbuffers-secondary\">secondary command buffers recorded</a> into any element of the <code>pCommandBuffers</code> member of any element of <code>pSubmits</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">pending or executable state</a>."
974        },
975        {
976          "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00073",
977          "text": " If any <a href=\"#commandbuffers-secondary\">secondary command buffers recorded</a> into any element of the <code>pCommandBuffers</code> member of any element of <code>pSubmits</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code>, it <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>."
978        },
979        {
980          "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00074",
981          "text": " Each element of the <code>pCommandBuffers</code> member of each element of <code>pSubmits</code> <strong class=\"purple\">must</strong> have been allocated from a <code>VkCommandPool</code> that was created for the same queue family <code>queue</code> belongs to."
982        },
983        {
984          "vuid": "VUID-vkQueueSubmit-pSubmits-02207",
985          "text": " If any element of <code>pSubmits</code>&#8594;<code>pCommandBuffers</code> includes a <a href=\"#synchronization-queue-transfers-acquire\">Queue Family Transfer Acquire Operation</a>, there <strong class=\"purple\">must</strong> exist a previously submitted <a href=\"#synchronization-queue-transfers-release\">Queue Family Transfer Release Operation</a> on a queue in the queue family identified by the acquire operation, with parameters matching the acquire operation as defined in the definition of such <a href=\"#synchronization-queue-transfers-acquire\">acquire operations</a>, and which happens before the acquire operation."
986        },
987        {
988          "vuid": "VUID-vkQueueSubmit-queue-parameter",
989          "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
990        },
991        {
992          "vuid": "VUID-vkQueueSubmit-pSubmits-parameter",
993          "text": " If <code>submitCount</code> is not <code>0</code>, <code>pSubmits</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>submitCount</code> valid <code>VkSubmitInfo</code> structures"
994        },
995        {
996          "vuid": "VUID-vkQueueSubmit-fence-parameter",
997          "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
998        },
999        {
1000          "vuid": "VUID-vkQueueSubmit-commonparent",
1001          "text": " Both of <code>fence</code>, and <code>queue</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
1002        }
1003      ]
1004    },
1005    "VkSubmitInfo": {
1006      "core": [
1007        {
1008          "vuid": "VUID-VkSubmitInfo-pCommandBuffers-00075",
1009          "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not have been allocated with <code>VK_COMMAND_BUFFER_LEVEL_SECONDARY</code>"
1010        },
1011        {
1012          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00076",
1013          "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
1014        },
1015        {
1016          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00077",
1017          "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
1018        },
1019        {
1020          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00078",
1021          "text": " Each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>."
1022        },
1023        {
1024          "vuid": "VUID-VkSubmitInfo-sType-sType",
1025          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBMIT_INFO</code>"
1026        },
1027        {
1028          "vuid": "VUID-VkSubmitInfo-pNext-pNext",
1029          "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkD3D12FenceSubmitInfoKHR\">VkD3D12FenceSubmitInfoKHR</a>, <a href=\"#VkDeviceGroupSubmitInfo\">VkDeviceGroupSubmitInfo</a>, <a href=\"#VkProtectedSubmitInfo\">VkProtectedSubmitInfo</a>, <a href=\"#VkWin32KeyedMutexAcquireReleaseInfoKHR\">VkWin32KeyedMutexAcquireReleaseInfoKHR</a>, or <a href=\"#VkWin32KeyedMutexAcquireReleaseInfoNV\">VkWin32KeyedMutexAcquireReleaseInfoNV</a>"
1030        },
1031        {
1032          "vuid": "VUID-VkSubmitInfo-sType-unique",
1033          "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
1034        },
1035        {
1036          "vuid": "VUID-VkSubmitInfo-pWaitSemaphores-parameter",
1037          "text": " If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> valid <code>VkSemaphore</code> handles"
1038        },
1039        {
1040          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-parameter",
1041          "text": " If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> valid combinations of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
1042        },
1043        {
1044          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-requiredbitmask",
1045          "text": " Each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
1046        },
1047        {
1048          "vuid": "VUID-VkSubmitInfo-pCommandBuffers-parameter",
1049          "text": " If <code>commandBufferCount</code> is not <code>0</code>, <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>commandBufferCount</code> valid <code>VkCommandBuffer</code> handles"
1050        },
1051        {
1052          "vuid": "VUID-VkSubmitInfo-pSignalSemaphores-parameter",
1053          "text": " If <code>signalSemaphoreCount</code> is not <code>0</code>, <code>pSignalSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>signalSemaphoreCount</code> valid <code>VkSemaphore</code> handles"
1054        },
1055        {
1056          "vuid": "VUID-VkSubmitInfo-commonparent",
1057          "text": " Each of the elements of <code>pCommandBuffers</code>, the elements of <code>pSignalSemaphores</code>, and the elements of <code>pWaitSemaphores</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
1058        }
1059      ],
1060      "(VK_NV_mesh_shader)": [
1061        {
1062          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-02089",
1063          "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
1064        },
1065        {
1066          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-02090",
1067          "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
1068        }
1069      ]
1070    },
1071    "VkD3D12FenceSubmitInfoKHR": {
1072      "(VK_KHR_external_semaphore_win32)": [
1073        {
1074          "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-waitSemaphoreValuesCount-00079",
1075          "text": " <code>waitSemaphoreValuesCount</code> <strong class=\"purple\">must</strong> be the same value as <code>VkSubmitInfo</code>::<code>waitSemaphoreCount</code>, where <code>VkSubmitInfo</code> is in the <code>pNext</code> chain of this <code>VkD3D12FenceSubmitInfoKHR</code> structure."
1076        },
1077        {
1078          "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-signalSemaphoreValuesCount-00080",
1079          "text": " <code>signalSemaphoreValuesCount</code> <strong class=\"purple\">must</strong> be the same value as <code>VkSubmitInfo</code>::<code>signalSemaphoreCount</code>, where <code>VkSubmitInfo</code> is in the <code>pNext</code> chain of this <code>VkD3D12FenceSubmitInfoKHR</code> structure."
1080        },
1081        {
1082          "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-sType-sType",
1083          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR</code>"
1084        },
1085        {
1086          "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-pWaitSemaphoreValues-parameter",
1087          "text": " If <code>waitSemaphoreValuesCount</code> is not <code>0</code>, and <code>pWaitSemaphoreValues</code> is not <code>NULL</code>, <code>pWaitSemaphoreValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreValuesCount</code> <code>uint64_t</code> values"
1088        },
1089        {
1090          "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-pSignalSemaphoreValues-parameter",
1091          "text": " If <code>signalSemaphoreValuesCount</code> is not <code>0</code>, and <code>pSignalSemaphoreValues</code> is not <code>NULL</code>, <code>pSignalSemaphoreValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>signalSemaphoreValuesCount</code> <code>uint64_t</code> values"
1092        }
1093      ]
1094    },
1095    "VkWin32KeyedMutexAcquireReleaseInfoKHR": {
1096      "(VK_KHR_win32_keyed_mutex)": [
1097        {
1098          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireSyncs-00081",
1099          "text": " Each member of <code>pAcquireSyncs</code> and <code>pReleaseSyncs</code> <strong class=\"purple\">must</strong> be a device memory object imported by setting <a href=\"#VkImportMemoryWin32HandleInfoKHR\">VkImportMemoryWin32HandleInfoKHR</a>::<code>handleType</code> to <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT</code>."
1100        },
1101        {
1102          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-sType-sType",
1103          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR</code>"
1104        },
1105        {
1106          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireSyncs-parameter",
1107          "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> valid <code>VkDeviceMemory</code> handles"
1108        },
1109        {
1110          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireKeys-parameter",
1111          "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireKeys</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> <code>uint64_t</code> values"
1112        },
1113        {
1114          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireTimeouts-parameter",
1115          "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireTimeouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> <code>uint32_t</code> values"
1116        },
1117        {
1118          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pReleaseSyncs-parameter",
1119          "text": " If <code>releaseCount</code> is not <code>0</code>, <code>pReleaseSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>releaseCount</code> valid <code>VkDeviceMemory</code> handles"
1120        },
1121        {
1122          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pReleaseKeys-parameter",
1123          "text": " If <code>releaseCount</code> is not <code>0</code>, <code>pReleaseKeys</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>releaseCount</code> <code>uint64_t</code> values"
1124        },
1125        {
1126          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-commonparent",
1127          "text": " Both of the elements of <code>pAcquireSyncs</code>, and the elements of <code>pReleaseSyncs</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
1128        }
1129      ]
1130    },
1131    "VkWin32KeyedMutexAcquireReleaseInfoNV": {
1132      "(VK_NV_win32_keyed_mutex)": [
1133        {
1134          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-sType-sType",
1135          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV</code>"
1136        },
1137        {
1138          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireSyncs-parameter",
1139          "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> valid <code>VkDeviceMemory</code> handles"
1140        },
1141        {
1142          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireKeys-parameter",
1143          "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireKeys</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> <code>uint64_t</code> values"
1144        },
1145        {
1146          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireTimeoutMilliseconds-parameter",
1147          "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireTimeoutMilliseconds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> <code>uint32_t</code> values"
1148        },
1149        {
1150          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pReleaseSyncs-parameter",
1151          "text": " If <code>releaseCount</code> is not <code>0</code>, <code>pReleaseSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>releaseCount</code> valid <code>VkDeviceMemory</code> handles"
1152        },
1153        {
1154          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pReleaseKeys-parameter",
1155          "text": " If <code>releaseCount</code> is not <code>0</code>, <code>pReleaseKeys</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>releaseCount</code> <code>uint64_t</code> values"
1156        },
1157        {
1158          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-commonparent",
1159          "text": " Both of the elements of <code>pAcquireSyncs</code>, and the elements of <code>pReleaseSyncs</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
1160        }
1161      ]
1162    },
1163    "VkProtectedSubmitInfo": {
1164      "(VK_VERSION_1_1)": [
1165        {
1166          "vuid": "VUID-VkProtectedSubmitInfo-protectedSubmit-01816",
1167          "text": " If the protected memory feature is not enabled, <code>protectedSubmit</code> <strong class=\"purple\">must</strong> not be <code>VK_TRUE</code>."
1168        },
1169        {
1170          "vuid": "VUID-VkProtectedSubmitInfo-protectedSubmit-01817",
1171          "text": " If <code>protectedSubmit</code> is <code>VK_TRUE</code>, then each element of the <code>pCommandBuffers</code> array <strong class=\"purple\">must</strong> be a protected command buffer."
1172        },
1173        {
1174          "vuid": "VUID-VkProtectedSubmitInfo-protectedSubmit-01818",
1175          "text": " If <code>protectedSubmit</code> is <code>VK_FALSE</code>, then each element of the <code>pCommandBuffers</code> array <strong class=\"purple\">must</strong> be an unprotected command buffer."
1176        },
1177        {
1178          "vuid": "VUID-VkProtectedSubmitInfo-pNext-01819",
1179          "text": " If the <code>VkSubmitInfo</code>::<code>pNext</code> chain does not include a <code>VkProtectedSubmitInfo</code> structure, then each element of the command buffer of the <code>pCommandBuffers</code> array <strong class=\"purple\">must</strong> be an unprotected command buffer."
1180        },
1181        {
1182          "vuid": "VUID-VkProtectedSubmitInfo-sType-sType",
1183          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO</code>"
1184        }
1185      ]
1186    },
1187    "VkDeviceGroupSubmitInfo": {
1188      "(VK_VERSION_1_1,VK_KHR_device_group)": [
1189        {
1190          "vuid": "VUID-VkDeviceGroupSubmitInfo-waitSemaphoreCount-00082",
1191          "text": " <code>waitSemaphoreCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>waitSemaphoreCount</code>"
1192        },
1193        {
1194          "vuid": "VUID-VkDeviceGroupSubmitInfo-commandBufferCount-00083",
1195          "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>commandBufferCount</code>"
1196        },
1197        {
1198          "vuid": "VUID-VkDeviceGroupSubmitInfo-signalSemaphoreCount-00084",
1199          "text": " <code>signalSemaphoreCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>signalSemaphoreCount</code>"
1200        },
1201        {
1202          "vuid": "VUID-VkDeviceGroupSubmitInfo-pWaitSemaphoreDeviceIndices-00085",
1203          "text": " All elements of <code>pWaitSemaphoreDeviceIndices</code> and <code>pSignalSemaphoreDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices"
1204        },
1205        {
1206          "vuid": "VUID-VkDeviceGroupSubmitInfo-pCommandBufferDeviceMasks-00086",
1207          "text": " All elements of <code>pCommandBufferDeviceMasks</code> <strong class=\"purple\">must</strong> be valid device masks"
1208        },
1209        {
1210          "vuid": "VUID-VkDeviceGroupSubmitInfo-sType-sType",
1211          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO</code>"
1212        },
1213        {
1214          "vuid": "VUID-VkDeviceGroupSubmitInfo-pWaitSemaphoreDeviceIndices-parameter",
1215          "text": " If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitSemaphoreDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> <code>uint32_t</code> values"
1216        },
1217        {
1218          "vuid": "VUID-VkDeviceGroupSubmitInfo-pCommandBufferDeviceMasks-parameter",
1219          "text": " If <code>commandBufferCount</code> is not <code>0</code>, <code>pCommandBufferDeviceMasks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>commandBufferCount</code> <code>uint32_t</code> values"
1220        },
1221        {
1222          "vuid": "VUID-VkDeviceGroupSubmitInfo-pSignalSemaphoreDeviceIndices-parameter",
1223          "text": " If <code>signalSemaphoreCount</code> is not <code>0</code>, <code>pSignalSemaphoreDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>signalSemaphoreCount</code> <code>uint32_t</code> values"
1224        }
1225      ]
1226    },
1227    "vkCmdExecuteCommands": {
1228      "core": [
1229        {
1230          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00087",
1231          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been allocated with a <code>level</code> of <code>VK_COMMAND_BUFFER_LEVEL_PRIMARY</code>"
1232        },
1233        {
1234          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00088",
1235          "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been allocated with a <code>level</code> of <code>VK_COMMAND_BUFFER_LEVEL_SECONDARY</code>"
1236        },
1237        {
1238          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00089",
1239          "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">pending or executable state</a>."
1240        },
1241        {
1242          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00090",
1243          "text": " If any element of <code>pCommandBuffers</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code> flag, and it was recorded into any other primary command buffer, that primary command buffer <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>"
1244        },
1245        {
1246          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00091",
1247          "text": " If any element of <code>pCommandBuffers</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code> flag, it <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>."
1248        },
1249        {
1250          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00092",
1251          "text": " If any element of <code>pCommandBuffers</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code> flag, it <strong class=\"purple\">must</strong> not have already been recorded to <code>commandBuffer</code>."
1252        },
1253        {
1254          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00093",
1255          "text": " If any element of <code>pCommandBuffers</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code> flag, it <strong class=\"purple\">must</strong> not appear more than once in <code>pCommandBuffers</code>."
1256        },
1257        {
1258          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00094",
1259          "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been allocated from a <code>VkCommandPool</code> that was created for the same queue family as the <code>VkCommandPool</code> from which <code>commandBuffer</code> was allocated"
1260        },
1261        {
1262          "vuid": "VUID-vkCmdExecuteCommands-contents-00095",
1263          "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, that render pass instance <strong class=\"purple\">must</strong> have been begun with the <code>contents</code> parameter of <code>vkCmdBeginRenderPass</code> set to <code>VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS</code>"
1264        },
1265        {
1266          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00096",
1267          "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with the <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>"
1268        },
1269        {
1270          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00097",
1271          "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <code>VkCommandBufferInheritanceInfo</code>::<code>subpass</code> set to the index of the subpass which the given command buffer will be executed in"
1272        },
1273        {
1274          "vuid": "VUID-vkCmdExecuteCommands-pInheritanceInfo-00098",
1275          "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, the render passes specified in the <code>pBeginInfo</code>::<code>pInheritanceInfo</code>::<code>renderPass</code> members of the <a href=\"#vkBeginCommandBuffer\">vkBeginCommandBuffer</a> commands used to begin recording each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the current render pass."
1276        },
1277        {
1278          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00099",
1279          "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, and any element of <code>pCommandBuffers</code> was recorded with <code>VkCommandBufferInheritanceInfo</code>::<code>framebuffer</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, that <code>VkFramebuffer</code> <strong class=\"purple\">must</strong> match the <code>VkFramebuffer</code> used in the current render pass instance"
1280        },
1281        {
1282          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00100",
1283          "text": " If <code>vkCmdExecuteCommands</code> is not being called within a render pass instance, each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not have been recorded with the <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>"
1284        },
1285        {
1286          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00101",
1287          "text": " If the <a href=\"#features-inheritedQueries\">inherited queries</a> feature is not enabled, <code>commandBuffer</code> <strong class=\"purple\">must</strong> not have any queries <a href=\"#queries-operation-active\">active</a>"
1288        },
1289        {
1290          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00102",
1291          "text": " If <code>commandBuffer</code> has a <code>VK_QUERY_TYPE_OCCLUSION</code> query <a href=\"#queries-operation-active\">active</a>, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <code>VkCommandBufferInheritanceInfo</code>::<code>occlusionQueryEnable</code> set to <code>VK_TRUE</code>"
1292        },
1293        {
1294          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00103",
1295          "text": " If <code>commandBuffer</code> has a <code>VK_QUERY_TYPE_OCCLUSION</code> query <a href=\"#queries-operation-active\">active</a>, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <code>VkCommandBufferInheritanceInfo</code>::<code>queryFlags</code> having all bits set that are set for the query"
1296        },
1297        {
1298          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00104",
1299          "text": " If <code>commandBuffer</code> has a <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code> query <a href=\"#queries-operation-active\">active</a>, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <code>VkCommandBufferInheritanceInfo</code>::<code>pipelineStatistics</code> having all bits set that are set in the <code>VkQueryPool</code> the query uses"
1300        },
1301        {
1302          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00105",
1303          "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not begin any query types that are <a href=\"#queries-operation-active\">active</a> in <code>commandBuffer</code>"
1304        },
1305        {
1306          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-parameter",
1307          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
1308        },
1309        {
1310          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-parameter",
1311          "text": " <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>commandBufferCount</code> valid <code>VkCommandBuffer</code> handles"
1312        },
1313        {
1314          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-recording",
1315          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
1316        },
1317        {
1318          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-cmdpool",
1319          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
1320        },
1321        {
1322          "vuid": "VUID-vkCmdExecuteCommands-bufferlevel",
1323          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
1324        },
1325        {
1326          "vuid": "VUID-vkCmdExecuteCommands-commandBufferCount-arraylength",
1327          "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
1328        },
1329        {
1330          "vuid": "VUID-vkCmdExecuteCommands-commonparent",
1331          "text": " Both of <code>commandBuffer</code>, and the elements of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
1332        }
1333      ],
1334      "(VK_VERSION_1_1)": [
1335        {
1336          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-01820",
1337          "text": " If <code>commandBuffer</code> is a protected command buffer, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a protected command buffer."
1338        },
1339        {
1340          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-01821",
1341          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be an unprotected command buffer."
1342        }
1343      ],
1344      "(VK_EXT_transform_feedback)": [
1345        {
1346          "vuid": "VUID-vkCmdExecuteCommands-None-02286",
1347          "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
1348        }
1349      ]
1350    },
1351    "VkDeviceGroupCommandBufferBeginInfo": {
1352      "(VK_VERSION_1_1,VK_KHR_device_group)": [
1353        {
1354          "vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-deviceMask-00106",
1355          "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value"
1356        },
1357        {
1358          "vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-deviceMask-00107",
1359          "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
1360        },
1361        {
1362          "vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-sType-sType",
1363          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO</code>"
1364        }
1365      ]
1366    },
1367    "vkCmdSetDeviceMask": {
1368      "(VK_VERSION_1_1,VK_KHR_device_group)": [
1369        {
1370          "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00108",
1371          "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value"
1372        },
1373        {
1374          "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00109",
1375          "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
1376        },
1377        {
1378          "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00110",
1379          "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not include any set bits that were not in the <a href=\"#VkDeviceGroupCommandBufferBeginInfo\">VkDeviceGroupCommandBufferBeginInfo</a>::<code>deviceMask</code> value when the command buffer began recording."
1380        },
1381        {
1382          "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00111",
1383          "text": " If <code>vkCmdSetDeviceMask</code> is called inside a render pass instance, <code>deviceMask</code> <strong class=\"purple\">must</strong> not include any set bits that were not in the <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a>::<code>deviceMask</code> value when the render pass instance began recording."
1384        },
1385        {
1386          "vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-parameter",
1387          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
1388        },
1389        {
1390          "vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-recording",
1391          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
1392        },
1393        {
1394          "vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-cmdpool",
1395          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations"
1396        }
1397      ]
1398    },
1399    "vkCreateFence": {
1400      "core": [
1401        {
1402          "vuid": "VUID-vkCreateFence-device-parameter",
1403          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
1404        },
1405        {
1406          "vuid": "VUID-vkCreateFence-pCreateInfo-parameter",
1407          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkFenceCreateInfo</code> structure"
1408        },
1409        {
1410          "vuid": "VUID-vkCreateFence-pAllocator-parameter",
1411          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
1412        },
1413        {
1414          "vuid": "VUID-vkCreateFence-pFence-parameter",
1415          "text": " <code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFence</code> handle"
1416        }
1417      ]
1418    },
1419    "VkFenceCreateInfo": {
1420      "core": [
1421        {
1422          "vuid": "VUID-VkFenceCreateInfo-sType-sType",
1423          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_CREATE_INFO</code>"
1424        },
1425        {
1426          "vuid": "VUID-VkFenceCreateInfo-pNext-pNext",
1427          "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkExportFenceCreateInfo\">VkExportFenceCreateInfo</a> or <a href=\"#VkExportFenceWin32HandleInfoKHR\">VkExportFenceWin32HandleInfoKHR</a>"
1428        },
1429        {
1430          "vuid": "VUID-VkFenceCreateInfo-sType-unique",
1431          "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
1432        },
1433        {
1434          "vuid": "VUID-VkFenceCreateInfo-flags-parameter",
1435          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceCreateFlagBits\">VkFenceCreateFlagBits</a> values"
1436        }
1437      ]
1438    },
1439    "VkExportFenceCreateInfo": {
1440      "(VK_VERSION_1_1,VK_KHR_external_fence)": [
1441        {
1442          "vuid": "VUID-VkExportFenceCreateInfo-handleTypes-01446",
1443          "text": " The bits in <code>handleTypes</code> must be supported and compatible, as reported by <a href=\"#VkExternalFenceProperties\">VkExternalFenceProperties</a>."
1444        },
1445        {
1446          "vuid": "VUID-VkExportFenceCreateInfo-sType-sType",
1447          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO</code>"
1448        },
1449        {
1450          "vuid": "VUID-VkExportFenceCreateInfo-handleTypes-parameter",
1451          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> values"
1452        }
1453      ]
1454    },
1455    "VkExportFenceWin32HandleInfoKHR": {
1456      "(VK_KHR_external_fence_win32)": [
1457        {
1458          "vuid": "VUID-VkExportFenceWin32HandleInfoKHR-handleTypes-01447",
1459          "text": " If <a href=\"#VkExportFenceCreateInfo\">VkExportFenceCreateInfo</a>::<code>handleTypes</code> does not include <code>VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VkExportFenceWin32HandleInfoKHR</code> <strong class=\"purple\">must</strong> not be in the <code>pNext</code> chain of <a href=\"#VkFenceCreateInfo\">VkFenceCreateInfo</a>."
1460        },
1461        {
1462          "vuid": "VUID-VkExportFenceWin32HandleInfoKHR-sType-sType",
1463          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR</code>"
1464        },
1465        {
1466          "vuid": "VUID-VkExportFenceWin32HandleInfoKHR-pAttributes-parameter",
1467          "text": " If <code>pAttributes</code> is not <code>NULL</code>, <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>SECURITY_ATTRIBUTES</code> value"
1468        }
1469      ]
1470    },
1471    "vkGetFenceWin32HandleKHR": {
1472      "(VK_KHR_external_fence_win32)": [
1473        {
1474          "vuid": "VUID-vkGetFenceWin32HandleKHR-device-parameter",
1475          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
1476        },
1477        {
1478          "vuid": "VUID-vkGetFenceWin32HandleKHR-pGetWin32HandleInfo-parameter",
1479          "text": " <code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkFenceGetWin32HandleInfoKHR</code> structure"
1480        },
1481        {
1482          "vuid": "VUID-vkGetFenceWin32HandleKHR-pHandle-parameter",
1483          "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value"
1484        }
1485      ]
1486    },
1487    "VkFenceGetWin32HandleInfoKHR": {
1488      "(VK_KHR_external_fence_win32)": [
1489        {
1490          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01448",
1491          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportFenceCreateInfo\">VkExportFenceCreateInfo</a>::<code>handleTypes</code> when the <code>fence</code>&#8217;s current payload was created."
1492        },
1493        {
1494          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01449",
1495          "text": " If <code>handleType</code> is defined as an NT handle, <a href=\"#vkGetFenceWin32HandleKHR\">vkGetFenceWin32HandleKHR</a> <strong class=\"purple\">must</strong> be called no more than once for each valid unique combination of <code>fence</code> and <code>handleType</code>."
1496        },
1497        {
1498          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-fence-01450",
1499          "text": " <code>fence</code> <strong class=\"purple\">must</strong> not currently have its payload replaced by an imported payload as described below in <a href=\"#synchronization-fences-importing\">Importing Fence Payloads</a> unless that imported payload&#8217;s handle type was included in <a href=\"#VkExternalFenceProperties\">VkExternalFenceProperties</a>::<code>exportFromImportedHandleTypes</code> for <code>handleType</code>."
1500        },
1501        {
1502          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01451",
1503          "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>fence</code> <strong class=\"purple\">must</strong> be signaled, or have an associated <a href=\"#synchronization-fences-signaling\">fence signal operation</a> pending execution."
1504        },
1505        {
1506          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01452",
1507          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle."
1508        },
1509        {
1510          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-sType-sType",
1511          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR</code>"
1512        },
1513        {
1514          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-pNext-pNext",
1515          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
1516        },
1517        {
1518          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-fence-parameter",
1519          "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
1520        },
1521        {
1522          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-parameter",
1523          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
1524        }
1525      ]
1526    },
1527    "vkGetFenceFdKHR": {
1528      "(VK_KHR_external_fence_fd)": [
1529        {
1530          "vuid": "VUID-vkGetFenceFdKHR-device-parameter",
1531          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
1532        },
1533        {
1534          "vuid": "VUID-vkGetFenceFdKHR-pGetFdInfo-parameter",
1535          "text": " <code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkFenceGetFdInfoKHR</code> structure"
1536        },
1537        {
1538          "vuid": "VUID-vkGetFenceFdKHR-pFd-parameter",
1539          "text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>int</code> value"
1540        }
1541      ]
1542    },
1543    "VkFenceGetFdInfoKHR": {
1544      "(VK_KHR_external_fence_fd)": [
1545        {
1546          "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01453",
1547          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportFenceCreateInfo\">VkExportFenceCreateInfo</a>::<code>handleTypes</code> when <code>fence</code>&#8217;s current payload was created."
1548        },
1549        {
1550          "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01454",
1551          "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>fence</code> <strong class=\"purple\">must</strong> be signaled, or have an associated <a href=\"#synchronization-fences-signaling\">fence signal operation</a> pending execution."
1552        },
1553        {
1554          "vuid": "VUID-VkFenceGetFdInfoKHR-fence-01455",
1555          "text": " <code>fence</code> <strong class=\"purple\">must</strong> not currently have its payload replaced by an imported payload as described below in <a href=\"#synchronization-fences-importing\">Importing Fence Payloads</a> unless that imported payload&#8217;s handle type was included in <a href=\"#VkExternalFenceProperties\">VkExternalFenceProperties</a>::<code>exportFromImportedHandleTypes</code> for <code>handleType</code>."
1556        },
1557        {
1558          "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01456",
1559          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle."
1560        },
1561        {
1562          "vuid": "VUID-VkFenceGetFdInfoKHR-sType-sType",
1563          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR</code>"
1564        },
1565        {
1566          "vuid": "VUID-VkFenceGetFdInfoKHR-pNext-pNext",
1567          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
1568        },
1569        {
1570          "vuid": "VUID-VkFenceGetFdInfoKHR-fence-parameter",
1571          "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
1572        },
1573        {
1574          "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-parameter",
1575          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
1576        }
1577      ]
1578    },
1579    "vkDestroyFence": {
1580      "core": [
1581        {
1582          "vuid": "VUID-vkDestroyFence-fence-01120",
1583          "text": " All <a href=\"#devsandqueues-submission\">queue submission</a> commands that refer to <code>fence</code> <strong class=\"purple\">must</strong> have completed execution"
1584        },
1585        {
1586          "vuid": "VUID-vkDestroyFence-fence-01121",
1587          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>fence</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
1588        },
1589        {
1590          "vuid": "VUID-vkDestroyFence-fence-01122",
1591          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>fence</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
1592        },
1593        {
1594          "vuid": "VUID-vkDestroyFence-device-parameter",
1595          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
1596        },
1597        {
1598          "vuid": "VUID-vkDestroyFence-fence-parameter",
1599          "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
1600        },
1601        {
1602          "vuid": "VUID-vkDestroyFence-pAllocator-parameter",
1603          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
1604        },
1605        {
1606          "vuid": "VUID-vkDestroyFence-fence-parent",
1607          "text": " If <code>fence</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
1608        }
1609      ]
1610    },
1611    "vkGetFenceStatus": {
1612      "core": [
1613        {
1614          "vuid": "VUID-vkGetFenceStatus-device-parameter",
1615          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
1616        },
1617        {
1618          "vuid": "VUID-vkGetFenceStatus-fence-parameter",
1619          "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
1620        },
1621        {
1622          "vuid": "VUID-vkGetFenceStatus-fence-parent",
1623          "text": " <code>fence</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
1624        }
1625      ]
1626    },
1627    "vkResetFences": {
1628      "core": [
1629        {
1630          "vuid": "VUID-vkResetFences-pFences-01123",
1631          "text": " Each element of <code>pFences</code> <strong class=\"purple\">must</strong> not be currently associated with any queue command that has not yet completed execution on that queue"
1632        },
1633        {
1634          "vuid": "VUID-vkResetFences-device-parameter",
1635          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
1636        },
1637        {
1638          "vuid": "VUID-vkResetFences-pFences-parameter",
1639          "text": " <code>pFences</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>fenceCount</code> valid <code>VkFence</code> handles"
1640        },
1641        {
1642          "vuid": "VUID-vkResetFences-fenceCount-arraylength",
1643          "text": " <code>fenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
1644        },
1645        {
1646          "vuid": "VUID-vkResetFences-pFences-parent",
1647          "text": " Each element of <code>pFences</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
1648        }
1649      ]
1650    },
1651    "vkWaitForFences": {
1652      "core": [
1653        {
1654          "vuid": "VUID-vkWaitForFences-device-parameter",
1655          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
1656        },
1657        {
1658          "vuid": "VUID-vkWaitForFences-pFences-parameter",
1659          "text": " <code>pFences</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>fenceCount</code> valid <code>VkFence</code> handles"
1660        },
1661        {
1662          "vuid": "VUID-vkWaitForFences-fenceCount-arraylength",
1663          "text": " <code>fenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
1664        },
1665        {
1666          "vuid": "VUID-vkWaitForFences-pFences-parent",
1667          "text": " Each element of <code>pFences</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
1668        }
1669      ]
1670    },
1671    "vkRegisterDeviceEventEXT": {
1672      "(VK_EXT_display_control)": [
1673        {
1674          "vuid": "VUID-vkRegisterDeviceEventEXT-device-parameter",
1675          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
1676        },
1677        {
1678          "vuid": "VUID-vkRegisterDeviceEventEXT-pDeviceEventInfo-parameter",
1679          "text": " <code>pDeviceEventInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDeviceEventInfoEXT</code> structure"
1680        },
1681        {
1682          "vuid": "VUID-vkRegisterDeviceEventEXT-pAllocator-parameter",
1683          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
1684        },
1685        {
1686          "vuid": "VUID-vkRegisterDeviceEventEXT-pFence-parameter",
1687          "text": " <code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFence</code> handle"
1688        }
1689      ]
1690    },
1691    "VkDeviceEventInfoEXT": {
1692      "(VK_EXT_display_control)": [
1693        {
1694          "vuid": "VUID-VkDeviceEventInfoEXT-sType-sType",
1695          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT</code>"
1696        },
1697        {
1698          "vuid": "VUID-VkDeviceEventInfoEXT-pNext-pNext",
1699          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
1700        },
1701        {
1702          "vuid": "VUID-VkDeviceEventInfoEXT-deviceEvent-parameter",
1703          "text": " <code>deviceEvent</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceEventTypeEXT\">VkDeviceEventTypeEXT</a> value"
1704        }
1705      ]
1706    },
1707    "vkRegisterDisplayEventEXT": {
1708      "(VK_EXT_display_control)": [
1709        {
1710          "vuid": "VUID-vkRegisterDisplayEventEXT-device-parameter",
1711          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
1712        },
1713        {
1714          "vuid": "VUID-vkRegisterDisplayEventEXT-display-parameter",
1715          "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle"
1716        },
1717        {
1718          "vuid": "VUID-vkRegisterDisplayEventEXT-pDisplayEventInfo-parameter",
1719          "text": " <code>pDisplayEventInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDisplayEventInfoEXT</code> structure"
1720        },
1721        {
1722          "vuid": "VUID-vkRegisterDisplayEventEXT-pAllocator-parameter",
1723          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
1724        },
1725        {
1726          "vuid": "VUID-vkRegisterDisplayEventEXT-pFence-parameter",
1727          "text": " <code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFence</code> handle"
1728        }
1729      ]
1730    },
1731    "VkDisplayEventInfoEXT": {
1732      "(VK_EXT_display_control)": [
1733        {
1734          "vuid": "VUID-VkDisplayEventInfoEXT-sType-sType",
1735          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT</code>"
1736        },
1737        {
1738          "vuid": "VUID-VkDisplayEventInfoEXT-pNext-pNext",
1739          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
1740        },
1741        {
1742          "vuid": "VUID-VkDisplayEventInfoEXT-displayEvent-parameter",
1743          "text": " <code>displayEvent</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayEventTypeEXT\">VkDisplayEventTypeEXT</a> value"
1744        }
1745      ]
1746    },
1747    "vkImportFenceWin32HandleKHR": {
1748      "(VK_KHR_external_fence_win32)": [
1749        {
1750          "vuid": "VUID-vkImportFenceWin32HandleKHR-device-parameter",
1751          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
1752        },
1753        {
1754          "vuid": "VUID-vkImportFenceWin32HandleKHR-pImportFenceWin32HandleInfo-parameter",
1755          "text": " <code>pImportFenceWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImportFenceWin32HandleInfoKHR</code> structure"
1756        }
1757      ]
1758    },
1759    "VkImportFenceWin32HandleInfoKHR": {
1760      "(VK_KHR_external_fence_win32)": [
1761        {
1762          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01457",
1763          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the <a href=\"#synchronization-fence-handletypes-win32\">Handle Types Supported by VkImportFenceWin32HandleInfoKHR</a> table."
1764        },
1765        {
1766          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01459",
1767          "text": " If <code>handleType</code> is not <code>VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>."
1768        },
1769        {
1770          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01460",
1771          "text": " If <code>handleType</code> is not <code>0</code> and <code>handle</code> is <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> name a valid synchronization primitive of the type specified by <code>handleType</code>."
1772        },
1773        {
1774          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01461",
1775          "text": " If <code>handleType</code> is not <code>0</code> and <code>name</code> is <code>NULL</code>, <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>."
1776        },
1777        {
1778          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handle-01462",
1779          "text": " If <code>handle</code> is not <code>NULL</code>, <code>name</code> must be <code>NULL</code>."
1780        },
1781        {
1782          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handle-01539",
1783          "text": " If <code>handle</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-fence-handle-types-compatibility\">external fence handle types compatibility</a>."
1784        },
1785        {
1786          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-name-01540",
1787          "text": " If <code>name</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-fence-handle-types-compatibility\">external fence handle types compatibility</a>."
1788        },
1789        {
1790          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-sType-sType",
1791          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR</code>"
1792        },
1793        {
1794          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-pNext-pNext",
1795          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
1796        },
1797        {
1798          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-fence-parameter",
1799          "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
1800        },
1801        {
1802          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-flags-parameter",
1803          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceImportFlagBits\">VkFenceImportFlagBits</a> values"
1804        },
1805        {
1806          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-parameter",
1807          "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
1808        }
1809      ]
1810    },
1811    "vkImportFenceFdKHR": {
1812      "(VK_KHR_external_fence_fd)": [
1813        {
1814          "vuid": "VUID-vkImportFenceFdKHR-fence-01463",
1815          "text": " <code>fence</code> <strong class=\"purple\">must</strong> not be associated with any queue command that has not yet completed execution on that queue"
1816        },
1817        {
1818          "vuid": "VUID-vkImportFenceFdKHR-device-parameter",
1819          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
1820        },
1821        {
1822          "vuid": "VUID-vkImportFenceFdKHR-pImportFenceFdInfo-parameter",
1823          "text": " <code>pImportFenceFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImportFenceFdInfoKHR</code> structure"
1824        }
1825      ]
1826    },
1827    "VkImportFenceFdInfoKHR": {
1828      "(VK_KHR_external_fence_fd)": [
1829        {
1830          "vuid": "VUID-VkImportFenceFdInfoKHR-handleType-01464",
1831          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the <a href=\"#synchronization-fence-handletypes-fd\">Handle Types Supported by VkImportFenceFdInfoKHR</a> table."
1832        },
1833        {
1834          "vuid": "VUID-VkImportFenceFdInfoKHR-fd-01541",
1835          "text": " <code>fd</code> <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-fence-handle-types-compatibility\">external fence handle types compatibility</a>."
1836        },
1837        {
1838          "vuid": "VUID-VkImportFenceFdInfoKHR-sType-sType",
1839          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR</code>"
1840        },
1841        {
1842          "vuid": "VUID-VkImportFenceFdInfoKHR-pNext-pNext",
1843          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
1844        },
1845        {
1846          "vuid": "VUID-VkImportFenceFdInfoKHR-fence-parameter",
1847          "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
1848        },
1849        {
1850          "vuid": "VUID-VkImportFenceFdInfoKHR-flags-parameter",
1851          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceImportFlagBits\">VkFenceImportFlagBits</a> values"
1852        },
1853        {
1854          "vuid": "VUID-VkImportFenceFdInfoKHR-handleType-parameter",
1855          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
1856        }
1857      ]
1858    },
1859    "vkCreateSemaphore": {
1860      "core": [
1861        {
1862          "vuid": "VUID-vkCreateSemaphore-device-parameter",
1863          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
1864        },
1865        {
1866          "vuid": "VUID-vkCreateSemaphore-pCreateInfo-parameter",
1867          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSemaphoreCreateInfo</code> structure"
1868        },
1869        {
1870          "vuid": "VUID-vkCreateSemaphore-pAllocator-parameter",
1871          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
1872        },
1873        {
1874          "vuid": "VUID-vkCreateSemaphore-pSemaphore-parameter",
1875          "text": " <code>pSemaphore</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSemaphore</code> handle"
1876        }
1877      ]
1878    },
1879    "VkSemaphoreCreateInfo": {
1880      "core": [
1881        {
1882          "vuid": "VUID-VkSemaphoreCreateInfo-sType-sType",
1883          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO</code>"
1884        },
1885        {
1886          "vuid": "VUID-VkSemaphoreCreateInfo-pNext-pNext",
1887          "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkExportSemaphoreCreateInfo\">VkExportSemaphoreCreateInfo</a> or <a href=\"#VkExportSemaphoreWin32HandleInfoKHR\">VkExportSemaphoreWin32HandleInfoKHR</a>"
1888        },
1889        {
1890          "vuid": "VUID-VkSemaphoreCreateInfo-sType-unique",
1891          "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
1892        },
1893        {
1894          "vuid": "VUID-VkSemaphoreCreateInfo-flags-zerobitmask",
1895          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
1896        }
1897      ]
1898    },
1899    "VkExportSemaphoreCreateInfo": {
1900      "(VK_VERSION_1_1,VK_KHR_external_semaphore)": [
1901        {
1902          "vuid": "VUID-VkExportSemaphoreCreateInfo-handleTypes-01124",
1903          "text": " The bits in <code>handleTypes</code> <strong class=\"purple\">must</strong> be supported and compatible, as reported by <a href=\"#VkExternalSemaphoreProperties\">VkExternalSemaphoreProperties</a>."
1904        },
1905        {
1906          "vuid": "VUID-VkExportSemaphoreCreateInfo-sType-sType",
1907          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO</code>"
1908        },
1909        {
1910          "vuid": "VUID-VkExportSemaphoreCreateInfo-handleTypes-parameter",
1911          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> values"
1912        }
1913      ]
1914    },
1915    "VkExportSemaphoreWin32HandleInfoKHR": {
1916      "(VK_KHR_external_semaphore_win32)": [
1917        {
1918          "vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-handleTypes-01125",
1919          "text": " If <a href=\"#VkExportSemaphoreCreateInfo\">VkExportSemaphoreCreateInfo</a>::<code>handleTypes</code> does not include <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code> or <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT</code>, <code>VkExportSemaphoreWin32HandleInfoKHR</code> <strong class=\"purple\">must</strong> not be in the <code>pNext</code> chain of <a href=\"#VkSemaphoreCreateInfo\">VkSemaphoreCreateInfo</a>."
1920        },
1921        {
1922          "vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-sType-sType",
1923          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR</code>"
1924        },
1925        {
1926          "vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-pAttributes-parameter",
1927          "text": " If <code>pAttributes</code> is not <code>NULL</code>, <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>SECURITY_ATTRIBUTES</code> value"
1928        }
1929      ]
1930    },
1931    "vkGetSemaphoreWin32HandleKHR": {
1932      "(VK_KHR_external_semaphore_win32)": [
1933        {
1934          "vuid": "VUID-vkGetSemaphoreWin32HandleKHR-device-parameter",
1935          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
1936        },
1937        {
1938          "vuid": "VUID-vkGetSemaphoreWin32HandleKHR-pGetWin32HandleInfo-parameter",
1939          "text": " <code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSemaphoreGetWin32HandleInfoKHR</code> structure"
1940        },
1941        {
1942          "vuid": "VUID-vkGetSemaphoreWin32HandleKHR-pHandle-parameter",
1943          "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value"
1944        }
1945      ]
1946    },
1947    "VkSemaphoreGetWin32HandleInfoKHR": {
1948      "(VK_KHR_external_semaphore_win32)": [
1949        {
1950          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01126",
1951          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportSemaphoreCreateInfo\">VkExportSemaphoreCreateInfo</a>::<code>handleTypes</code> when the <code>semaphore</code>&#8217;s current payload was created."
1952        },
1953        {
1954          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01127",
1955          "text": " If <code>handleType</code> is defined as an NT handle, <a href=\"#vkGetSemaphoreWin32HandleKHR\">vkGetSemaphoreWin32HandleKHR</a> <strong class=\"purple\">must</strong> be called no more than once for each valid unique combination of <code>semaphore</code> and <code>handleType</code>."
1956        },
1957        {
1958          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-01128",
1959          "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> not currently have its payload replaced by an imported payload as described below in <a href=\"#synchronization-semaphores-importing\">Importing Semaphore Payloads</a> unless that imported payload&#8217;s handle type was included in <a href=\"#VkExternalSemaphoreProperties\">VkExternalSemaphoreProperties</a>::<code>exportFromImportedHandleTypes</code> for <code>handleType</code>."
1960        },
1961        {
1962          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01129",
1963          "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, as defined below in <a href=\"#synchronization-semaphores-importing\">Importing Semaphore Payloads</a>, there <strong class=\"purple\">must</strong> be no queue waiting on <code>semaphore</code>."
1964        },
1965        {
1966          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01130",
1967          "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>semaphore</code> <strong class=\"purple\">must</strong> be signaled, or have an associated <a href=\"#synchronization-semaphores-signaling\">semaphore signal operation</a> pending execution."
1968        },
1969        {
1970          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01131",
1971          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle."
1972        },
1973        {
1974          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-sType-sType",
1975          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR</code>"
1976        },
1977        {
1978          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-pNext-pNext",
1979          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
1980        },
1981        {
1982          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-parameter",
1983          "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle"
1984        },
1985        {
1986          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-parameter",
1987          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
1988        }
1989      ]
1990    },
1991    "vkGetSemaphoreFdKHR": {
1992      "(VK_KHR_external_semaphore_fd)": [
1993        {
1994          "vuid": "VUID-vkGetSemaphoreFdKHR-device-parameter",
1995          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
1996        },
1997        {
1998          "vuid": "VUID-vkGetSemaphoreFdKHR-pGetFdInfo-parameter",
1999          "text": " <code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSemaphoreGetFdInfoKHR</code> structure"
2000        },
2001        {
2002          "vuid": "VUID-vkGetSemaphoreFdKHR-pFd-parameter",
2003          "text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>int</code> value"
2004        }
2005      ]
2006    },
2007    "VkSemaphoreGetFdInfoKHR": {
2008      "(VK_KHR_external_semaphore_fd)": [
2009        {
2010          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01132",
2011          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportSemaphoreCreateInfo\">VkExportSemaphoreCreateInfo</a>::<code>handleTypes</code> when <code>semaphore</code>&#8217;s current payload was created."
2012        },
2013        {
2014          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-semaphore-01133",
2015          "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> not currently have its payload replaced by an imported payload as described below in <a href=\"#synchronization-semaphores-importing\">Importing Semaphore Payloads</a> unless that imported payload&#8217;s handle type was included in <a href=\"#VkExternalSemaphoreProperties\">VkExternalSemaphoreProperties</a>::<code>exportFromImportedHandleTypes</code> for <code>handleType</code>."
2016        },
2017        {
2018          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01134",
2019          "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, as defined below in <a href=\"#synchronization-semaphores-importing\">Importing Semaphore Payloads</a>, there <strong class=\"purple\">must</strong> be no queue waiting on <code>semaphore</code>."
2020        },
2021        {
2022          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01135",
2023          "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>semaphore</code> <strong class=\"purple\">must</strong> be signaled, or have an associated <a href=\"#synchronization-semaphores-signaling\">semaphore signal operation</a> pending execution."
2024        },
2025        {
2026          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01136",
2027          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle."
2028        },
2029        {
2030          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-sType-sType",
2031          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR</code>"
2032        },
2033        {
2034          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-pNext-pNext",
2035          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2036        },
2037        {
2038          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-semaphore-parameter",
2039          "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle"
2040        },
2041        {
2042          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-parameter",
2043          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
2044        }
2045      ]
2046    },
2047    "vkDestroySemaphore": {
2048      "core": [
2049        {
2050          "vuid": "VUID-vkDestroySemaphore-semaphore-01137",
2051          "text": " All submitted batches that refer to <code>semaphore</code> <strong class=\"purple\">must</strong> have completed execution"
2052        },
2053        {
2054          "vuid": "VUID-vkDestroySemaphore-semaphore-01138",
2055          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>semaphore</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
2056        },
2057        {
2058          "vuid": "VUID-vkDestroySemaphore-semaphore-01139",
2059          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>semaphore</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2060        },
2061        {
2062          "vuid": "VUID-vkDestroySemaphore-device-parameter",
2063          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
2064        },
2065        {
2066          "vuid": "VUID-vkDestroySemaphore-semaphore-parameter",
2067          "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle"
2068        },
2069        {
2070          "vuid": "VUID-vkDestroySemaphore-pAllocator-parameter",
2071          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
2072        },
2073        {
2074          "vuid": "VUID-vkDestroySemaphore-semaphore-parent",
2075          "text": " If <code>semaphore</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
2076        }
2077      ]
2078    },
2079    "vkImportSemaphoreWin32HandleKHR": {
2080      "(VK_KHR_external_semaphore_win32)": [
2081        {
2082          "vuid": "VUID-vkImportSemaphoreWin32HandleKHR-device-parameter",
2083          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
2084        },
2085        {
2086          "vuid": "VUID-vkImportSemaphoreWin32HandleKHR-pImportSemaphoreWin32HandleInfo-parameter",
2087          "text": " <code>pImportSemaphoreWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImportSemaphoreWin32HandleInfoKHR</code> structure"
2088        }
2089      ]
2090    },
2091    "VkImportSemaphoreWin32HandleInfoKHR": {
2092      "(VK_KHR_external_semaphore_win32)": [
2093        {
2094          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01140",
2095          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the <a href=\"#synchronization-semaphore-handletypes-win32\">Handle Types Supported by VkImportSemaphoreWin32HandleInfoKHR</a> table."
2096        },
2097        {
2098          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01466",
2099          "text": " If <code>handleType</code> is not <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code> or <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>."
2100        },
2101        {
2102          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01467",
2103          "text": " If <code>handleType</code> is not <code>0</code> and <code>handle</code> is <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> name a valid synchronization primitive of the type specified by <code>handleType</code>."
2104        },
2105        {
2106          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01468",
2107          "text": " If <code>handleType</code> is not <code>0</code> and <code>name</code> is <code>NULL</code>, <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>."
2108        },
2109        {
2110          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01469",
2111          "text": " If <code>handle</code> is not <code>NULL</code>, <code>name</code> must be <code>NULL</code>."
2112        },
2113        {
2114          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01542",
2115          "text": " If <code>handle</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-semaphore-handle-types-compatibility\">external semaphore handle types compatibility</a>."
2116        },
2117        {
2118          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-name-01543",
2119          "text": " If <code>name</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-semaphore-handle-types-compatibility\">external semaphore handle types compatibility</a>."
2120        },
2121        {
2122          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-sType-sType",
2123          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR</code>"
2124        },
2125        {
2126          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-pNext-pNext",
2127          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2128        },
2129        {
2130          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-semaphore-parameter",
2131          "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle"
2132        },
2133        {
2134          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-flags-parameter",
2135          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSemaphoreImportFlagBits\">VkSemaphoreImportFlagBits</a> values"
2136        },
2137        {
2138          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-parameter",
2139          "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
2140        }
2141      ]
2142    },
2143    "vkImportSemaphoreFdKHR": {
2144      "(VK_KHR_external_semaphore_fd)": [
2145        {
2146          "vuid": "VUID-vkImportSemaphoreFdKHR-semaphore-01142",
2147          "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> not be associated with any queue command that has not yet completed execution on that queue"
2148        },
2149        {
2150          "vuid": "VUID-vkImportSemaphoreFdKHR-device-parameter",
2151          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
2152        },
2153        {
2154          "vuid": "VUID-vkImportSemaphoreFdKHR-pImportSemaphoreFdInfo-parameter",
2155          "text": " <code>pImportSemaphoreFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImportSemaphoreFdInfoKHR</code> structure"
2156        }
2157      ]
2158    },
2159    "VkImportSemaphoreFdInfoKHR": {
2160      "(VK_KHR_external_semaphore_fd)": [
2161        {
2162          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-01143",
2163          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the <a href=\"#synchronization-semaphore-handletypes-fd\">Handle Types Supported by VkImportSemaphoreFdInfoKHR</a> table."
2164        },
2165        {
2166          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-fd-01544",
2167          "text": " <code>fd</code> <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-semaphore-handle-types-compatibility\">external semaphore handle types compatibility</a>."
2168        },
2169        {
2170          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-sType-sType",
2171          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR</code>"
2172        },
2173        {
2174          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-pNext-pNext",
2175          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2176        },
2177        {
2178          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-semaphore-parameter",
2179          "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle"
2180        },
2181        {
2182          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-flags-parameter",
2183          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSemaphoreImportFlagBits\">VkSemaphoreImportFlagBits</a> values"
2184        },
2185        {
2186          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-parameter",
2187          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
2188        }
2189      ]
2190    },
2191    "vkCreateEvent": {
2192      "core": [
2193        {
2194          "vuid": "VUID-vkCreateEvent-device-parameter",
2195          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
2196        },
2197        {
2198          "vuid": "VUID-vkCreateEvent-pCreateInfo-parameter",
2199          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkEventCreateInfo</code> structure"
2200        },
2201        {
2202          "vuid": "VUID-vkCreateEvent-pAllocator-parameter",
2203          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
2204        },
2205        {
2206          "vuid": "VUID-vkCreateEvent-pEvent-parameter",
2207          "text": " <code>pEvent</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkEvent</code> handle"
2208        }
2209      ]
2210    },
2211    "VkEventCreateInfo": {
2212      "core": [
2213        {
2214          "vuid": "VUID-VkEventCreateInfo-sType-sType",
2215          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EVENT_CREATE_INFO</code>"
2216        },
2217        {
2218          "vuid": "VUID-VkEventCreateInfo-pNext-pNext",
2219          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2220        },
2221        {
2222          "vuid": "VUID-VkEventCreateInfo-flags-zerobitmask",
2223          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
2224        }
2225      ]
2226    },
2227    "vkDestroyEvent": {
2228      "core": [
2229        {
2230          "vuid": "VUID-vkDestroyEvent-event-01145",
2231          "text": " All submitted commands that refer to <code>event</code> <strong class=\"purple\">must</strong> have completed execution"
2232        },
2233        {
2234          "vuid": "VUID-vkDestroyEvent-event-01146",
2235          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>event</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
2236        },
2237        {
2238          "vuid": "VUID-vkDestroyEvent-event-01147",
2239          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>event</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2240        },
2241        {
2242          "vuid": "VUID-vkDestroyEvent-device-parameter",
2243          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
2244        },
2245        {
2246          "vuid": "VUID-vkDestroyEvent-event-parameter",
2247          "text": " If <code>event</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle"
2248        },
2249        {
2250          "vuid": "VUID-vkDestroyEvent-pAllocator-parameter",
2251          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
2252        },
2253        {
2254          "vuid": "VUID-vkDestroyEvent-event-parent",
2255          "text": " If <code>event</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
2256        }
2257      ]
2258    },
2259    "vkGetEventStatus": {
2260      "core": [
2261        {
2262          "vuid": "VUID-vkGetEventStatus-device-parameter",
2263          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
2264        },
2265        {
2266          "vuid": "VUID-vkGetEventStatus-event-parameter",
2267          "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle"
2268        },
2269        {
2270          "vuid": "VUID-vkGetEventStatus-event-parent",
2271          "text": " <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
2272        }
2273      ]
2274    },
2275    "vkSetEvent": {
2276      "core": [
2277        {
2278          "vuid": "VUID-vkSetEvent-device-parameter",
2279          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
2280        },
2281        {
2282          "vuid": "VUID-vkSetEvent-event-parameter",
2283          "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle"
2284        },
2285        {
2286          "vuid": "VUID-vkSetEvent-event-parent",
2287          "text": " <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
2288        }
2289      ]
2290    },
2291    "vkResetEvent": {
2292      "core": [
2293        {
2294          "vuid": "VUID-vkResetEvent-event-01148",
2295          "text": " <code>event</code> <strong class=\"purple\">must</strong> not be waited on by a <code>vkCmdWaitEvents</code> command that is currently executing"
2296        },
2297        {
2298          "vuid": "VUID-vkResetEvent-device-parameter",
2299          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
2300        },
2301        {
2302          "vuid": "VUID-vkResetEvent-event-parameter",
2303          "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle"
2304        },
2305        {
2306          "vuid": "VUID-vkResetEvent-event-parent",
2307          "text": " <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
2308        }
2309      ]
2310    },
2311    "vkCmdSetEvent": {
2312      "core": [
2313        {
2314          "vuid": "VUID-vkCmdSetEvent-stageMask-01149",
2315          "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>"
2316        },
2317        {
2318          "vuid": "VUID-vkCmdSetEvent-stageMask-01150",
2319          "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
2320        },
2321        {
2322          "vuid": "VUID-vkCmdSetEvent-stageMask-01151",
2323          "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
2324        },
2325        {
2326          "vuid": "VUID-vkCmdSetEvent-commandBuffer-parameter",
2327          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
2328        },
2329        {
2330          "vuid": "VUID-vkCmdSetEvent-event-parameter",
2331          "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle"
2332        },
2333        {
2334          "vuid": "VUID-vkCmdSetEvent-stageMask-parameter",
2335          "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
2336        },
2337        {
2338          "vuid": "VUID-vkCmdSetEvent-stageMask-requiredbitmask",
2339          "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
2340        },
2341        {
2342          "vuid": "VUID-vkCmdSetEvent-commandBuffer-recording",
2343          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
2344        },
2345        {
2346          "vuid": "VUID-vkCmdSetEvent-commandBuffer-cmdpool",
2347          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
2348        },
2349        {
2350          "vuid": "VUID-vkCmdSetEvent-renderpass",
2351          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
2352        },
2353        {
2354          "vuid": "VUID-vkCmdSetEvent-commonparent",
2355          "text": " Both of <code>commandBuffer</code>, and <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
2356        }
2357      ],
2358      "(VK_VERSION_1_1,VK_KHR_device_group)": [
2359        {
2360          "vuid": "VUID-vkCmdSetEvent-commandBuffer-01152",
2361          "text": " <code>commandBuffer</code>&#8217;s current device mask <strong class=\"purple\">must</strong> include exactly one physical device."
2362        }
2363      ],
2364      "(VK_NV_mesh_shader)": [
2365        {
2366          "vuid": "VUID-vkCmdSetEvent-stageMask-02107",
2367          "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
2368        },
2369        {
2370          "vuid": "VUID-vkCmdSetEvent-stageMask-02108",
2371          "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
2372        }
2373      ]
2374    },
2375    "vkCmdResetEvent": {
2376      "core": [
2377        {
2378          "vuid": "VUID-vkCmdResetEvent-stageMask-01153",
2379          "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>"
2380        },
2381        {
2382          "vuid": "VUID-vkCmdResetEvent-stageMask-01154",
2383          "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
2384        },
2385        {
2386          "vuid": "VUID-vkCmdResetEvent-stageMask-01155",
2387          "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
2388        },
2389        {
2390          "vuid": "VUID-vkCmdResetEvent-event-01156",
2391          "text": " When this command executes, <code>event</code> <strong class=\"purple\">must</strong> not be waited on by a <code>vkCmdWaitEvents</code> command that is currently executing"
2392        },
2393        {
2394          "vuid": "VUID-vkCmdResetEvent-commandBuffer-parameter",
2395          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
2396        },
2397        {
2398          "vuid": "VUID-vkCmdResetEvent-event-parameter",
2399          "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle"
2400        },
2401        {
2402          "vuid": "VUID-vkCmdResetEvent-stageMask-parameter",
2403          "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
2404        },
2405        {
2406          "vuid": "VUID-vkCmdResetEvent-stageMask-requiredbitmask",
2407          "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
2408        },
2409        {
2410          "vuid": "VUID-vkCmdResetEvent-commandBuffer-recording",
2411          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
2412        },
2413        {
2414          "vuid": "VUID-vkCmdResetEvent-commandBuffer-cmdpool",
2415          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
2416        },
2417        {
2418          "vuid": "VUID-vkCmdResetEvent-renderpass",
2419          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
2420        },
2421        {
2422          "vuid": "VUID-vkCmdResetEvent-commonparent",
2423          "text": " Both of <code>commandBuffer</code>, and <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
2424        }
2425      ],
2426      "(VK_VERSION_1_1,VK_KHR_device_group)": [
2427        {
2428          "vuid": "VUID-vkCmdResetEvent-commandBuffer-01157",
2429          "text": " <code>commandBuffer</code>&#8217;s current device mask <strong class=\"purple\">must</strong> include exactly one physical device."
2430        }
2431      ],
2432      "(VK_NV_mesh_shader)": [
2433        {
2434          "vuid": "VUID-vkCmdResetEvent-stageMask-02109",
2435          "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
2436        },
2437        {
2438          "vuid": "VUID-vkCmdResetEvent-stageMask-02110",
2439          "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
2440        }
2441      ]
2442    },
2443    "vkCmdWaitEvents": {
2444      "core": [
2445        {
2446          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-01158",
2447          "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be the bitwise OR of the <code>stageMask</code> parameter used in previous calls to <code>vkCmdSetEvent</code> with any of the members of <code>pEvents</code> and <code>VK_PIPELINE_STAGE_HOST_BIT</code> if any of the members of <code>pEvents</code> was set using <code>vkSetEvent</code>"
2448        },
2449        {
2450          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-01159",
2451          "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
2452        },
2453        {
2454          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-01160",
2455          "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
2456        },
2457        {
2458          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-01161",
2459          "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
2460        },
2461        {
2462          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-01162",
2463          "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
2464        },
2465        {
2466          "vuid": "VUID-vkCmdWaitEvents-pEvents-01163",
2467          "text": " If <code>pEvents</code> includes one or more events that will be signaled by <code>vkSetEvent</code> after <code>commandBuffer</code> has been submitted to a queue, then <code>vkCmdWaitEvents</code> <strong class=\"purple\">must</strong> not be called inside a render pass instance"
2468        },
2469        {
2470          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-01164",
2471          "text": " Any pipeline stage included in <code>srcStageMask</code> or <code>dstStageMask</code> <strong class=\"purple\">must</strong> be supported by the capabilities of the queue family specified by the <code>queueFamilyIndex</code> member of the <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> structure that was used to create the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from, as specified in the <a href=\"#synchronization-pipeline-stages-supported\">table of supported pipeline stages</a>."
2472        },
2473        {
2474          "vuid": "VUID-vkCmdWaitEvents-pMemoryBarriers-01165",
2475          "text": " Each element of <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code> or <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> not have any access flag included in its <code>srcAccessMask</code> member if that bit is not supported by any of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>."
2476        },
2477        {
2478          "vuid": "VUID-vkCmdWaitEvents-pMemoryBarriers-01166",
2479          "text": " Each element of <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code> or <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> not have any access flag included in its <code>dstAccessMask</code> member if that bit is not supported by any of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>."
2480        },
2481        {
2482          "vuid": "VUID-vkCmdWaitEvents-commandBuffer-parameter",
2483          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
2484        },
2485        {
2486          "vuid": "VUID-vkCmdWaitEvents-pEvents-parameter",
2487          "text": " <code>pEvents</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>eventCount</code> valid <code>VkEvent</code> handles"
2488        },
2489        {
2490          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-parameter",
2491          "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
2492        },
2493        {
2494          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-requiredbitmask",
2495          "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
2496        },
2497        {
2498          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-parameter",
2499          "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
2500        },
2501        {
2502          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-requiredbitmask",
2503          "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
2504        },
2505        {
2506          "vuid": "VUID-vkCmdWaitEvents-pMemoryBarriers-parameter",
2507          "text": " If <code>memoryBarrierCount</code> is not <code>0</code>, <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryBarrierCount</code> valid <code>VkMemoryBarrier</code> structures"
2508        },
2509        {
2510          "vuid": "VUID-vkCmdWaitEvents-pBufferMemoryBarriers-parameter",
2511          "text": " If <code>bufferMemoryBarrierCount</code> is not <code>0</code>, <code>pBufferMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bufferMemoryBarrierCount</code> valid <code>VkBufferMemoryBarrier</code> structures"
2512        },
2513        {
2514          "vuid": "VUID-vkCmdWaitEvents-pImageMemoryBarriers-parameter",
2515          "text": " If <code>imageMemoryBarrierCount</code> is not <code>0</code>, <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageMemoryBarrierCount</code> valid <code>VkImageMemoryBarrier</code> structures"
2516        },
2517        {
2518          "vuid": "VUID-vkCmdWaitEvents-commandBuffer-recording",
2519          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
2520        },
2521        {
2522          "vuid": "VUID-vkCmdWaitEvents-commandBuffer-cmdpool",
2523          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
2524        },
2525        {
2526          "vuid": "VUID-vkCmdWaitEvents-eventCount-arraylength",
2527          "text": " <code>eventCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
2528        },
2529        {
2530          "vuid": "VUID-vkCmdWaitEvents-commonparent",
2531          "text": " Both of <code>commandBuffer</code>, and the elements of <code>pEvents</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
2532        }
2533      ],
2534      "(VK_VERSION_1_1,VK_KHR_device_group)": [
2535        {
2536          "vuid": "VUID-vkCmdWaitEvents-commandBuffer-01167",
2537          "text": " <code>commandBuffer</code>&#8217;s current device mask <strong class=\"purple\">must</strong> include exactly one physical device."
2538        }
2539      ],
2540      "(VK_NV_mesh_shader)": [
2541        {
2542          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-02111",
2543          "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
2544        },
2545        {
2546          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-02112",
2547          "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
2548        },
2549        {
2550          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-02113",
2551          "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
2552        },
2553        {
2554          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-02114",
2555          "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
2556        }
2557      ]
2558    },
2559    "vkCmdPipelineBarrier": {
2560      "core": [
2561        {
2562          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-01168",
2563          "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
2564        },
2565        {
2566          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-01169",
2567          "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
2568        },
2569        {
2570          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-01170",
2571          "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
2572        },
2573        {
2574          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-01171",
2575          "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
2576        },
2577        {
2578          "vuid": "VUID-vkCmdPipelineBarrier-pDependencies-02285",
2579          "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the render pass <strong class=\"purple\">must</strong> have been created with at least one <code>VkSubpassDependency</code> instance in <code>VkRenderPassCreateInfo</code>::<code>pDependencies</code> that expresses a dependency from the current subpass to itself, and for which <code>srcStageMask</code> contains a subset of the bit values in <code>VkSubpassDependency</code>::<code>srcStageMask</code>, <code>dstStageMask</code> contains a subset of the bit values in <code>VkSubpassDependency</code>::<code>dstStageMask</code>, <code>dependencyFlags</code> is equal to <code>VkSubpassDependency</code>::<code>dependencyFlags</code>, <code>srcAccessMask</code> member of each element of <code>pMemoryBarriers</code> and <code>pImageMemoryBarriers</code> contains a subset of the bit values in <code>VkSubpassDependency</code>::<code>srcAccessMask</code>, and <code>dstAccessMask</code> member of each element of <code>pMemoryBarriers</code> and <code>pImageMemoryBarriers</code> contains a subset of the bit values in <code>VkSubpassDependency</code>::<code>dstAccessMask</code>"
2580        },
2581        {
2582          "vuid": "VUID-vkCmdPipelineBarrier-bufferMemoryBarrierCount-01178",
2583          "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, <code>bufferMemoryBarrierCount</code> <strong class=\"purple\">must</strong> be <code>0</code>"
2584        },
2585        {
2586          "vuid": "VUID-vkCmdPipelineBarrier-oldLayout-01181",
2587          "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>oldLayout</code> and <code>newLayout</code> members of an element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal"
2588        },
2589        {
2590          "vuid": "VUID-vkCmdPipelineBarrier-srcQueueFamilyIndex-01182",
2591          "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members of any element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code>"
2592        },
2593        {
2594          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-01183",
2595          "text": " Any pipeline stage included in <code>srcStageMask</code> or <code>dstStageMask</code> <strong class=\"purple\">must</strong> be supported by the capabilities of the queue family specified by the <code>queueFamilyIndex</code> member of the <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> structure that was used to create the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from, as specified in the <a href=\"#synchronization-pipeline-stages-supported\">table of supported pipeline stages</a>."
2596        },
2597        {
2598          "vuid": "VUID-vkCmdPipelineBarrier-pMemoryBarriers-01184",
2599          "text": " Each element of <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code> and <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> not have any access flag included in its <code>srcAccessMask</code> member if that bit is not supported by any of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>."
2600        },
2601        {
2602          "vuid": "VUID-vkCmdPipelineBarrier-pMemoryBarriers-01185",
2603          "text": " Each element of <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code> and <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> not have any access flag included in its <code>dstAccessMask</code> member if that bit is not supported by any of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>."
2604        },
2605        {
2606          "vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-parameter",
2607          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
2608        },
2609        {
2610          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-parameter",
2611          "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
2612        },
2613        {
2614          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-requiredbitmask",
2615          "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
2616        },
2617        {
2618          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-parameter",
2619          "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
2620        },
2621        {
2622          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-requiredbitmask",
2623          "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
2624        },
2625        {
2626          "vuid": "VUID-vkCmdPipelineBarrier-dependencyFlags-parameter",
2627          "text": " <code>dependencyFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDependencyFlagBits\">VkDependencyFlagBits</a> values"
2628        },
2629        {
2630          "vuid": "VUID-vkCmdPipelineBarrier-pMemoryBarriers-parameter",
2631          "text": " If <code>memoryBarrierCount</code> is not <code>0</code>, <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryBarrierCount</code> valid <code>VkMemoryBarrier</code> structures"
2632        },
2633        {
2634          "vuid": "VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-parameter",
2635          "text": " If <code>bufferMemoryBarrierCount</code> is not <code>0</code>, <code>pBufferMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bufferMemoryBarrierCount</code> valid <code>VkBufferMemoryBarrier</code> structures"
2636        },
2637        {
2638          "vuid": "VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-parameter",
2639          "text": " If <code>imageMemoryBarrierCount</code> is not <code>0</code>, <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageMemoryBarrierCount</code> valid <code>VkImageMemoryBarrier</code> structures"
2640        },
2641        {
2642          "vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-recording",
2643          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
2644        },
2645        {
2646          "vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-cmdpool",
2647          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
2648        }
2649      ],
2650      "(VK_KHR_depth_stencil_resolve)": [
2651        {
2652          "vuid": "VUID-vkCmdPipelineBarrier-image-02635",
2653          "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>image</code> member of any element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal to one of the elements of <code>pAttachments</code> that the current <code>framebuffer</code> was created with, that is also referred to by one of the elements of the <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code> members of the <code>VkSubpassDescription</code> instance or by the <code>pDepthStencilResolveAttachment</code> member of the <code>VkSubpassDescriptionDepthStencilResolveKHR</code> structure that the current subpass was created with"
2654        },
2655        {
2656          "vuid": "VUID-vkCmdPipelineBarrier-oldLayout-02636",
2657          "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>oldLayout</code> and <code>newLayout</code> members of any element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal to the <code>layout</code> member of an element of the <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code> members of the <code>VkSubpassDescription</code> instance or by the <code>pDepthStencilResolveAttachment</code> member of the <code>VkSubpassDescriptionDepthStencilResolveKHR</code> structure that the current subpass was created with, that refers to the same <code>image</code>"
2658        }
2659      ],
2660      "!(VK_KHR_depth_stencil_resolve)": [
2661        {
2662          "vuid": "VUID-vkCmdPipelineBarrier-image-02637",
2663          "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>image</code> member of any element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal to one of the elements of <code>pAttachments</code> that the current <code>framebuffer</code> was created with, that is also referred to by one of the elements of the <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code> members of the <code>VkSubpassDescription</code> instance that the current subpass was created with"
2664        },
2665        {
2666          "vuid": "VUID-vkCmdPipelineBarrier-oldLayout-02638",
2667          "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>oldLayout</code> and <code>newLayout</code> members of any element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal to the <code>layout</code> member of an element of the <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code> members of the <code>VkSubpassDescription</code> instance that the current subpass was created with, that refers to the same <code>image</code>"
2668        }
2669      ],
2670      "(VK_VERSION_1_1,VK_KHR_multiview)": [
2671        {
2672          "vuid": "VUID-vkCmdPipelineBarrier-dependencyFlags-01186",
2673          "text": " If <code>vkCmdPipelineBarrier</code> is called outside of a render pass instance, <code>dependencyFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>"
2674        }
2675      ],
2676      "(VK_NV_mesh_shader)": [
2677        {
2678          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-02115",
2679          "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
2680        },
2681        {
2682          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-02116",
2683          "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
2684        },
2685        {
2686          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-02117",
2687          "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
2688        },
2689        {
2690          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-02118",
2691          "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
2692        }
2693      ]
2694    },
2695    "VkMemoryBarrier": {
2696      "core": [
2697        {
2698          "vuid": "VUID-VkMemoryBarrier-sType-sType",
2699          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_BARRIER</code>"
2700        },
2701        {
2702          "vuid": "VUID-VkMemoryBarrier-pNext-pNext",
2703          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2704        },
2705        {
2706          "vuid": "VUID-VkMemoryBarrier-srcAccessMask-parameter",
2707          "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
2708        },
2709        {
2710          "vuid": "VUID-VkMemoryBarrier-dstAccessMask-parameter",
2711          "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
2712        }
2713      ]
2714    },
2715    "VkBufferMemoryBarrier": {
2716      "core": [
2717        {
2718          "vuid": "VUID-VkBufferMemoryBarrier-offset-01187",
2719          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
2720        },
2721        {
2722          "vuid": "VUID-VkBufferMemoryBarrier-size-01188",
2723          "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
2724        },
2725        {
2726          "vuid": "VUID-VkBufferMemoryBarrier-size-01189",
2727          "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to than the size of <code>buffer</code> minus <code>offset</code>"
2728        },
2729        {
2730          "vuid": "VUID-VkBufferMemoryBarrier-buffer-01196",
2731          "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, and <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> are not <code>VK_QUEUE_FAMILY_IGNORED</code>, at least one of them <strong class=\"purple\">must</strong> be the same as the family of the queue that will execute this barrier"
2732        },
2733        {
2734          "vuid": "VUID-VkBufferMemoryBarrier-buffer-01931",
2735          "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
2736        },
2737        {
2738          "vuid": "VUID-VkBufferMemoryBarrier-sType-sType",
2739          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER</code>"
2740        },
2741        {
2742          "vuid": "VUID-VkBufferMemoryBarrier-pNext-pNext",
2743          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2744        },
2745        {
2746          "vuid": "VUID-VkBufferMemoryBarrier-srcAccessMask-parameter",
2747          "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
2748        },
2749        {
2750          "vuid": "VUID-VkBufferMemoryBarrier-dstAccessMask-parameter",
2751          "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
2752        },
2753        {
2754          "vuid": "VUID-VkBufferMemoryBarrier-buffer-parameter",
2755          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
2756        }
2757      ],
2758      "!(VK_VERSION_1_1,VK_KHR_external_memory)": [
2759        {
2760          "vuid": "VUID-VkBufferMemoryBarrier-buffer-01190",
2761          "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> both be <code>VK_QUEUE_FAMILY_IGNORED</code>"
2762        },
2763        {
2764          "vuid": "VUID-VkBufferMemoryBarrier-buffer-01192",
2765          "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> either both be <code>VK_QUEUE_FAMILY_IGNORED</code>, or both be a valid queue family (see <a href=\"#devsandqueues-queueprops\">Queue Family Properties</a>)"
2766        }
2767      ],
2768      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
2769        {
2770          "vuid": "VUID-VkBufferMemoryBarrier-buffer-01191",
2771          "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, at least one of <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code>"
2772        },
2773        {
2774          "vuid": "VUID-VkBufferMemoryBarrier-buffer-01763",
2775          "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, and one of <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> is <code>VK_QUEUE_FAMILY_IGNORED</code>, the other <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code> or a special queue family reserved for external memory ownership transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>."
2776        },
2777        {
2778          "vuid": "VUID-VkBufferMemoryBarrier-buffer-01193",
2779          "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>srcQueueFamilyIndex</code> is <code>VK_QUEUE_FAMILY_IGNORED</code>, <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> also be <code>VK_QUEUE_FAMILY_IGNORED</code>"
2780        },
2781        {
2782          "vuid": "VUID-VkBufferMemoryBarrier-buffer-01764",
2783          "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>srcQueueFamilyIndex</code> is not <code>VK_QUEUE_FAMILY_IGNORED</code>, it <strong class=\"purple\">must</strong> be a valid queue family or a special queue family reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>."
2784        },
2785        {
2786          "vuid": "VUID-VkBufferMemoryBarrier-buffer-01765",
2787          "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>dstQueueFamilyIndex</code> is not <code>VK_QUEUE_FAMILY_IGNORED</code>, it <strong class=\"purple\">must</strong> be a valid queue family or a special queue family reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>."
2788        }
2789      ]
2790    },
2791    "VkImageMemoryBarrier": {
2792      "core": [
2793        {
2794          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01197",
2795          "text": " <code>oldLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or the current layout of the image subresources affected by the barrier"
2796        },
2797        {
2798          "vuid": "VUID-VkImageMemoryBarrier-newLayout-01198",
2799          "text": " <code>newLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>"
2800        },
2801        {
2802          "vuid": "VUID-VkImageMemoryBarrier-image-01205",
2803          "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, and <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> are not <code>VK_QUEUE_FAMILY_IGNORED</code>, at least one of them <strong class=\"purple\">must</strong> be the same as the family of the queue that will execute this barrier"
2804        },
2805        {
2806          "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01486",
2807          "text": " <code>subresourceRange.baseMipLevel</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
2808        },
2809        {
2810          "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01724",
2811          "text": " If <code>subresourceRange.levelCount</code> is not <code>VK_REMAINING_MIP_LEVELS</code>, <span class=\"eq\"><code>subresourceRange.baseMipLevel</code> &#43; <code>subresourceRange.levelCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
2812        },
2813        {
2814          "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01488",
2815          "text": " <code>subresourceRange.baseArrayLayer</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
2816        },
2817        {
2818          "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01725",
2819          "text": " If <code>subresourceRange.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>subresourceRange.baseArrayLayer</code> &#43; <code>subresourceRange.layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
2820        },
2821        {
2822          "vuid": "VUID-VkImageMemoryBarrier-image-01207",
2823          "text": " If <code>image</code> has a depth/stencil format with both depth and stencil components, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> include both <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>"
2824        },
2825        {
2826          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01208",
2827          "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code> set"
2828        },
2829        {
2830          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01209",
2831          "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set"
2832        },
2833        {
2834          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01210",
2835          "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set"
2836        },
2837        {
2838          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01211",
2839          "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> set"
2840        },
2841        {
2842          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01212",
2843          "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> set"
2844        },
2845        {
2846          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01213",
2847          "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> set"
2848        },
2849        {
2850          "vuid": "VUID-VkImageMemoryBarrier-image-01932",
2851          "text": " If <code>image</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
2852        },
2853        {
2854          "vuid": "VUID-VkImageMemoryBarrier-sType-sType",
2855          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER</code>"
2856        },
2857        {
2858          "vuid": "VUID-VkImageMemoryBarrier-pNext-pNext",
2859          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkSampleLocationsInfoEXT\">VkSampleLocationsInfoEXT</a>"
2860        },
2861        {
2862          "vuid": "VUID-VkImageMemoryBarrier-srcAccessMask-parameter",
2863          "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
2864        },
2865        {
2866          "vuid": "VUID-VkImageMemoryBarrier-dstAccessMask-parameter",
2867          "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
2868        },
2869        {
2870          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-parameter",
2871          "text": " <code>oldLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
2872        },
2873        {
2874          "vuid": "VUID-VkImageMemoryBarrier-newLayout-parameter",
2875          "text": " <code>newLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
2876        },
2877        {
2878          "vuid": "VUID-VkImageMemoryBarrier-image-parameter",
2879          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
2880        },
2881        {
2882          "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-parameter",
2883          "text": " <code>subresourceRange</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceRange</code> structure"
2884        }
2885      ],
2886      "!(VK_VERSION_1_1,VK_KHR_external_memory)": [
2887        {
2888          "vuid": "VUID-VkImageMemoryBarrier-image-01199",
2889          "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> both be <code>VK_QUEUE_FAMILY_IGNORED</code>"
2890        },
2891        {
2892          "vuid": "VUID-VkImageMemoryBarrier-image-01200",
2893          "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> either both be <code>VK_QUEUE_FAMILY_IGNORED</code>, or both be a valid queue family (see <a href=\"#devsandqueues-queueprops\">Queue Family Properties</a>)."
2894        }
2895      ],
2896      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
2897        {
2898          "vuid": "VUID-VkImageMemoryBarrier-image-01381",
2899          "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, at least one of <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code>"
2900        },
2901        {
2902          "vuid": "VUID-VkImageMemoryBarrier-image-01766",
2903          "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, and one of <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> is <code>VK_QUEUE_FAMILY_IGNORED</code>, the other <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code> or a special queue family reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>."
2904        },
2905        {
2906          "vuid": "VUID-VkImageMemoryBarrier-image-01201",
2907          "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>srcQueueFamilyIndex</code> is <code>VK_QUEUE_FAMILY_IGNORED</code>, <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> also be <code>VK_QUEUE_FAMILY_IGNORED</code>."
2908        },
2909        {
2910          "vuid": "VUID-VkImageMemoryBarrier-image-01767",
2911          "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>srcQueueFamilyIndex</code> is not <code>VK_QUEUE_FAMILY_IGNORED</code>, it <strong class=\"purple\">must</strong> be a valid queue family or a special queue family reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>."
2912        },
2913        {
2914          "vuid": "VUID-VkImageMemoryBarrier-image-01768",
2915          "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>dstQueueFamilyIndex</code> is not <code>VK_QUEUE_FAMILY_IGNORED</code>, it <strong class=\"purple\">must</strong> be a valid queue family or a special queue family reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>."
2916        }
2917      ],
2918      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
2919        {
2920          "vuid": "VUID-VkImageMemoryBarrier-image-01671",
2921          "text": " If <code>image</code> has a single-plane color format or is not <em>disjoint</em>, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>"
2922        },
2923        {
2924          "vuid": "VUID-VkImageMemoryBarrier-image-01672",
2925          "text": " If <code>image</code> has a multi-planar format and the image is <em>disjoint</em>, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> include either at least one of <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, and <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>; or <strong class=\"purple\">must</strong> include <code>VK_IMAGE_ASPECT_COLOR_BIT</code>"
2926        },
2927        {
2928          "vuid": "VUID-VkImageMemoryBarrier-image-01673",
2929          "text": " If <code>image</code> has a multi-planar format with only two planes, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>"
2930        }
2931      ],
2932      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
2933        {
2934          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01658",
2935          "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set"
2936        },
2937        {
2938          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01659",
2939          "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set"
2940        }
2941      ],
2942      "(VK_NV_shading_rate_image)": [
2943        {
2944          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-02088",
2945          "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code> set"
2946        }
2947      ]
2948    },
2949    "vkQueueWaitIdle": {
2950      "core": [
2951        {
2952          "vuid": "VUID-vkQueueWaitIdle-queue-parameter",
2953          "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
2954        }
2955      ]
2956    },
2957    "vkDeviceWaitIdle": {
2958      "core": [
2959        {
2960          "vuid": "VUID-vkDeviceWaitIdle-device-parameter",
2961          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
2962        }
2963      ]
2964    },
2965    "vkGetCalibratedTimestampsEXT": {
2966      "(VK_EXT_calibrated_timestamps)": [
2967        {
2968          "vuid": "VUID-vkGetCalibratedTimestampsEXT-device-parameter",
2969          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
2970        },
2971        {
2972          "vuid": "VUID-vkGetCalibratedTimestampsEXT-pTimestampInfos-parameter",
2973          "text": " <code>pTimestampInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>timestampCount</code> valid <code>VkCalibratedTimestampInfoEXT</code> structures"
2974        },
2975        {
2976          "vuid": "VUID-vkGetCalibratedTimestampsEXT-pTimestamps-parameter",
2977          "text": " <code>pTimestamps</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>timestampCount</code> <code>uint64_t</code> values"
2978        },
2979        {
2980          "vuid": "VUID-vkGetCalibratedTimestampsEXT-pMaxDeviation-parameter",
2981          "text": " <code>pMaxDeviation</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint64_t</code> value"
2982        },
2983        {
2984          "vuid": "VUID-vkGetCalibratedTimestampsEXT-timestampCount-arraylength",
2985          "text": " <code>timestampCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
2986        }
2987      ]
2988    },
2989    "VkCalibratedTimestampInfoEXT": {
2990      "(VK_EXT_calibrated_timestamps)": [
2991        {
2992          "vuid": "VUID-VkCalibratedTimestampInfoEXT-timeDomain-02354",
2993          "text": " <code>timeDomain</code> <strong class=\"purple\">must</strong> be one of the <a href=\"#VkTimeDomainEXT\">VkTimeDomainEXT</a> values returned by <a href=\"#vkGetPhysicalDeviceCalibrateableTimeDomainsEXT\">vkGetPhysicalDeviceCalibrateableTimeDomainsEXT</a>"
2994        },
2995        {
2996          "vuid": "VUID-VkCalibratedTimestampInfoEXT-sType-sType",
2997          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT</code>"
2998        },
2999        {
3000          "vuid": "VUID-VkCalibratedTimestampInfoEXT-pNext-pNext",
3001          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
3002        },
3003        {
3004          "vuid": "VUID-VkCalibratedTimestampInfoEXT-timeDomain-parameter",
3005          "text": " <code>timeDomain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkTimeDomainEXT\">VkTimeDomainEXT</a> value"
3006        }
3007      ]
3008    },
3009    "vkCreateRenderPass": {
3010      "core": [
3011        {
3012          "vuid": "VUID-vkCreateRenderPass-device-parameter",
3013          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
3014        },
3015        {
3016          "vuid": "VUID-vkCreateRenderPass-pCreateInfo-parameter",
3017          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkRenderPassCreateInfo</code> structure"
3018        },
3019        {
3020          "vuid": "VUID-vkCreateRenderPass-pAllocator-parameter",
3021          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
3022        },
3023        {
3024          "vuid": "VUID-vkCreateRenderPass-pRenderPass-parameter",
3025          "text": " <code>pRenderPass</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkRenderPass</code> handle"
3026        }
3027      ]
3028    },
3029    "VkRenderPassCreateInfo": {
3030      "core": [
3031        {
3032          "vuid": "VUID-VkRenderPassCreateInfo-attachment-00834",
3033          "text": " If the <code>attachment</code> member of any element of <code>pInputAttachments</code>, <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code>, or any element of <code>pPreserveAttachments</code> in any element of <code>pSubpasses</code> is not <code>VK_ATTACHMENT_UNUSED</code>, it <strong class=\"purple\">must</strong> be less than <code>attachmentCount</code>"
3034        },
3035        {
3036          "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-00836",
3037          "text": " For any member of <code>pAttachments</code> with a <code>loadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>."
3038        },
3039        {
3040          "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-02511",
3041          "text": " For any member of <code>pAttachments</code> with a <code>stencilLoadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>."
3042        },
3043        {
3044          "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-00837",
3045          "text": " For any element of <code>pDependencies</code>, if the <code>srcSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, all stage flags included in the <code>srcStageMask</code> member of that dependency <strong class=\"purple\">must</strong> be a pipeline stage supported by the <a href=\"#synchronization-pipeline-stages-types\">pipeline</a> identified by the <code>pipelineBindPoint</code> member of the source subpass"
3046        },
3047        {
3048          "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-00838",
3049          "text": " For any element of <code>pDependencies</code>, if the <code>dstSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, all stage flags included in the <code>dstStageMask</code> member of that dependency <strong class=\"purple\">must</strong> be a pipeline stage supported by the <a href=\"#synchronization-pipeline-stages-types\">pipeline</a> identified by the <code>pipelineBindPoint</code> member of the source subpass"
3050        },
3051        {
3052          "vuid": "VUID-VkRenderPassCreateInfo-srcSubpass-02517",
3053          "text": " The <code>srcSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>"
3054        },
3055        {
3056          "vuid": "VUID-VkRenderPassCreateInfo-dstSubpass-02518",
3057          "text": " The <code>dstSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>"
3058        },
3059        {
3060          "vuid": "VUID-VkRenderPassCreateInfo-sType-sType",
3061          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO</code>"
3062        },
3063        {
3064          "vuid": "VUID-VkRenderPassCreateInfo-pNext-pNext",
3065          "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkRenderPassFragmentDensityMapCreateInfoEXT\">VkRenderPassFragmentDensityMapCreateInfoEXT</a>, <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>, or <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>"
3066        },
3067        {
3068          "vuid": "VUID-VkRenderPassCreateInfo-sType-unique",
3069          "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
3070        },
3071        {
3072          "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-parameter",
3073          "text": " If <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <code>VkAttachmentDescription</code> structures"
3074        },
3075        {
3076          "vuid": "VUID-VkRenderPassCreateInfo-pSubpasses-parameter",
3077          "text": " <code>pSubpasses</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>subpassCount</code> valid <code>VkSubpassDescription</code> structures"
3078        },
3079        {
3080          "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-parameter",
3081          "text": " If <code>dependencyCount</code> is not <code>0</code>, <code>pDependencies</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dependencyCount</code> valid <code>VkSubpassDependency</code> structures"
3082        },
3083        {
3084          "vuid": "VUID-VkRenderPassCreateInfo-subpassCount-arraylength",
3085          "text": " <code>subpassCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
3086        }
3087      ],
3088      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
3089        {
3090          "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-01566",
3091          "text": " For any member of <code>pAttachments</code> with a <code>loadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>."
3092        },
3093        {
3094          "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-01567",
3095          "text": " For any member of <code>pAttachments</code> with a <code>stencilLoadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>."
3096        },
3097        {
3098          "vuid": "VUID-VkRenderPassCreateInfo-pNext-01926",
3099          "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>, the <code>subpass</code> member of each element of its <code>pAspectReferences</code> member <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>"
3100        },
3101        {
3102          "vuid": "VUID-VkRenderPassCreateInfo-pNext-01927",
3103          "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>, the <code>inputAttachmentIndex</code> member of each element of its <code>pAspectReferences</code> member <strong class=\"purple\">must</strong> be less than the value of <code>inputAttachmentCount</code> in the member of <code>pSubpasses</code> identified by its <code>subpass</code> member"
3104        },
3105        {
3106          "vuid": "VUID-VkRenderPassCreateInfo-pNext-01963",
3107          "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>, for any element of the <code>pInputAttachments</code> member of any element of <code>pSubpasses</code> where the <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, the <code>aspectMask</code> member of the corresponding element of <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>::<code>pAspectReferences</code> <strong class=\"purple\">must</strong> only include aspects that are present in images of the format specified by the element of <code>pAttachments</code> at <code>attachment</code>"
3108        }
3109      ],
3110      "(VK_VERSION_1_1,VK_KHR_multiview)": [
3111        {
3112          "vuid": "VUID-VkRenderPassCreateInfo-pNext-01928",
3113          "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, and its <code>subpassCount</code> member is not zero, that member <strong class=\"purple\">must</strong> be equal to the value of <code>subpassCount</code>"
3114        },
3115        {
3116          "vuid": "VUID-VkRenderPassCreateInfo-pNext-01929",
3117          "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, if its <code>dependencyCount</code> member is not zero, it <strong class=\"purple\">must</strong> be equal to <code>dependencyCount</code>"
3118        },
3119        {
3120          "vuid": "VUID-VkRenderPassCreateInfo-pNext-01930",
3121          "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, for each non-zero element of <code>pViewOffsets</code>, the <code>srcSubpass</code> and <code>dstSubpass</code> members of <code>pDependencies</code> at the same index <strong class=\"purple\">must</strong> not be equal"
3122        },
3123        {
3124          "vuid": "VUID-VkRenderPassCreateInfo-pNext-02512",
3125          "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, for any element of <code>pDependencies</code> with a <code>dependencyFlags</code> member that doesn&#8217;t include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, the corresponding element of the <code>pViewOffsets</code> member of that <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> instance <strong class=\"purple\">must</strong> be <code>0</code>"
3126        },
3127        {
3128          "vuid": "VUID-VkRenderPassCreateInfo-pNext-02513",
3129          "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, elements of its <code>pViewMasks</code> member <strong class=\"purple\">must</strong> either all be <code>0</code>, or all not be <code>0</code>"
3130        },
3131        {
3132          "vuid": "VUID-VkRenderPassCreateInfo-pNext-02514",
3133          "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, and each element of its <code>pViewMasks</code> member is <code>0</code>, the <code>dependencyFlags</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>"
3134        },
3135        {
3136          "vuid": "VUID-VkRenderPassCreateInfo-pNext-02515",
3137          "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, and each element of its <code>pViewMasks</code> member is <code>0</code>, <code>correlatedViewMaskCount</code> <strong class=\"purple\">must</strong> be <code>0</code>"
3138        },
3139        {
3140          "vuid": "VUID-VkRenderPassCreateInfo-pNext-02516",
3141          "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, each element of its <code>pViewMask</code> member <strong class=\"purple\">must</strong> not include a bit at a position greater than the value of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxFramebufferLayers</code>"
3142        }
3143      ]
3144    },
3145    "VkRenderPassMultiviewCreateInfo": {
3146      "(VK_VERSION_1_1,VK_KHR_multiview)": [
3147        {
3148          "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pCorrelationMasks-00841",
3149          "text": " Each view index <strong class=\"purple\">must</strong> not be set in more than one element of <code>pCorrelationMasks</code>"
3150        },
3151        {
3152          "vuid": "VUID-VkRenderPassMultiviewCreateInfo-sType-sType",
3153          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO</code>"
3154        },
3155        {
3156          "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pViewMasks-parameter",
3157          "text": " If <code>subpassCount</code> is not <code>0</code>, <code>pViewMasks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>subpassCount</code> <code>uint32_t</code> values"
3158        },
3159        {
3160          "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pViewOffsets-parameter",
3161          "text": " If <code>dependencyCount</code> is not <code>0</code>, <code>pViewOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dependencyCount</code> <code>int32_t</code> values"
3162        },
3163        {
3164          "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pCorrelationMasks-parameter",
3165          "text": " If <code>correlationMaskCount</code> is not <code>0</code>, <code>pCorrelationMasks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>correlationMaskCount</code> <code>uint32_t</code> values"
3166        }
3167      ]
3168    },
3169    "VkRenderPassFragmentDensityMapCreateInfoEXT": {
3170      "(VK_EXT_fragment_density_map)": [
3171        {
3172          "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02547",
3173          "text": " If <code>fragmentDensityMapAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> be less than <code>VkRenderPassCreateInfo</code>::<code>attachmentCount</code>"
3174        },
3175        {
3176          "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02548",
3177          "text": " If <code>fragmentDensityMapAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> not be an element of <code>VkSubpassDescription</code>::<code>pInputAttachments</code>, <code>VkSubpassDescription</code>::<code>pColorAttachments</code>, <code>VkSubpassDescription</code>::<code>pResolveAttachments</code>, <code>VkSubpassDescription</code>::<code>pDepthStencilAttachment</code>, or <code>VkSubpassDescription</code>::<code>pPreserveAttachments</code> for any subpass"
3178        },
3179        {
3180          "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02549",
3181          "text": " If <code>fragmentDensityMapAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>layout</code> <strong class=\"purple\">must</strong> be equal to <code>VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT</code>, or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
3182        },
3183        {
3184          "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02550",
3185          "text": " If <code>fragmentDensityMapAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> reference an attachment with a <code>loadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_LOAD</code> or <code>VK_ATTACHMENT_LOAD_OP_DONT_CARE</code>."
3186        },
3187        {
3188          "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02551",
3189          "text": " If <code>fragmentDensityMapAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> reference an attachment with a <code>storeOp</code> equal to <code>VK_ATTACHMENT_STORE_OP_DONT_CARE</code>."
3190        },
3191        {
3192          "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-sType-sType",
3193          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT</code>"
3194        },
3195        {
3196          "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-parameter",
3197          "text": " <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> be a valid <code>VkAttachmentReference</code> structure"
3198        }
3199      ]
3200    },
3201    "VkAttachmentDescription": {
3202      "core": [
3203        {
3204          "vuid": "VUID-VkAttachmentDescription-finalLayout-00843",
3205          "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>"
3206        },
3207        {
3208          "vuid": "VUID-VkAttachmentDescription-flags-parameter",
3209          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAttachmentDescriptionFlagBits\">VkAttachmentDescriptionFlagBits</a> values"
3210        },
3211        {
3212          "vuid": "VUID-VkAttachmentDescription-format-parameter",
3213          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
3214        },
3215        {
3216          "vuid": "VUID-VkAttachmentDescription-samples-parameter",
3217          "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
3218        },
3219        {
3220          "vuid": "VUID-VkAttachmentDescription-loadOp-parameter",
3221          "text": " <code>loadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value"
3222        },
3223        {
3224          "vuid": "VUID-VkAttachmentDescription-storeOp-parameter",
3225          "text": " <code>storeOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value"
3226        },
3227        {
3228          "vuid": "VUID-VkAttachmentDescription-stencilLoadOp-parameter",
3229          "text": " <code>stencilLoadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value"
3230        },
3231        {
3232          "vuid": "VUID-VkAttachmentDescription-stencilStoreOp-parameter",
3233          "text": " <code>stencilStoreOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value"
3234        },
3235        {
3236          "vuid": "VUID-VkAttachmentDescription-initialLayout-parameter",
3237          "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
3238        },
3239        {
3240          "vuid": "VUID-VkAttachmentDescription-finalLayout-parameter",
3241          "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
3242        }
3243      ]
3244    },
3245    "VkRenderPassInputAttachmentAspectCreateInfo": {
3246      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
3247        {
3248          "vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-sType-sType",
3249          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO</code>"
3250        },
3251        {
3252          "vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-pAspectReferences-parameter",
3253          "text": " <code>pAspectReferences</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>aspectReferenceCount</code> valid <code>VkInputAttachmentAspectReference</code> structures"
3254        },
3255        {
3256          "vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-aspectReferenceCount-arraylength",
3257          "text": " <code>aspectReferenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
3258        }
3259      ]
3260    },
3261    "VkInputAttachmentAspectReference": {
3262      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
3263        {
3264          "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-01964",
3265          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_METADATA_BIT</code>"
3266        },
3267        {
3268          "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-parameter",
3269          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
3270        },
3271        {
3272          "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-requiredbitmask",
3273          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
3274        }
3275      ],
3276      "(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_EXT_image_drm_format_modifier)": [
3277        {
3278          "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-02250",
3279          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_MEMORY_PLANE</code><em>_i</em>_BIT_EXT for any index <em>i</em>."
3280        }
3281      ]
3282    },
3283    "VkSubpassDescription": {
3284      "core": [
3285        {
3286          "vuid": "VUID-VkSubpassDescription-pipelineBindPoint-00844",
3287          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
3288        },
3289        {
3290          "vuid": "VUID-VkSubpassDescription-colorAttachmentCount-00845",
3291          "text": " <code>colorAttachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxColorAttachments</code>"
3292        },
3293        {
3294          "vuid": "VUID-VkSubpassDescription-loadOp-00846",
3295          "text": " If the first use of an attachment in this render pass is as an input attachment, and the attachment is not also used as a color or depth/stencil attachment in the same subpass, then <code>loadOp</code> <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>"
3296        },
3297        {
3298          "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00847",
3299          "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, for each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code>, the corresponding color attachment <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_UNUSED</code>"
3300        },
3301        {
3302          "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00848",
3303          "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, for each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code>, the corresponding color attachment <strong class=\"purple\">must</strong> not have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>"
3304        },
3305        {
3306          "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00849",
3307          "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>"
3308        },
3309        {
3310          "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00850",
3311          "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have the same <a href=\"#VkFormat\">VkFormat</a> as its corresponding color attachment"
3312        },
3313        {
3314          "vuid": "VUID-VkSubpassDescription-pColorAttachments-01417",
3315          "text": " All attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have the same sample count"
3316        },
3317        {
3318          "vuid": "VUID-VkSubpassDescription-pInputAttachments-02647",
3319          "text": " All attachments in <code>pInputAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have formats whose features contain at least one of <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code> or <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>."
3320        },
3321        {
3322          "vuid": "VUID-VkSubpassDescription-pColorAttachments-02648",
3323          "text": " All attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have formats whose features contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>"
3324        },
3325        {
3326          "vuid": "VUID-VkSubpassDescription-pResolveAttachments-02649",
3327          "text": " All attachments in <code>pResolveAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have formats whose features contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>"
3328        },
3329        {
3330          "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-02650",
3331          "text": " If <code>pDepthStencilAttachment</code> is not <code>NULL</code> and the attachment is not <code>VK_ATTACHMENT_UNUSED</code> then it <strong class=\"purple\">must</strong> have a format whose features contain <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
3332        },
3333        {
3334          "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-01418",
3335          "text": " If neither the <code>VK_AMD_mixed_attachment_samples</code> nor the <code>VK_NV_framebuffer_mixed_samples</code> extensions are enabled, and if <code>pDepthStencilAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code> and any attachments in <code>pColorAttachments</code> are not <code>VK_ATTACHMENT_UNUSED</code>, they <strong class=\"purple\">must</strong> have the same sample count"
3336        },
3337        {
3338          "vuid": "VUID-VkSubpassDescription-attachment-00853",
3339          "text": " The <code>attachment</code> member of each element of <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_UNUSED</code>"
3340        },
3341        {
3342          "vuid": "VUID-VkSubpassDescription-pPreserveAttachments-00854",
3343          "text": " Each element of <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> not also be an element of any other member of the subpass description"
3344        },
3345        {
3346          "vuid": "VUID-VkSubpassDescription-layout-02519",
3347          "text": " If any attachment is used by more than one <a href=\"#VkAttachmentReference\">VkAttachmentReference</a> member, then each use <strong class=\"purple\">must</strong> use the same <code>layout</code>"
3348        },
3349        {
3350          "vuid": "VUID-VkSubpassDescription-flags-parameter",
3351          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSubpassDescriptionFlagBits\">VkSubpassDescriptionFlagBits</a> values"
3352        },
3353        {
3354          "vuid": "VUID-VkSubpassDescription-pipelineBindPoint-parameter",
3355          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
3356        },
3357        {
3358          "vuid": "VUID-VkSubpassDescription-pInputAttachments-parameter",
3359          "text": " If <code>inputAttachmentCount</code> is not <code>0</code>, <code>pInputAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>inputAttachmentCount</code> valid <code>VkAttachmentReference</code> structures"
3360        },
3361        {
3362          "vuid": "VUID-VkSubpassDescription-pColorAttachments-parameter",
3363          "text": " If <code>colorAttachmentCount</code> is not <code>0</code>, <code>pColorAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <code>VkAttachmentReference</code> structures"
3364        },
3365        {
3366          "vuid": "VUID-VkSubpassDescription-pResolveAttachments-parameter",
3367          "text": " If <code>colorAttachmentCount</code> is not <code>0</code>, and <code>pResolveAttachments</code> is not <code>NULL</code>, <code>pResolveAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <code>VkAttachmentReference</code> structures"
3368        },
3369        {
3370          "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-parameter",
3371          "text": " If <code>pDepthStencilAttachment</code> is not <code>NULL</code>, <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAttachmentReference</code> structure"
3372        },
3373        {
3374          "vuid": "VUID-VkSubpassDescription-pPreserveAttachments-parameter",
3375          "text": " If <code>preserveAttachmentCount</code> is not <code>0</code>, <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>preserveAttachmentCount</code> <code>uint32_t</code> values"
3376        }
3377      ],
3378      "(VK_AMD_mixed_attachment_samples)": [
3379        {
3380          "vuid": "VUID-VkSubpassDescription-pColorAttachments-01506",
3381          "text": " If the <code>VK_AMD_mixed_attachment_samples</code> extension is enabled, and all attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have a sample count that is smaller than or equal to the sample count of <code>pDepthStencilAttachment</code> if it is not <code>VK_ATTACHMENT_UNUSED</code>"
3382        }
3383      ],
3384      "(VK_NVX_multiview_per_view_attributes)": [
3385        {
3386          "vuid": "VUID-VkSubpassDescription-flags-00856",
3387          "text": " If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX</code>, it <strong class=\"purple\">must</strong> also include <code>VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX</code>."
3388        }
3389      ]
3390    },
3391    "VkAttachmentReference": {
3392      "core": [
3393        {
3394          "vuid": "VUID-VkAttachmentReference-layout-00857",
3395          "text": " If <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>"
3396        },
3397        {
3398          "vuid": "VUID-VkAttachmentReference-layout-parameter",
3399          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
3400        }
3401      ]
3402    },
3403    "VkSubpassDependency": {
3404      "core": [
3405        {
3406          "vuid": "VUID-VkSubpassDependency-srcSubpass-00858",
3407          "text": " If <code>srcSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>"
3408        },
3409        {
3410          "vuid": "VUID-VkSubpassDependency-dstSubpass-00859",
3411          "text": " If <code>dstSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>"
3412        },
3413        {
3414          "vuid": "VUID-VkSubpassDependency-srcStageMask-00860",
3415          "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
3416        },
3417        {
3418          "vuid": "VUID-VkSubpassDependency-dstStageMask-00861",
3419          "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
3420        },
3421        {
3422          "vuid": "VUID-VkSubpassDependency-srcStageMask-00862",
3423          "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
3424        },
3425        {
3426          "vuid": "VUID-VkSubpassDependency-dstStageMask-00863",
3427          "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
3428        },
3429        {
3430          "vuid": "VUID-VkSubpassDependency-srcSubpass-00864",
3431          "text": " <code>srcSubpass</code> <strong class=\"purple\">must</strong> be less than or equal to <code>dstSubpass</code>, unless one of them is <code>VK_SUBPASS_EXTERNAL</code>, to avoid cyclic dependencies and ensure a valid execution order"
3432        },
3433        {
3434          "vuid": "VUID-VkSubpassDependency-srcSubpass-00865",
3435          "text": " <code>srcSubpass</code> and <code>dstSubpass</code> <strong class=\"purple\">must</strong> not both be equal to <code>VK_SUBPASS_EXTERNAL</code>"
3436        },
3437        {
3438          "vuid": "VUID-VkSubpassDependency-srcSubpass-01989",
3439          "text": " If <code>srcSubpass</code> is equal to <code>dstSubpass</code>, <code>srcStageMask</code> and <code>dstStageMask</code> <strong class=\"purple\">must</strong> not set any bits that are neither <code>VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT</code>, nor one of the <a href=\"#synchronization-pipeline-stages-types\">graphics pipeline stages</a>"
3440        },
3441        {
3442          "vuid": "VUID-VkSubpassDependency-srcSubpass-00867",
3443          "text": " If <code>srcSubpass</code> is equal to <code>dstSubpass</code> and not all of the stages in <code>srcStageMask</code> and <code>dstStageMask</code> are <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stages</a>, the <a href=\"#synchronization-pipeline-stages-order\">logically latest</a> pipeline stage in <code>srcStageMask</code> <strong class=\"purple\">must</strong> be <a href=\"#synchronization-pipeline-stages-order\">logically earlier</a> than or equal to the <a href=\"#synchronization-pipeline-stages-order\">logically earliest</a> pipeline stage in <code>dstStageMask</code>"
3444        },
3445        {
3446          "vuid": "VUID-VkSubpassDependency-srcAccessMask-00868",
3447          "text": " Any access flag included in <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be supported by one of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>"
3448        },
3449        {
3450          "vuid": "VUID-VkSubpassDependency-dstAccessMask-00869",
3451          "text": " Any access flag included in <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be supported by one of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>"
3452        },
3453        {
3454          "vuid": "VUID-VkSubpassDependency-srcSubpass-02243",
3455          "text": " If <code>srcSubpass</code> equals <code>dstSubpass</code>, and <code>srcStageMask</code> and <code>dstStageMask</code> both include a <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stage</a>, then <code>dependencyFlags</code> <strong class=\"purple\">must</strong> include <code>VK_DEPENDENCY_BY_REGION_BIT</code>"
3456        },
3457        {
3458          "vuid": "VUID-VkSubpassDependency-srcStageMask-parameter",
3459          "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
3460        },
3461        {
3462          "vuid": "VUID-VkSubpassDependency-srcStageMask-requiredbitmask",
3463          "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
3464        },
3465        {
3466          "vuid": "VUID-VkSubpassDependency-dstStageMask-parameter",
3467          "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
3468        },
3469        {
3470          "vuid": "VUID-VkSubpassDependency-dstStageMask-requiredbitmask",
3471          "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
3472        },
3473        {
3474          "vuid": "VUID-VkSubpassDependency-srcAccessMask-parameter",
3475          "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
3476        },
3477        {
3478          "vuid": "VUID-VkSubpassDependency-dstAccessMask-parameter",
3479          "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
3480        },
3481        {
3482          "vuid": "VUID-VkSubpassDependency-dependencyFlags-parameter",
3483          "text": " <code>dependencyFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDependencyFlagBits\">VkDependencyFlagBits</a> values"
3484        }
3485      ],
3486      "(VK_VERSION_1_1,VK_KHR_multiview)": [
3487        {
3488          "vuid": "VUID-VkSubpassDependency-dependencyFlags-02520",
3489          "text": " If <code>dependencyFlags</code> includes <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, <code>srcSubpass</code> <strong class=\"purple\">must</strong> not be equal to <code>VK_SUBPASS_EXTERNAL</code>"
3490        },
3491        {
3492          "vuid": "VUID-VkSubpassDependency-dependencyFlags-02521",
3493          "text": " If <code>dependencyFlags</code> includes <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, <code>dstSubpass</code> <strong class=\"purple\">must</strong> not be equal to <code>VK_SUBPASS_EXTERNAL</code>"
3494        },
3495        {
3496          "vuid": "VUID-VkSubpassDependency-srcSubpass-00872",
3497          "text": " If <code>srcSubpass</code> equals <code>dstSubpass</code> and that subpass has more than one bit set in the view mask, then <code>dependencyFlags</code> <strong class=\"purple\">must</strong> include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>"
3498        }
3499      ],
3500      "(VK_NV_mesh_shader)": [
3501        {
3502          "vuid": "VUID-VkSubpassDependency-srcStageMask-02099",
3503          "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
3504        },
3505        {
3506          "vuid": "VUID-VkSubpassDependency-srcStageMask-02100",
3507          "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
3508        },
3509        {
3510          "vuid": "VUID-VkSubpassDependency-dstStageMask-02101",
3511          "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
3512        },
3513        {
3514          "vuid": "VUID-VkSubpassDependency-dstStageMask-02102",
3515          "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
3516        }
3517      ]
3518    },
3519    "vkCreateRenderPass2KHR": {
3520      "(VK_KHR_create_renderpass2)": [
3521        {
3522          "vuid": "VUID-vkCreateRenderPass2KHR-device-parameter",
3523          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
3524        },
3525        {
3526          "vuid": "VUID-vkCreateRenderPass2KHR-pCreateInfo-parameter",
3527          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkRenderPassCreateInfo2KHR</code> structure"
3528        },
3529        {
3530          "vuid": "VUID-vkCreateRenderPass2KHR-pAllocator-parameter",
3531          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
3532        },
3533        {
3534          "vuid": "VUID-vkCreateRenderPass2KHR-pRenderPass-parameter",
3535          "text": " <code>pRenderPass</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkRenderPass</code> handle"
3536        }
3537      ]
3538    },
3539    "VkRenderPassCreateInfo2KHR": {
3540      "(VK_KHR_create_renderpass2)": [
3541        {
3542          "vuid": "VUID-VkRenderPassCreateInfo2KHR-None-03049",
3543          "text": " If any two subpasses operate on attachments with overlapping ranges of the same <code>VkDeviceMemory</code> object, and at least one subpass writes to that area of <code>VkDeviceMemory</code>, a subpass dependency <strong class=\"purple\">must</strong> be included (either directly or via some intermediate subpasses) between them"
3544        },
3545        {
3546          "vuid": "VUID-VkRenderPassCreateInfo2KHR-attachment-03050",
3547          "text": " If the <code>attachment</code> member of any element of <code>pInputAttachments</code>, <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code>, or the attachment indexed by any element of <code>pPreserveAttachments</code> in any given element of <code>pSubpasses</code> is bound to a range of a <code>VkDeviceMemory</code> object that overlaps with any other attachment in any subpass (including the same subpass), the <code>VkAttachmentDescription2KHR</code> structures describing them <strong class=\"purple\">must</strong> include <code>VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT</code> in <code>flags</code>"
3548        },
3549        {
3550          "vuid": "VUID-VkRenderPassCreateInfo2KHR-attachment-03051",
3551          "text": " If the <code>attachment</code> member of any element of <code>pInputAttachments</code>, <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code>, or any element of <code>pPreserveAttachments</code> in any given element of <code>pSubpasses</code> is not <code>VK_ATTACHMENT_UNUSED</code>, it <strong class=\"purple\">must</strong> be less than <code>attachmentCount</code>"
3552        },
3553        {
3554          "vuid": "VUID-VkRenderPassCreateInfo2KHR-pAttachments-02522",
3555          "text": " For any member of <code>pAttachments</code> with a <code>loadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>"
3556        },
3557        {
3558          "vuid": "VUID-VkRenderPassCreateInfo2KHR-pAttachments-02523",
3559          "text": " For any member of <code>pAttachments</code> with a <code>stencilLoadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>."
3560        },
3561        {
3562          "vuid": "VUID-VkRenderPassCreateInfo2KHR-pDependencies-03054",
3563          "text": " For any element of <code>pDependencies</code>, if the <code>srcSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, all stage flags included in the <code>srcStageMask</code> member of that dependency <strong class=\"purple\">must</strong> be a pipeline stage supported by the <a href=\"#synchronization-pipeline-stages-types\">pipeline</a> identified by the <code>pipelineBindPoint</code> member of the source subpass."
3564        },
3565        {
3566          "vuid": "VUID-VkRenderPassCreateInfo2KHR-pDependencies-03055",
3567          "text": " For any element of <code>pDependencies</code>, if the <code>dstSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, all stage flags included in the <code>dstStageMask</code> member of that dependency <strong class=\"purple\">must</strong> be a pipeline stage supported by the <a href=\"#synchronization-pipeline-stages-types\">pipeline</a> identified by the <code>pipelineBindPoint</code> member of the source subpass."
3568        },
3569        {
3570          "vuid": "VUID-VkRenderPassCreateInfo2KHR-pCorrelatedViewMasks-03056",
3571          "text": " The set of bits included in any element of <code>pCorrelatedViewMasks</code> <strong class=\"purple\">must</strong> not overlap with the set of bits included in any other element of <code>pCorrelatedViewMasks</code>"
3572        },
3573        {
3574          "vuid": "VUID-VkRenderPassCreateInfo2KHR-viewMask-03057",
3575          "text": " If the <a href=\"#VkSubpassDescription2KHR\">VkSubpassDescription2KHR</a>::<code>viewMask</code> member of all elements of <code>pSubpasses</code> is <code>0</code>, <code>correlatedViewMaskCount</code> <strong class=\"purple\">must</strong> be <code>0</code>"
3576        },
3577        {
3578          "vuid": "VUID-VkRenderPassCreateInfo2KHR-viewMask-03058",
3579          "text": " The <a href=\"#VkSubpassDescription2KHR\">VkSubpassDescription2KHR</a>::<code>viewMask</code> member of all elements of <code>pSubpasses</code> <strong class=\"purple\">must</strong> either all be <code>0</code>, or all not be <code>0</code>"
3580        },
3581        {
3582          "vuid": "VUID-VkRenderPassCreateInfo2KHR-viewMask-03059",
3583          "text": " If the <a href=\"#VkSubpassDescription2KHR\">VkSubpassDescription2KHR</a>::<code>viewMask</code> member of all elements of <code>pSubpasses</code> is <code>0</code>, the <code>dependencyFlags</code> member of any element of <code>pDependencies</code> <strong class=\"purple\">must</strong> not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>"
3584        },
3585        {
3586          "vuid": "VUID-VkRenderPassCreateInfo2KHR-pDependencies-03060",
3587          "text": " For any element of <code>pDependencies</code> where its <code>srcSubpass</code> member equals its <code>dstSubpass</code> member, if the <code>viewMask</code> member of the corresponding element of <code>pSubpasses</code> includes more than one bit, its <code>dependencyFlags</code> member <strong class=\"purple\">must</strong> include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>"
3588        },
3589        {
3590          "vuid": "VUID-VkRenderPassCreateInfo2KHR-viewMask-02524",
3591          "text": " The <code>viewMask</code> member <strong class=\"purple\">must</strong> not include a bit at a position greater than the value of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxFramebufferLayers</code>"
3592        },
3593        {
3594          "vuid": "VUID-VkRenderPassCreateInfo2KHR-attachment-02525",
3595          "text": " If the <code>attachment</code> member of any element of the <code>pInputAttachments</code> member of any element of <code>pSubpasses</code> is not <code>VK_ATTACHMENT_UNUSED</code>, the <code>aspectMask</code> member of that element of <code>pInputAttachments</code> <strong class=\"purple\">must</strong> only include aspects that are present in images of the format specified by the element of <code>pAttachments</code> specified by <code>attachment</code>"
3596        },
3597        {
3598          "vuid": "VUID-VkRenderPassCreateInfo2KHR-srcSubpass-02526",
3599          "text": " The <code>srcSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>"
3600        },
3601        {
3602          "vuid": "VUID-VkRenderPassCreateInfo2KHR-dstSubpass-02527",
3603          "text": " The <code>dstSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>"
3604        },
3605        {
3606          "vuid": "VUID-VkRenderPassCreateInfo2KHR-sType-sType",
3607          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR</code>"
3608        },
3609        {
3610          "vuid": "VUID-VkRenderPassCreateInfo2KHR-pNext-pNext",
3611          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
3612        },
3613        {
3614          "vuid": "VUID-VkRenderPassCreateInfo2KHR-pAttachments-parameter",
3615          "text": " If <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <code>VkAttachmentDescription2KHR</code> structures"
3616        },
3617        {
3618          "vuid": "VUID-VkRenderPassCreateInfo2KHR-pSubpasses-parameter",
3619          "text": " <code>pSubpasses</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>subpassCount</code> valid <code>VkSubpassDescription2KHR</code> structures"
3620        },
3621        {
3622          "vuid": "VUID-VkRenderPassCreateInfo2KHR-pDependencies-parameter",
3623          "text": " If <code>dependencyCount</code> is not <code>0</code>, <code>pDependencies</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dependencyCount</code> valid <code>VkSubpassDependency2KHR</code> structures"
3624        },
3625        {
3626          "vuid": "VUID-VkRenderPassCreateInfo2KHR-pCorrelatedViewMasks-parameter",
3627          "text": " If <code>correlatedViewMaskCount</code> is not <code>0</code>, <code>pCorrelatedViewMasks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>correlatedViewMaskCount</code> <code>uint32_t</code> values"
3628        },
3629        {
3630          "vuid": "VUID-VkRenderPassCreateInfo2KHR-subpassCount-arraylength",
3631          "text": " <code>subpassCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
3632        }
3633      ]
3634    },
3635    "VkAttachmentDescription2KHR": {
3636      "(VK_KHR_create_renderpass2)": [
3637        {
3638          "vuid": "VUID-VkAttachmentDescription2KHR-finalLayout-03061",
3639          "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>"
3640        },
3641        {
3642          "vuid": "VUID-VkAttachmentDescription2KHR-sType-sType",
3643          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR</code>"
3644        },
3645        {
3646          "vuid": "VUID-VkAttachmentDescription2KHR-flags-parameter",
3647          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAttachmentDescriptionFlagBits\">VkAttachmentDescriptionFlagBits</a> values"
3648        },
3649        {
3650          "vuid": "VUID-VkAttachmentDescription2KHR-format-parameter",
3651          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
3652        },
3653        {
3654          "vuid": "VUID-VkAttachmentDescription2KHR-samples-parameter",
3655          "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
3656        },
3657        {
3658          "vuid": "VUID-VkAttachmentDescription2KHR-loadOp-parameter",
3659          "text": " <code>loadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value"
3660        },
3661        {
3662          "vuid": "VUID-VkAttachmentDescription2KHR-storeOp-parameter",
3663          "text": " <code>storeOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value"
3664        },
3665        {
3666          "vuid": "VUID-VkAttachmentDescription2KHR-stencilLoadOp-parameter",
3667          "text": " <code>stencilLoadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value"
3668        },
3669        {
3670          "vuid": "VUID-VkAttachmentDescription2KHR-stencilStoreOp-parameter",
3671          "text": " <code>stencilStoreOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value"
3672        },
3673        {
3674          "vuid": "VUID-VkAttachmentDescription2KHR-initialLayout-parameter",
3675          "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
3676        },
3677        {
3678          "vuid": "VUID-VkAttachmentDescription2KHR-finalLayout-parameter",
3679          "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
3680        }
3681      ]
3682    },
3683    "VkSubpassDescription2KHR": {
3684      "(VK_KHR_create_renderpass2)": [
3685        {
3686          "vuid": "VUID-VkSubpassDescription2KHR-pipelineBindPoint-03062",
3687          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
3688        },
3689        {
3690          "vuid": "VUID-VkSubpassDescription2KHR-colorAttachmentCount-03063",
3691          "text": " <code>colorAttachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxColorAttachments</code>"
3692        },
3693        {
3694          "vuid": "VUID-VkSubpassDescription2KHR-loadOp-03064",
3695          "text": " If the first use of an attachment in this render pass is as an input attachment, and the attachment is not also used as a color or depth/stencil attachment in the same subpass, then <code>loadOp</code> <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>"
3696        },
3697        {
3698          "vuid": "VUID-VkSubpassDescription2KHR-pResolveAttachments-03065",
3699          "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, for each resolve attachment that does not have the value <code>VK_ATTACHMENT_UNUSED</code>, the corresponding color attachment <strong class=\"purple\">must</strong> not have the value <code>VK_ATTACHMENT_UNUSED</code>"
3700        },
3701        {
3702          "vuid": "VUID-VkSubpassDescription2KHR-pResolveAttachments-03066",
3703          "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, for each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code>, the corresponding color attachment <strong class=\"purple\">must</strong> not have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>"
3704        },
3705        {
3706          "vuid": "VUID-VkSubpassDescription2KHR-pResolveAttachments-03067",
3707          "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>"
3708        },
3709        {
3710          "vuid": "VUID-VkSubpassDescription2KHR-pResolveAttachments-03068",
3711          "text": " Any given element of <code>pResolveAttachments</code> <strong class=\"purple\">must</strong> have the same <a href=\"#VkFormat\">VkFormat</a> as its corresponding color attachment"
3712        },
3713        {
3714          "vuid": "VUID-VkSubpassDescription2KHR-pColorAttachments-03069",
3715          "text": " All attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have the same sample count"
3716        },
3717        {
3718          "vuid": "VUID-VkSubpassDescription2KHR-pDepthStencilAttachment-03071",
3719          "text": " If neither the <code>VK_AMD_mixed_attachment_samples</code> nor the <code>VK_NV_framebuffer_mixed_samples</code> extensions are enabled, and if <code>pDepthStencilAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code> and any attachments in <code>pColorAttachments</code> are not <code>VK_ATTACHMENT_UNUSED</code>, they <strong class=\"purple\">must</strong> have the same sample count"
3720        },
3721        {
3722          "vuid": "VUID-VkSubpassDescription2KHR-attachment-03073",
3723          "text": " The <code>attachment</code> member of any element of <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_UNUSED</code>"
3724        },
3725        {
3726          "vuid": "VUID-VkSubpassDescription2KHR-pPreserveAttachments-03074",
3727          "text": " Any given element of <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> not also be an element of any other member of the subpass description"
3728        },
3729        {
3730          "vuid": "VUID-VkSubpassDescription2KHR-layout-02528",
3731          "text": " If any attachment is used by more than one <a href=\"#VkAttachmentReference\">VkAttachmentReference</a> member, then each use <strong class=\"purple\">must</strong> use the same <code>layout</code>"
3732        },
3733        {
3734          "vuid": "VUID-VkSubpassDescription2KHR-aspectMask-03175",
3735          "text": " The <code>aspectMask</code> member of any element of <code>pInputAttachments</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a>"
3736        },
3737        {
3738          "vuid": "VUID-VkSubpassDescription2KHR-aspectMask-03176",
3739          "text": " The <code>aspectMask</code> member of any element of <code>pInputAttachments</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
3740        },
3741        {
3742          "vuid": "VUID-VkSubpassDescription2KHR-aspectMask-02529",
3743          "text": " The <code>aspectMask</code> member of each element of <code>pInputAttachments</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_METADATA_BIT</code>"
3744        },
3745        {
3746          "vuid": "VUID-VkSubpassDescription2KHR-sType-sType",
3747          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR</code>"
3748        },
3749        {
3750          "vuid": "VUID-VkSubpassDescription2KHR-flags-parameter",
3751          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSubpassDescriptionFlagBits\">VkSubpassDescriptionFlagBits</a> values"
3752        },
3753        {
3754          "vuid": "VUID-VkSubpassDescription2KHR-pipelineBindPoint-parameter",
3755          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
3756        },
3757        {
3758          "vuid": "VUID-VkSubpassDescription2KHR-pInputAttachments-parameter",
3759          "text": " If <code>inputAttachmentCount</code> is not <code>0</code>, <code>pInputAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>inputAttachmentCount</code> valid <code>VkAttachmentReference2KHR</code> structures"
3760        },
3761        {
3762          "vuid": "VUID-VkSubpassDescription2KHR-pColorAttachments-parameter",
3763          "text": " If <code>colorAttachmentCount</code> is not <code>0</code>, <code>pColorAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <code>VkAttachmentReference2KHR</code> structures"
3764        },
3765        {
3766          "vuid": "VUID-VkSubpassDescription2KHR-pResolveAttachments-parameter",
3767          "text": " If <code>colorAttachmentCount</code> is not <code>0</code>, and <code>pResolveAttachments</code> is not <code>NULL</code>, <code>pResolveAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <code>VkAttachmentReference2KHR</code> structures"
3768        },
3769        {
3770          "vuid": "VUID-VkSubpassDescription2KHR-pDepthStencilAttachment-parameter",
3771          "text": " If <code>pDepthStencilAttachment</code> is not <code>NULL</code>, <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAttachmentReference2KHR</code> structure"
3772        },
3773        {
3774          "vuid": "VUID-VkSubpassDescription2KHR-pPreserveAttachments-parameter",
3775          "text": " If <code>preserveAttachmentCount</code> is not <code>0</code>, <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>preserveAttachmentCount</code> <code>uint32_t</code> values"
3776        }
3777      ],
3778      "(VK_KHR_create_renderpass2)+(VK_AMD_mixed_attachment_samples)": [
3779        {
3780          "vuid": "VUID-VkSubpassDescription2KHR-pColorAttachments-03070",
3781          "text": " If the <code>VK_AMD_mixed_attachment_samples</code> extension is enabled, all attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have a sample count that is smaller than or equal to the sample count of <code>pDepthStencilAttachment</code> if it is not <code>VK_ATTACHMENT_UNUSED</code>"
3782        }
3783      ],
3784      "(VK_KHR_create_renderpass2)+(VK_NVX_multiview_per_view_attributes)": [
3785        {
3786          "vuid": "VUID-VkSubpassDescription2KHR-flags-03076",
3787          "text": " If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX</code>, it <strong class=\"purple\">must</strong> also include <code>VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX</code>."
3788        }
3789      ]
3790    },
3791    "VkSubpassDescriptionDepthStencilResolveKHR": {
3792      "(VK_KHR_create_renderpass2)+(VK_KHR_depth_stencil_resolve)": [
3793        {
3794          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03177",
3795          "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code>, <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> not have the value <code>VK_ATTACHMENT_UNUSED</code>"
3796        },
3797        {
3798          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03178",
3799          "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code>, <code>depthResolveMode</code> and <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> not both be <code>VK_RESOLVE_MODE_NONE_KHR</code>"
3800        },
3801        {
3802          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03179",
3803          "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code>, <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> not have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>"
3804        },
3805        {
3806          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03180",
3807          "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code>, <code>pDepthStencilResolveAttachment</code> <strong class=\"purple\">must</strong> have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>"
3808        },
3809        {
3810          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-02651",
3811          "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code> then it <strong class=\"purple\">must</strong> have a format whose features contain <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
3812        },
3813        {
3814          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03181",
3815          "text": " If the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilResolveAttachment</code> has a depth component, then the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> have a depth component with the same number of bits and numerical type"
3816        },
3817        {
3818          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03182",
3819          "text": " If the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilResolveAttachment</code> has a stencil component, then the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> have a stencil component with the same number of bits and numerical type"
3820        },
3821        {
3822          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-depthResolveMode-03183",
3823          "text": " The value of <code>depthResolveMode</code> <strong class=\"purple\">must</strong> be one of the bits set in <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>::<code>supportedDepthResolveModes</code> or <code>VK_RESOLVE_MODE_NONE_KHR</code>"
3824        },
3825        {
3826          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-stencilResolveMode-03184",
3827          "text": " The value of <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be one of the bits set in <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>::<code>supportedStencilResolveModes</code> or <code>VK_RESOLVE_MODE_NONE_KHR</code>"
3828        },
3829        {
3830          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03185",
3831          "text": " If the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilResolveAttachment</code> has both depth and stencil components, <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>::<code>independentResolve</code> is <code>VK_FALSE</code>, and <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>::<code>independentResolveNone</code> is <code>VK_FALSE</code>, then the values of <code>depthResolveMode</code> and <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be identical"
3832        },
3833        {
3834          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03186",
3835          "text": " If the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilResolveAttachment</code> has both depth and stencil components, <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>::<code>independentResolve</code> is <code>VK_FALSE</code> and <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>::<code>independentResolveNone</code> is <code>VK_TRUE</code>, then the values of <code>depthResolveMode</code> and <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be identical or one of them <strong class=\"purple\">must</strong> be <code>VK_RESOLVE_MODE_NONE_KHR</code>"
3836        },
3837        {
3838          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-sType-sType",
3839          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR</code>"
3840        },
3841        {
3842          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-depthResolveMode-parameter",
3843          "text": " <code>depthResolveMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkResolveModeFlagBitsKHR\">VkResolveModeFlagBitsKHR</a> value"
3844        },
3845        {
3846          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-stencilResolveMode-parameter",
3847          "text": " <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkResolveModeFlagBitsKHR\">VkResolveModeFlagBitsKHR</a> value"
3848        },
3849        {
3850          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-parameter",
3851          "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code>, <code>pDepthStencilResolveAttachment</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAttachmentReference2KHR</code> structure"
3852        }
3853      ]
3854    },
3855    "VkAttachmentReference2KHR": {
3856      "(VK_KHR_create_renderpass2)": [
3857        {
3858          "vuid": "VUID-VkAttachmentReference2KHR-layout-03077",
3859          "text": " If <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>"
3860        },
3861        {
3862          "vuid": "VUID-VkAttachmentReference2KHR-sType-sType",
3863          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR</code>"
3864        },
3865        {
3866          "vuid": "VUID-VkAttachmentReference2KHR-layout-parameter",
3867          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
3868        }
3869      ]
3870    },
3871    "VkSubpassDependency2KHR": {
3872      "(VK_KHR_create_renderpass2)": [
3873        {
3874          "vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-03078",
3875          "text": " If <code>srcSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>"
3876        },
3877        {
3878          "vuid": "VUID-VkSubpassDependency2KHR-dstSubpass-03079",
3879          "text": " If <code>dstSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>"
3880        },
3881        {
3882          "vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-03080",
3883          "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
3884        },
3885        {
3886          "vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-03081",
3887          "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
3888        },
3889        {
3890          "vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-03082",
3891          "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
3892        },
3893        {
3894          "vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-03083",
3895          "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
3896        },
3897        {
3898          "vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-03084",
3899          "text": " <code>srcSubpass</code> <strong class=\"purple\">must</strong> be less than or equal to <code>dstSubpass</code>, unless one of them is <code>VK_SUBPASS_EXTERNAL</code>, to avoid cyclic dependencies and ensure a valid execution order"
3900        },
3901        {
3902          "vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-03085",
3903          "text": " <code>srcSubpass</code> and <code>dstSubpass</code> <strong class=\"purple\">must</strong> not both be equal to <code>VK_SUBPASS_EXTERNAL</code>"
3904        },
3905        {
3906          "vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-02244",
3907          "text": " If <code>srcSubpass</code> is equal to <code>dstSubpass</code>, <code>srcStageMask</code> and <code>dstStageMask</code> <strong class=\"purple\">must</strong> not set any bits that are neither <code>VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT</code>, nor one of the <a href=\"#synchronization-pipeline-stages-types\">graphics pipeline stages</a>"
3908        },
3909        {
3910          "vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-03087",
3911          "text": " If <code>srcSubpass</code> is equal to <code>dstSubpass</code> and not all of the stages in <code>srcStageMask</code> and <code>dstStageMask</code> are <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stages</a>, the <a href=\"#synchronization-pipeline-stages-order\">logically latest</a> pipeline stage in <code>srcStageMask</code> <strong class=\"purple\">must</strong> be <a href=\"#synchronization-pipeline-stages-order\">logically earlier</a> than or equal to the <a href=\"#synchronization-pipeline-stages-order\">logically earliest</a> pipeline stage in <code>dstStageMask</code>"
3912        },
3913        {
3914          "vuid": "VUID-VkSubpassDependency2KHR-srcAccessMask-03088",
3915          "text": " Any access flag included in <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be supported by one of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>"
3916        },
3917        {
3918          "vuid": "VUID-VkSubpassDependency2KHR-dstAccessMask-03089",
3919          "text": " Any access flag included in <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be supported by one of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>"
3920        },
3921        {
3922          "vuid": "VUID-VkSubpassDependency2KHR-dependencyFlags-03090",
3923          "text": " If <code>dependencyFlags</code> includes <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, <code>srcSubpass</code> <strong class=\"purple\">must</strong> not be equal to <code>VK_SUBPASS_EXTERNAL</code>"
3924        },
3925        {
3926          "vuid": "VUID-VkSubpassDependency2KHR-dependencyFlags-03091",
3927          "text": " If <code>dependencyFlags</code> includes <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, <code>dstSubpass</code> <strong class=\"purple\">must</strong> not be equal to <code>VK_SUBPASS_EXTERNAL</code>"
3928        },
3929        {
3930          "vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-02245",
3931          "text": " If <code>srcSubpass</code> equals <code>dstSubpass</code>, and <code>srcStageMask</code> and <code>dstStageMask</code> both include a <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stage</a>, then <code>dependencyFlags</code> <strong class=\"purple\">must</strong> include <code>VK_DEPENDENCY_BY_REGION_BIT</code>"
3932        },
3933        {
3934          "vuid": "VUID-VkSubpassDependency2KHR-viewOffset-02530",
3935          "text": " If <code>viewOffset</code> is not equal to <code>0</code>, <code>srcSubpass</code> <strong class=\"purple\">must</strong> not be equal to <code>dstSubpass</code>"
3936        },
3937        {
3938          "vuid": "VUID-VkSubpassDependency2KHR-dependencyFlags-03092",
3939          "text": " If <code>dependencyFlags</code> does not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, <code>viewOffset</code> <strong class=\"purple\">must</strong> be <code>0</code>"
3940        },
3941        {
3942          "vuid": "VUID-VkSubpassDependency2KHR-viewOffset-03093",
3943          "text": " If <code>viewOffset</code> is not <code>0</code>, <code>srcSubpass</code> <strong class=\"purple\">must</strong> not be equal to <code>dstSubpass</code>."
3944        },
3945        {
3946          "vuid": "VUID-VkSubpassDependency2KHR-sType-sType",
3947          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR</code>"
3948        },
3949        {
3950          "vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-parameter",
3951          "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
3952        },
3953        {
3954          "vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-requiredbitmask",
3955          "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
3956        },
3957        {
3958          "vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-parameter",
3959          "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
3960        },
3961        {
3962          "vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-requiredbitmask",
3963          "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
3964        },
3965        {
3966          "vuid": "VUID-VkSubpassDependency2KHR-srcAccessMask-parameter",
3967          "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
3968        },
3969        {
3970          "vuid": "VUID-VkSubpassDependency2KHR-dstAccessMask-parameter",
3971          "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
3972        },
3973        {
3974          "vuid": "VUID-VkSubpassDependency2KHR-dependencyFlags-parameter",
3975          "text": " <code>dependencyFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDependencyFlagBits\">VkDependencyFlagBits</a> values"
3976        }
3977      ],
3978      "(VK_KHR_create_renderpass2)+(VK_NV_mesh_shader)": [
3979        {
3980          "vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-02103",
3981          "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
3982        },
3983        {
3984          "vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-02104",
3985          "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
3986        },
3987        {
3988          "vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-02105",
3989          "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
3990        },
3991        {
3992          "vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-02106",
3993          "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
3994        }
3995      ]
3996    },
3997    "vkDestroyRenderPass": {
3998      "core": [
3999        {
4000          "vuid": "VUID-vkDestroyRenderPass-renderPass-00873",
4001          "text": " All submitted commands that refer to <code>renderPass</code> <strong class=\"purple\">must</strong> have completed execution"
4002        },
4003        {
4004          "vuid": "VUID-vkDestroyRenderPass-renderPass-00874",
4005          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>renderPass</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
4006        },
4007        {
4008          "vuid": "VUID-vkDestroyRenderPass-renderPass-00875",
4009          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>renderPass</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
4010        },
4011        {
4012          "vuid": "VUID-vkDestroyRenderPass-device-parameter",
4013          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
4014        },
4015        {
4016          "vuid": "VUID-vkDestroyRenderPass-renderPass-parameter",
4017          "text": " If <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code> handle"
4018        },
4019        {
4020          "vuid": "VUID-vkDestroyRenderPass-pAllocator-parameter",
4021          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
4022        },
4023        {
4024          "vuid": "VUID-vkDestroyRenderPass-renderPass-parent",
4025          "text": " If <code>renderPass</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
4026        }
4027      ]
4028    },
4029    "vkCreateFramebuffer": {
4030      "core": [
4031        {
4032          "vuid": "VUID-vkCreateFramebuffer-device-parameter",
4033          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
4034        },
4035        {
4036          "vuid": "VUID-vkCreateFramebuffer-pCreateInfo-parameter",
4037          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkFramebufferCreateInfo</code> structure"
4038        },
4039        {
4040          "vuid": "VUID-vkCreateFramebuffer-pAllocator-parameter",
4041          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
4042        },
4043        {
4044          "vuid": "VUID-vkCreateFramebuffer-pFramebuffer-parameter",
4045          "text": " <code>pFramebuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFramebuffer</code> handle"
4046        }
4047      ]
4048    },
4049    "VkFramebufferCreateInfo": {
4050      "core": [
4051        {
4052          "vuid": "VUID-VkFramebufferCreateInfo-attachmentCount-00876",
4053          "text": " <code>attachmentCount</code> <strong class=\"purple\">must</strong> be equal to the attachment count specified in <code>renderPass</code>"
4054        },
4055        {
4056          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00877",
4057          "text": " Each element of <code>pAttachments</code> that is used as a color attachment or resolve attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>"
4058        },
4059        {
4060          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02633",
4061          "text": " Each element of <code>pAttachments</code> that is used as a depth/stencil attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
4062        },
4063        {
4064          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00879",
4065          "text": " Each element of <code>pAttachments</code> that is used as an input attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>"
4066        },
4067        {
4068          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00880",
4069          "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with an <a href=\"#VkFormat\">VkFormat</a> value that matches the <a href=\"#VkFormat\">VkFormat</a> specified by the corresponding <code>VkAttachmentDescription</code> in <code>renderPass</code>"
4070        },
4071        {
4072          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00881",
4073          "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with a <code>samples</code> value that matches the <code>samples</code> value specified by the corresponding <code>VkAttachmentDescription</code> in <code>renderPass</code>"
4074        },
4075        {
4076          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00883",
4077          "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> only specify a single mip level"
4078        },
4079        {
4080          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00884",
4081          "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with the identity swizzle"
4082        },
4083        {
4084          "vuid": "VUID-VkFramebufferCreateInfo-width-00885",
4085          "text": " <code>width</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>."
4086        },
4087        {
4088          "vuid": "VUID-VkFramebufferCreateInfo-width-00886",
4089          "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferWidth</code>"
4090        },
4091        {
4092          "vuid": "VUID-VkFramebufferCreateInfo-height-00887",
4093          "text": " <code>height</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>."
4094        },
4095        {
4096          "vuid": "VUID-VkFramebufferCreateInfo-height-00888",
4097          "text": " <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferHeight</code>"
4098        },
4099        {
4100          "vuid": "VUID-VkFramebufferCreateInfo-layers-00889",
4101          "text": " <code>layers</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>."
4102        },
4103        {
4104          "vuid": "VUID-VkFramebufferCreateInfo-layers-00890",
4105          "text": " <code>layers</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferLayers</code>"
4106        },
4107        {
4108          "vuid": "VUID-VkFramebufferCreateInfo-sType-sType",
4109          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO</code>"
4110        },
4111        {
4112          "vuid": "VUID-VkFramebufferCreateInfo-pNext-pNext",
4113          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
4114        },
4115        {
4116          "vuid": "VUID-VkFramebufferCreateInfo-flags-zerobitmask",
4117          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
4118        },
4119        {
4120          "vuid": "VUID-VkFramebufferCreateInfo-renderPass-parameter",
4121          "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code> handle"
4122        },
4123        {
4124          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-parameter",
4125          "text": " If <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <code>VkImageView</code> handles"
4126        },
4127        {
4128          "vuid": "VUID-VkFramebufferCreateInfo-commonparent",
4129          "text": " Both of <code>renderPass</code>, and the elements of <code>pAttachments</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
4130        }
4131      ],
4132      "(VK_KHR_depth_stencil_resolve)": [
4133        {
4134          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02634",
4135          "text": " Each element of <code>pAttachments</code> that is used as a depth/stencil resolve attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
4136        }
4137      ],
4138      "(VK_EXT_fragment_density_map)": [
4139        {
4140          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02552",
4141          "text": " Each element of <code>pAttachments</code> that is used as a fragment density map attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> not have been created with a <code>flags</code> value including <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>."
4142        },
4143        {
4144          "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02553",
4145          "text": " If <code>renderPass</code> has a fragment density map attachment and <a href=\"#features-nonsubsampledimages\">non-subsample image feature</a> is not enabled, each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with a <code>flags</code> value including <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code> unless that element is the fragment density map attachment."
4146        },
4147        {
4148          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02554",
4149          "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have dimensions at least as large as the corresponding framebuffer dimension except for any element that is referenced by <code>fragmentDensityMapAttachment</code>"
4150        },
4151        {
4152          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02555",
4153          "text": " An element of <code>pAttachments</code> that is referenced by <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> have a width at least as large as \\(\\lceil{\\frac{width}{maxFragmentDensityTexelSize_{width}}}\\rceil\\)"
4154        },
4155        {
4156          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02556",
4157          "text": " An element of <code>pAttachments</code> that is referenced by <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> have a height at least as large as \\(\\lceil{\\frac{height}{maxFragmentDensityTexelSize_{height}}}\\rceil\\)"
4158        }
4159      ],
4160      "!(VK_EXT_fragment_density_map)": [
4161        {
4162          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00882",
4163          "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have dimensions at least as large as the corresponding framebuffer dimension"
4164        }
4165      ],
4166      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
4167        {
4168          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00891",
4169          "text": " Each element of <code>pAttachments</code> that is a 2D or 2D array image view taken from a 3D image <strong class=\"purple\">must</strong> not be a depth/stencil format"
4170        }
4171      ],
4172      "(VK_VERSION_1_1,VK_KHR_multiview)": [
4173        {
4174          "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02531",
4175          "text": " If <code>renderPass</code> was specified with non-zero view masks, <code>layers</code> <strong class=\"purple\">must</strong> be greater than or equal to the greatest position of any bit included in any of those view masks"
4176        }
4177      ]
4178    },
4179    "vkDestroyFramebuffer": {
4180      "core": [
4181        {
4182          "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00892",
4183          "text": " All submitted commands that refer to <code>framebuffer</code> <strong class=\"purple\">must</strong> have completed execution"
4184        },
4185        {
4186          "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00893",
4187          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>framebuffer</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
4188        },
4189        {
4190          "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00894",
4191          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>framebuffer</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
4192        },
4193        {
4194          "vuid": "VUID-vkDestroyFramebuffer-device-parameter",
4195          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
4196        },
4197        {
4198          "vuid": "VUID-vkDestroyFramebuffer-framebuffer-parameter",
4199          "text": " If <code>framebuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>framebuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkFramebuffer</code> handle"
4200        },
4201        {
4202          "vuid": "VUID-vkDestroyFramebuffer-pAllocator-parameter",
4203          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
4204        },
4205        {
4206          "vuid": "VUID-vkDestroyFramebuffer-framebuffer-parent",
4207          "text": " If <code>framebuffer</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
4208        }
4209      ]
4210    },
4211    "vkCmdBeginRenderPass": {
4212      "core": [
4213        {
4214          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00895",
4215          "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>"
4216        },
4217        {
4218          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00897",
4219          "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>"
4220        },
4221        {
4222          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00898",
4223          "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code>"
4224        },
4225        {
4226          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00899",
4227          "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code>"
4228        },
4229        {
4230          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00900",
4231          "text": " If any of the <code>initialLayout</code> members of the <code>VkAttachmentDescription</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is not <code>VK_IMAGE_LAYOUT_UNDEFINED</code>, then each such <code>initialLayout</code> <strong class=\"purple\">must</strong> be equal to the current layout of the corresponding attachment image subresource of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code>"
4232        },
4233        {
4234          "vuid": "VUID-vkCmdBeginRenderPass-srcStageMask-00901",
4235          "text": " The <code>srcStageMask</code> and <code>dstStageMask</code> members of any element of the <code>pDependencies</code> member of <a href=\"#VkRenderPassCreateInfo\">VkRenderPassCreateInfo</a> used to create <code>renderPass</code> <strong class=\"purple\">must</strong> be supported by the capabilities of the queue family identified by the <code>queueFamilyIndex</code> member of the <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> used to create the command pool which <code>commandBuffer</code> was allocated from"
4236        },
4237        {
4238          "vuid": "VUID-vkCmdBeginRenderPass-framebuffer-02532",
4239          "text": " For any attachment in <code>framebuffer</code> that is used by <code>renderPass</code> and is bound to memory locations that are also bound to another attachment used by <code>renderPass</code>, and if at least one of those uses causes either attachment to be written to, both attachments <strong class=\"purple\">must</strong> have had the <code>VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT</code> set"
4240        },
4241        {
4242          "vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-parameter",
4243          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
4244        },
4245        {
4246          "vuid": "VUID-vkCmdBeginRenderPass-pRenderPassBegin-parameter",
4247          "text": " <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkRenderPassBeginInfo</code> structure"
4248        },
4249        {
4250          "vuid": "VUID-vkCmdBeginRenderPass-contents-parameter",
4251          "text": " <code>contents</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSubpassContents\">VkSubpassContents</a> value"
4252        },
4253        {
4254          "vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-recording",
4255          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
4256        },
4257        {
4258          "vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-cmdpool",
4259          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
4260        },
4261        {
4262          "vuid": "VUID-vkCmdBeginRenderPass-renderpass",
4263          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
4264        },
4265        {
4266          "vuid": "VUID-vkCmdBeginRenderPass-bufferlevel",
4267          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
4268        }
4269      ],
4270      "!(VK_VERSION_1_1,VK_KHR_maintenance2)": [
4271        {
4272          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00896",
4273          "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
4274        }
4275      ],
4276      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
4277        {
4278          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-01758",
4279          "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
4280        }
4281      ]
4282    },
4283    "vkCmdBeginRenderPass2KHR": {
4284      "(VK_KHR_create_renderpass2)": [
4285        {
4286          "vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03094",
4287          "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>"
4288        },
4289        {
4290          "vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03096",
4291          "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
4292        },
4293        {
4294          "vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03097",
4295          "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>"
4296        },
4297        {
4298          "vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03098",
4299          "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code>"
4300        },
4301        {
4302          "vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03099",
4303          "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code>"
4304        },
4305        {
4306          "vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03100",
4307          "text": " If any of the <code>initialLayout</code> members of the <code>VkAttachmentDescription</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is not <code>VK_IMAGE_LAYOUT_UNDEFINED</code>, then each such <code>initialLayout</code> <strong class=\"purple\">must</strong> be equal to the current layout of the corresponding attachment image subresource of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code>"
4308        },
4309        {
4310          "vuid": "VUID-vkCmdBeginRenderPass2KHR-srcStageMask-03101",
4311          "text": " The <code>srcStageMask</code> and <code>dstStageMask</code> members of any element of the <code>pDependencies</code> member of <a href=\"#VkRenderPassCreateInfo\">VkRenderPassCreateInfo</a> used to create <code>renderPass</code> <strong class=\"purple\">must</strong> be supported by the capabilities of the queue family identified by the <code>queueFamilyIndex</code> member of the <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> used to create the command pool which <code>commandBuffer</code> was allocated from"
4312        },
4313        {
4314          "vuid": "VUID-vkCmdBeginRenderPass2KHR-framebuffer-02533",
4315          "text": " For any attachment in <code>framebuffer</code> that is used by <code>renderPass</code> and is bound to memory locations that are also bound to another attachment used by <code>renderPass</code>, and if at least one of those uses causes either attachment to be written to, both attachments <strong class=\"purple\">must</strong> have had the <code>VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT</code> set"
4316        },
4317        {
4318          "vuid": "VUID-vkCmdBeginRenderPass2KHR-commandBuffer-parameter",
4319          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
4320        },
4321        {
4322          "vuid": "VUID-vkCmdBeginRenderPass2KHR-pRenderPassBegin-parameter",
4323          "text": " <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkRenderPassBeginInfo</code> structure"
4324        },
4325        {
4326          "vuid": "VUID-vkCmdBeginRenderPass2KHR-pSubpassBeginInfo-parameter",
4327          "text": " <code>pSubpassBeginInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSubpassBeginInfoKHR</code> structure"
4328        },
4329        {
4330          "vuid": "VUID-vkCmdBeginRenderPass2KHR-commandBuffer-recording",
4331          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
4332        },
4333        {
4334          "vuid": "VUID-vkCmdBeginRenderPass2KHR-commandBuffer-cmdpool",
4335          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
4336        },
4337        {
4338          "vuid": "VUID-vkCmdBeginRenderPass2KHR-renderpass",
4339          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
4340        },
4341        {
4342          "vuid": "VUID-vkCmdBeginRenderPass2KHR-bufferlevel",
4343          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
4344        }
4345      ]
4346    },
4347    "VkRenderPassBeginInfo": {
4348      "core": [
4349        {
4350          "vuid": "VUID-VkRenderPassBeginInfo-clearValueCount-00902",
4351          "text": " <code>clearValueCount</code> <strong class=\"purple\">must</strong> be greater than the largest attachment index in <code>renderPass</code> that specifies a <code>loadOp</code> (or <code>stencilLoadOp</code>, if the attachment has a depth/stencil format) of <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>"
4352        },
4353        {
4354          "vuid": "VUID-VkRenderPassBeginInfo-renderPass-00904",
4355          "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkFramebufferCreateInfo</code> structure specified when creating <code>framebuffer</code>."
4356        },
4357        {
4358          "vuid": "VUID-VkRenderPassBeginInfo-sType-sType",
4359          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO</code>"
4360        },
4361        {
4362          "vuid": "VUID-VkRenderPassBeginInfo-pNext-pNext",
4363          "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> or <a href=\"#VkRenderPassSampleLocationsBeginInfoEXT\">VkRenderPassSampleLocationsBeginInfoEXT</a>"
4364        },
4365        {
4366          "vuid": "VUID-VkRenderPassBeginInfo-sType-unique",
4367          "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
4368        },
4369        {
4370          "vuid": "VUID-VkRenderPassBeginInfo-renderPass-parameter",
4371          "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code> handle"
4372        },
4373        {
4374          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-parameter",
4375          "text": " <code>framebuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkFramebuffer</code> handle"
4376        },
4377        {
4378          "vuid": "VUID-VkRenderPassBeginInfo-pClearValues-parameter",
4379          "text": " If <code>clearValueCount</code> is not <code>0</code>, <code>pClearValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>clearValueCount</code> <code>VkClearValue</code> unions"
4380        },
4381        {
4382          "vuid": "VUID-VkRenderPassBeginInfo-commonparent",
4383          "text": " Both of <code>framebuffer</code>, and <code>renderPass</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
4384        }
4385      ]
4386    },
4387    "VkRenderPassSampleLocationsBeginInfoEXT": {
4388      "(VK_EXT_sample_locations)": [
4389        {
4390          "vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-sType-sType",
4391          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT</code>"
4392        },
4393        {
4394          "vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-pAttachmentInitialSampleLocations-parameter",
4395          "text": " If <code>attachmentInitialSampleLocationsCount</code> is not <code>0</code>, <code>pAttachmentInitialSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentInitialSampleLocationsCount</code> valid <code>VkAttachmentSampleLocationsEXT</code> structures"
4396        },
4397        {
4398          "vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-pPostSubpassSampleLocations-parameter",
4399          "text": " If <code>postSubpassSampleLocationsCount</code> is not <code>0</code>, <code>pPostSubpassSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>postSubpassSampleLocationsCount</code> valid <code>VkSubpassSampleLocationsEXT</code> structures"
4400        }
4401      ]
4402    },
4403    "VkAttachmentSampleLocationsEXT": {
4404      "(VK_EXT_sample_locations)": [
4405        {
4406          "vuid": "VUID-VkAttachmentSampleLocationsEXT-attachmentIndex-01531",
4407          "text": " <code>attachmentIndex</code> <strong class=\"purple\">must</strong> be less than the <code>attachmentCount</code> specified in <a href=\"#VkRenderPassCreateInfo\">VkRenderPassCreateInfo</a> the render pass specified by <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a>::<code>renderPass</code> was created with"
4408        },
4409        {
4410          "vuid": "VUID-VkAttachmentSampleLocationsEXT-sampleLocationsInfo-parameter",
4411          "text": " <code>sampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampleLocationsInfoEXT</code> structure"
4412        }
4413      ]
4414    },
4415    "VkSubpassSampleLocationsEXT": {
4416      "(VK_EXT_sample_locations)": [
4417        {
4418          "vuid": "VUID-VkSubpassSampleLocationsEXT-subpassIndex-01532",
4419          "text": " <code>subpassIndex</code> <strong class=\"purple\">must</strong> be less than the <code>subpassCount</code> specified in <a href=\"#VkRenderPassCreateInfo\">VkRenderPassCreateInfo</a> the render pass specified by <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a>::<code>renderPass</code> was created with"
4420        },
4421        {
4422          "vuid": "VUID-VkSubpassSampleLocationsEXT-sampleLocationsInfo-parameter",
4423          "text": " <code>sampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampleLocationsInfoEXT</code> structure"
4424        }
4425      ]
4426    },
4427    "VkSubpassBeginInfoKHR": {
4428      "(VK_KHR_create_renderpass2)": [
4429        {
4430          "vuid": "VUID-VkSubpassBeginInfoKHR-sType-sType",
4431          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR</code>"
4432        },
4433        {
4434          "vuid": "VUID-VkSubpassBeginInfoKHR-pNext-pNext",
4435          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
4436        },
4437        {
4438          "vuid": "VUID-VkSubpassBeginInfoKHR-contents-parameter",
4439          "text": " <code>contents</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSubpassContents\">VkSubpassContents</a> value"
4440        }
4441      ]
4442    },
4443    "VkDeviceGroupRenderPassBeginInfo": {
4444      "(VK_VERSION_1_1,VK_KHR_device_group)": [
4445        {
4446          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00905",
4447          "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value"
4448        },
4449        {
4450          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00906",
4451          "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
4452        },
4453        {
4454          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00907",
4455          "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a subset of the command buffer&#8217;s initial device mask"
4456        },
4457        {
4458          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceRenderAreaCount-00908",
4459          "text": " <code>deviceRenderAreaCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device."
4460        },
4461        {
4462          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-sType-sType",
4463          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO</code>"
4464        },
4465        {
4466          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-pDeviceRenderAreas-parameter",
4467          "text": " If <code>deviceRenderAreaCount</code> is not <code>0</code>, <code>pDeviceRenderAreas</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>deviceRenderAreaCount</code> <code>VkRect2D</code> structures"
4468        }
4469      ]
4470    },
4471    "vkGetRenderAreaGranularity": {
4472      "core": [
4473        {
4474          "vuid": "VUID-vkGetRenderAreaGranularity-device-parameter",
4475          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
4476        },
4477        {
4478          "vuid": "VUID-vkGetRenderAreaGranularity-renderPass-parameter",
4479          "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code> handle"
4480        },
4481        {
4482          "vuid": "VUID-vkGetRenderAreaGranularity-pGranularity-parameter",
4483          "text": " <code>pGranularity</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkExtent2D</code> structure"
4484        },
4485        {
4486          "vuid": "VUID-vkGetRenderAreaGranularity-renderPass-parent",
4487          "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
4488        }
4489      ]
4490    },
4491    "vkCmdNextSubpass": {
4492      "core": [
4493        {
4494          "vuid": "VUID-vkCmdNextSubpass-None-00909",
4495          "text": " The current subpass index <strong class=\"purple\">must</strong> be less than the number of subpasses in the render pass minus one"
4496        },
4497        {
4498          "vuid": "VUID-vkCmdNextSubpass-commandBuffer-parameter",
4499          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
4500        },
4501        {
4502          "vuid": "VUID-vkCmdNextSubpass-contents-parameter",
4503          "text": " <code>contents</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSubpassContents\">VkSubpassContents</a> value"
4504        },
4505        {
4506          "vuid": "VUID-vkCmdNextSubpass-commandBuffer-recording",
4507          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
4508        },
4509        {
4510          "vuid": "VUID-vkCmdNextSubpass-commandBuffer-cmdpool",
4511          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
4512        },
4513        {
4514          "vuid": "VUID-vkCmdNextSubpass-renderpass",
4515          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
4516        },
4517        {
4518          "vuid": "VUID-vkCmdNextSubpass-bufferlevel",
4519          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
4520        }
4521      ],
4522      "(VK_EXT_transform_feedback)": [
4523        {
4524          "vuid": "VUID-vkCmdNextSubpass-None-02349",
4525          "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
4526        }
4527      ]
4528    },
4529    "vkCmdNextSubpass2KHR": {
4530      "(VK_KHR_create_renderpass2)": [
4531        {
4532          "vuid": "VUID-vkCmdNextSubpass2KHR-None-03102",
4533          "text": " The current subpass index <strong class=\"purple\">must</strong> be less than the number of subpasses in the render pass minus one"
4534        },
4535        {
4536          "vuid": "VUID-vkCmdNextSubpass2KHR-commandBuffer-parameter",
4537          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
4538        },
4539        {
4540          "vuid": "VUID-vkCmdNextSubpass2KHR-pSubpassBeginInfo-parameter",
4541          "text": " <code>pSubpassBeginInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSubpassBeginInfoKHR</code> structure"
4542        },
4543        {
4544          "vuid": "VUID-vkCmdNextSubpass2KHR-pSubpassEndInfo-parameter",
4545          "text": " <code>pSubpassEndInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSubpassEndInfoKHR</code> structure"
4546        },
4547        {
4548          "vuid": "VUID-vkCmdNextSubpass2KHR-commandBuffer-recording",
4549          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
4550        },
4551        {
4552          "vuid": "VUID-vkCmdNextSubpass2KHR-commandBuffer-cmdpool",
4553          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
4554        },
4555        {
4556          "vuid": "VUID-vkCmdNextSubpass2KHR-renderpass",
4557          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
4558        },
4559        {
4560          "vuid": "VUID-vkCmdNextSubpass2KHR-bufferlevel",
4561          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
4562        }
4563      ],
4564      "(VK_KHR_create_renderpass2)+(VK_EXT_transform_feedback)": [
4565        {
4566          "vuid": "VUID-vkCmdNextSubpass2KHR-None-02350",
4567          "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
4568        }
4569      ]
4570    },
4571    "vkCmdEndRenderPass": {
4572      "core": [
4573        {
4574          "vuid": "VUID-vkCmdEndRenderPass-None-00910",
4575          "text": " The current subpass index <strong class=\"purple\">must</strong> be equal to the number of subpasses in the render pass minus one"
4576        },
4577        {
4578          "vuid": "VUID-vkCmdEndRenderPass-commandBuffer-parameter",
4579          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
4580        },
4581        {
4582          "vuid": "VUID-vkCmdEndRenderPass-commandBuffer-recording",
4583          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
4584        },
4585        {
4586          "vuid": "VUID-vkCmdEndRenderPass-commandBuffer-cmdpool",
4587          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
4588        },
4589        {
4590          "vuid": "VUID-vkCmdEndRenderPass-renderpass",
4591          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
4592        },
4593        {
4594          "vuid": "VUID-vkCmdEndRenderPass-bufferlevel",
4595          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
4596        }
4597      ],
4598      "(VK_EXT_transform_feedback)": [
4599        {
4600          "vuid": "VUID-vkCmdEndRenderPass-None-02351",
4601          "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
4602        }
4603      ]
4604    },
4605    "vkCmdEndRenderPass2KHR": {
4606      "(VK_KHR_create_renderpass2)": [
4607        {
4608          "vuid": "VUID-vkCmdEndRenderPass2KHR-None-03103",
4609          "text": " The current subpass index <strong class=\"purple\">must</strong> be equal to the number of subpasses in the render pass minus one"
4610        },
4611        {
4612          "vuid": "VUID-vkCmdEndRenderPass2KHR-commandBuffer-parameter",
4613          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
4614        },
4615        {
4616          "vuid": "VUID-vkCmdEndRenderPass2KHR-pSubpassEndInfo-parameter",
4617          "text": " <code>pSubpassEndInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSubpassEndInfoKHR</code> structure"
4618        },
4619        {
4620          "vuid": "VUID-vkCmdEndRenderPass2KHR-commandBuffer-recording",
4621          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
4622        },
4623        {
4624          "vuid": "VUID-vkCmdEndRenderPass2KHR-commandBuffer-cmdpool",
4625          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
4626        },
4627        {
4628          "vuid": "VUID-vkCmdEndRenderPass2KHR-renderpass",
4629          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
4630        },
4631        {
4632          "vuid": "VUID-vkCmdEndRenderPass2KHR-bufferlevel",
4633          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
4634        }
4635      ],
4636      "(VK_KHR_create_renderpass2)+(VK_EXT_transform_feedback)": [
4637        {
4638          "vuid": "VUID-vkCmdEndRenderPass2KHR-None-02352",
4639          "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
4640        }
4641      ]
4642    },
4643    "VkSubpassEndInfoKHR": {
4644      "(VK_KHR_create_renderpass2)": [
4645        {
4646          "vuid": "VUID-VkSubpassEndInfoKHR-sType-sType",
4647          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR</code>"
4648        },
4649        {
4650          "vuid": "VUID-VkSubpassEndInfoKHR-pNext-pNext",
4651          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
4652        }
4653      ]
4654    },
4655    "vkCreateShaderModule": {
4656      "core": [
4657        {
4658          "vuid": "VUID-vkCreateShaderModule-device-parameter",
4659          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
4660        },
4661        {
4662          "vuid": "VUID-vkCreateShaderModule-pCreateInfo-parameter",
4663          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkShaderModuleCreateInfo</code> structure"
4664        },
4665        {
4666          "vuid": "VUID-vkCreateShaderModule-pAllocator-parameter",
4667          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
4668        },
4669        {
4670          "vuid": "VUID-vkCreateShaderModule-pShaderModule-parameter",
4671          "text": " <code>pShaderModule</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkShaderModule</code> handle"
4672        }
4673      ]
4674    },
4675    "VkShaderModuleCreateInfo": {
4676      "core": [
4677        {
4678          "vuid": "VUID-VkShaderModuleCreateInfo-codeSize-01085",
4679          "text": " <code>codeSize</code> <strong class=\"purple\">must</strong> be greater than 0"
4680        },
4681        {
4682          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01089",
4683          "text": " <code>pCode</code> <strong class=\"purple\">must</strong> declare the <code>Shader</code> capability for SPIR-V code"
4684        },
4685        {
4686          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01090",
4687          "text": " <code>pCode</code> <strong class=\"purple\">must</strong> not declare any capability that is not supported by the API, as described by the <a href=\"#spirvenv-module-validation\">Capabilities</a> section of the <a href=\"#spirvenv-capabilities\">SPIR-V Environment</a> appendix"
4688        },
4689        {
4690          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01091",
4691          "text": " If <code>pCode</code> declares any of the capabilities listed as <strong class=\"purple\">optional</strong> in the <a href=\"#spirvenv-capabilities-table\">SPIR-V Environment</a> appendix, the corresponding feature(s) <strong class=\"purple\">must</strong> be enabled."
4692        },
4693        {
4694          "vuid": "VUID-VkShaderModuleCreateInfo-sType-sType",
4695          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO</code>"
4696        },
4697        {
4698          "vuid": "VUID-VkShaderModuleCreateInfo-pNext-pNext",
4699          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkShaderModuleValidationCacheCreateInfoEXT\">VkShaderModuleValidationCacheCreateInfoEXT</a>"
4700        },
4701        {
4702          "vuid": "VUID-VkShaderModuleCreateInfo-flags-zerobitmask",
4703          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
4704        },
4705        {
4706          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-parameter",
4707          "text": " <code>pCode</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of \\(\\textrm{codeSize} \\over 4\\) <code>uint32_t</code> values"
4708        }
4709      ],
4710      "!(VK_NV_glsl_shader)": [
4711        {
4712          "vuid": "VUID-VkShaderModuleCreateInfo-codeSize-01086",
4713          "text": " <code>codeSize</code> <strong class=\"purple\">must</strong> be a multiple of 4"
4714        },
4715        {
4716          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01087",
4717          "text": " <code>pCode</code> <strong class=\"purple\">must</strong> point to valid SPIR-V code, formatted and packed as described by the <a href=\"#spirv-spec\">Khronos SPIR-V Specification</a>"
4718        },
4719        {
4720          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01088",
4721          "text": " <code>pCode</code> <strong class=\"purple\">must</strong> adhere to the validation rules described by the <a href=\"#spirvenv-module-validation\">Validation Rules within a Module</a> section of the <a href=\"#spirvenv-capabilities\">SPIR-V Environment</a> appendix"
4722        }
4723      ],
4724      "(VK_NV_glsl_shader)": [
4725        {
4726          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01376",
4727          "text": " If <code>pCode</code> points to SPIR-V code, <code>codeSize</code> <strong class=\"purple\">must</strong> be a multiple of 4"
4728        },
4729        {
4730          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01377",
4731          "text": " <code>pCode</code> <strong class=\"purple\">must</strong> point to either valid SPIR-V code, formatted and packed as described by the <a href=\"#spirv-spec\">Khronos SPIR-V Specification</a> or valid GLSL code which <strong class=\"purple\">must</strong> be written to the <code>GL_KHR_vulkan_glsl</code> extension specification"
4732        },
4733        {
4734          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01378",
4735          "text": " If <code>pCode</code> points to SPIR-V code, that code <strong class=\"purple\">must</strong> adhere to the validation rules described by the <a href=\"#spirvenv-module-validation\">Validation Rules within a Module</a> section of the <a href=\"#spirvenv-capabilities\">SPIR-V Environment</a> appendix"
4736        },
4737        {
4738          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01379",
4739          "text": " If <code>pCode</code> points to GLSL code, it <strong class=\"purple\">must</strong> be valid GLSL code written to the <code>GL_KHR_vulkan_glsl</code> GLSL extension specification"
4740        }
4741      ]
4742    },
4743    "VkShaderModuleValidationCacheCreateInfoEXT": {
4744      "(VK_EXT_validation_cache)": [
4745        {
4746          "vuid": "VUID-VkShaderModuleValidationCacheCreateInfoEXT-sType-sType",
4747          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT</code>"
4748        },
4749        {
4750          "vuid": "VUID-VkShaderModuleValidationCacheCreateInfoEXT-validationCache-parameter",
4751          "text": " <code>validationCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkValidationCacheEXT</code> handle"
4752        }
4753      ]
4754    },
4755    "vkDestroyShaderModule": {
4756      "core": [
4757        {
4758          "vuid": "VUID-vkDestroyShaderModule-shaderModule-01092",
4759          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>shaderModule</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
4760        },
4761        {
4762          "vuid": "VUID-vkDestroyShaderModule-shaderModule-01093",
4763          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>shaderModule</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
4764        },
4765        {
4766          "vuid": "VUID-vkDestroyShaderModule-device-parameter",
4767          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
4768        },
4769        {
4770          "vuid": "VUID-vkDestroyShaderModule-shaderModule-parameter",
4771          "text": " If <code>shaderModule</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>shaderModule</code> <strong class=\"purple\">must</strong> be a valid <code>VkShaderModule</code> handle"
4772        },
4773        {
4774          "vuid": "VUID-vkDestroyShaderModule-pAllocator-parameter",
4775          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
4776        },
4777        {
4778          "vuid": "VUID-vkDestroyShaderModule-shaderModule-parent",
4779          "text": " If <code>shaderModule</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
4780        }
4781      ]
4782    },
4783    "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV": {
4784      "(VK_NV_cooperative_matrix)": [
4785        {
4786          "vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-physicalDevice-parameter",
4787          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
4788        },
4789        {
4790          "vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-pPropertyCount-parameter",
4791          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
4792        },
4793        {
4794          "vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-pProperties-parameter",
4795          "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkCooperativeMatrixPropertiesNV</code> structures"
4796        }
4797      ]
4798    },
4799    "VkCooperativeMatrixPropertiesNV": {
4800      "(VK_NV_cooperative_matrix)": [
4801        {
4802          "vuid": "VUID-VkCooperativeMatrixPropertiesNV-sType-sType",
4803          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV</code>"
4804        },
4805        {
4806          "vuid": "VUID-VkCooperativeMatrixPropertiesNV-pNext-pNext",
4807          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
4808        },
4809        {
4810          "vuid": "VUID-VkCooperativeMatrixPropertiesNV-AType-parameter",
4811          "text": " <code>AType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentTypeNV\">VkComponentTypeNV</a> value"
4812        },
4813        {
4814          "vuid": "VUID-VkCooperativeMatrixPropertiesNV-BType-parameter",
4815          "text": " <code>BType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentTypeNV\">VkComponentTypeNV</a> value"
4816        },
4817        {
4818          "vuid": "VUID-VkCooperativeMatrixPropertiesNV-CType-parameter",
4819          "text": " <code>CType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentTypeNV\">VkComponentTypeNV</a> value"
4820        },
4821        {
4822          "vuid": "VUID-VkCooperativeMatrixPropertiesNV-DType-parameter",
4823          "text": " <code>DType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentTypeNV\">VkComponentTypeNV</a> value"
4824        },
4825        {
4826          "vuid": "VUID-VkCooperativeMatrixPropertiesNV-scope-parameter",
4827          "text": " <code>scope</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkScopeNV\">VkScopeNV</a> value"
4828        }
4829      ]
4830    },
4831    "vkCreateValidationCacheEXT": {
4832      "(VK_EXT_validation_cache)": [
4833        {
4834          "vuid": "VUID-vkCreateValidationCacheEXT-device-parameter",
4835          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
4836        },
4837        {
4838          "vuid": "VUID-vkCreateValidationCacheEXT-pCreateInfo-parameter",
4839          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkValidationCacheCreateInfoEXT</code> structure"
4840        },
4841        {
4842          "vuid": "VUID-vkCreateValidationCacheEXT-pAllocator-parameter",
4843          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
4844        },
4845        {
4846          "vuid": "VUID-vkCreateValidationCacheEXT-pValidationCache-parameter",
4847          "text": " <code>pValidationCache</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkValidationCacheEXT</code> handle"
4848        }
4849      ]
4850    },
4851    "VkValidationCacheCreateInfoEXT": {
4852      "(VK_EXT_validation_cache)": [
4853        {
4854          "vuid": "VUID-VkValidationCacheCreateInfoEXT-initialDataSize-01534",
4855          "text": " If <code>initialDataSize</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be equal to the size of <code>pInitialData</code>, as returned by <code>vkGetValidationCacheDataEXT</code> when <code>pInitialData</code> was originally retrieved"
4856        },
4857        {
4858          "vuid": "VUID-VkValidationCacheCreateInfoEXT-initialDataSize-01535",
4859          "text": " If <code>initialDataSize</code> is not <code>0</code>, <code>pInitialData</code> <strong class=\"purple\">must</strong> have been retrieved from a previous call to <code>vkGetValidationCacheDataEXT</code>"
4860        },
4861        {
4862          "vuid": "VUID-VkValidationCacheCreateInfoEXT-sType-sType",
4863          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT</code>"
4864        },
4865        {
4866          "vuid": "VUID-VkValidationCacheCreateInfoEXT-pNext-pNext",
4867          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
4868        },
4869        {
4870          "vuid": "VUID-VkValidationCacheCreateInfoEXT-flags-zerobitmask",
4871          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
4872        },
4873        {
4874          "vuid": "VUID-VkValidationCacheCreateInfoEXT-pInitialData-parameter",
4875          "text": " If <code>initialDataSize</code> is not <code>0</code>, <code>pInitialData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>initialDataSize</code> bytes"
4876        }
4877      ]
4878    },
4879    "vkMergeValidationCachesEXT": {
4880      "(VK_EXT_validation_cache)": [
4881        {
4882          "vuid": "VUID-vkMergeValidationCachesEXT-dstCache-01536",
4883          "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> not appear in the list of source caches"
4884        },
4885        {
4886          "vuid": "VUID-vkMergeValidationCachesEXT-device-parameter",
4887          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
4888        },
4889        {
4890          "vuid": "VUID-vkMergeValidationCachesEXT-dstCache-parameter",
4891          "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkValidationCacheEXT</code> handle"
4892        },
4893        {
4894          "vuid": "VUID-vkMergeValidationCachesEXT-pSrcCaches-parameter",
4895          "text": " <code>pSrcCaches</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>srcCacheCount</code> valid <code>VkValidationCacheEXT</code> handles"
4896        },
4897        {
4898          "vuid": "VUID-vkMergeValidationCachesEXT-srcCacheCount-arraylength",
4899          "text": " <code>srcCacheCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
4900        },
4901        {
4902          "vuid": "VUID-vkMergeValidationCachesEXT-dstCache-parent",
4903          "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
4904        },
4905        {
4906          "vuid": "VUID-vkMergeValidationCachesEXT-pSrcCaches-parent",
4907          "text": " Each element of <code>pSrcCaches</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
4908        }
4909      ]
4910    },
4911    "vkGetValidationCacheDataEXT": {
4912      "(VK_EXT_validation_cache)": [
4913        {
4914          "vuid": "VUID-vkGetValidationCacheDataEXT-device-parameter",
4915          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
4916        },
4917        {
4918          "vuid": "VUID-vkGetValidationCacheDataEXT-validationCache-parameter",
4919          "text": " <code>validationCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkValidationCacheEXT</code> handle"
4920        },
4921        {
4922          "vuid": "VUID-vkGetValidationCacheDataEXT-pDataSize-parameter",
4923          "text": " <code>pDataSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value"
4924        },
4925        {
4926          "vuid": "VUID-vkGetValidationCacheDataEXT-pData-parameter",
4927          "text": " If the value referenced by <code>pDataSize</code> is not <code>0</code>, and <code>pData</code> is not <code>NULL</code>, <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pDataSize</code> bytes"
4928        },
4929        {
4930          "vuid": "VUID-vkGetValidationCacheDataEXT-validationCache-parent",
4931          "text": " <code>validationCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
4932        }
4933      ]
4934    },
4935    "vkDestroyValidationCacheEXT": {
4936      "(VK_EXT_validation_cache)": [
4937        {
4938          "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-01537",
4939          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>validationCache</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
4940        },
4941        {
4942          "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-01538",
4943          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>validationCache</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
4944        },
4945        {
4946          "vuid": "VUID-vkDestroyValidationCacheEXT-device-parameter",
4947          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
4948        },
4949        {
4950          "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-parameter",
4951          "text": " If <code>validationCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>validationCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkValidationCacheEXT</code> handle"
4952        },
4953        {
4954          "vuid": "VUID-vkDestroyValidationCacheEXT-pAllocator-parameter",
4955          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
4956        },
4957        {
4958          "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-parent",
4959          "text": " If <code>validationCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
4960        }
4961      ]
4962    },
4963    "vkCreateComputePipelines": {
4964      "core": [
4965        {
4966          "vuid": "VUID-vkCreateComputePipelines-flags-00695",
4967          "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and the <code>basePipelineIndex</code> member of that same element is not <code>-1</code>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be less than the index into <code>pCreateInfos</code> that corresponds to that element"
4968        },
4969        {
4970          "vuid": "VUID-vkCreateComputePipelines-flags-00696",
4971          "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, the base pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT</code> flag set"
4972        },
4973        {
4974          "vuid": "VUID-vkCreateComputePipelines-device-parameter",
4975          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
4976        },
4977        {
4978          "vuid": "VUID-vkCreateComputePipelines-pipelineCache-parameter",
4979          "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle"
4980        },
4981        {
4982          "vuid": "VUID-vkCreateComputePipelines-pCreateInfos-parameter",
4983          "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <code>VkComputePipelineCreateInfo</code> structures"
4984        },
4985        {
4986          "vuid": "VUID-vkCreateComputePipelines-pAllocator-parameter",
4987          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
4988        },
4989        {
4990          "vuid": "VUID-vkCreateComputePipelines-pPipelines-parameter",
4991          "text": " <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <code>VkPipeline</code> handles"
4992        },
4993        {
4994          "vuid": "VUID-vkCreateComputePipelines-createInfoCount-arraylength",
4995          "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
4996        },
4997        {
4998          "vuid": "VUID-vkCreateComputePipelines-pipelineCache-parent",
4999          "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
5000        }
5001      ]
5002    },
5003    "VkComputePipelineCreateInfo": {
5004      "core": [
5005        {
5006          "vuid": "VUID-VkComputePipelineCreateInfo-flags-00697",
5007          "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be a valid handle to a compute <code>VkPipeline</code>"
5008        },
5009        {
5010          "vuid": "VUID-VkComputePipelineCreateInfo-flags-00698",
5011          "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be a valid index into the calling command&#8217;s <code>pCreateInfos</code> parameter"
5012        },
5013        {
5014          "vuid": "VUID-VkComputePipelineCreateInfo-flags-00699",
5015          "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is not -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
5016        },
5017        {
5018          "vuid": "VUID-VkComputePipelineCreateInfo-flags-00700",
5019          "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be -1"
5020        },
5021        {
5022          "vuid": "VUID-VkComputePipelineCreateInfo-stage-00701",
5023          "text": " The <code>stage</code> member of <code>stage</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_COMPUTE_BIT</code>"
5024        },
5025        {
5026          "vuid": "VUID-VkComputePipelineCreateInfo-stage-00702",
5027          "text": " The shader code for the entry point identified by <code>stage</code> and the rest of the state identified by this structure <strong class=\"purple\">must</strong> adhere to the pipeline linking rules described in the <a href=\"#interfaces\">Shader Interfaces</a> chapter"
5028        },
5029        {
5030          "vuid": "VUID-VkComputePipelineCreateInfo-layout-00703",
5031          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-pipelinelayout-consistency\">consistent</a> with the layout of the compute shader specified in <code>stage</code>"
5032        },
5033        {
5034          "vuid": "VUID-VkComputePipelineCreateInfo-layout-01687",
5035          "text": " The number of resources in <code>layout</code> accessible to the compute shader stage <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageResources</code>"
5036        },
5037        {
5038          "vuid": "VUID-VkComputePipelineCreateInfo-sType-sType",
5039          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO</code>"
5040        },
5041        {
5042          "vuid": "VUID-VkComputePipelineCreateInfo-pNext-pNext",
5043          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
5044        },
5045        {
5046          "vuid": "VUID-VkComputePipelineCreateInfo-flags-parameter",
5047          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values"
5048        },
5049        {
5050          "vuid": "VUID-VkComputePipelineCreateInfo-stage-parameter",
5051          "text": " <code>stage</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineShaderStageCreateInfo</code> structure"
5052        },
5053        {
5054          "vuid": "VUID-VkComputePipelineCreateInfo-layout-parameter",
5055          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
5056        },
5057        {
5058          "vuid": "VUID-VkComputePipelineCreateInfo-commonparent",
5059          "text": " Both of <code>basePipelineHandle</code>, and <code>layout</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
5060        }
5061      ]
5062    },
5063    "VkPipelineShaderStageCreateInfo": {
5064      "core": [
5065        {
5066          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00704",
5067          "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>"
5068        },
5069        {
5070          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00705",
5071          "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> or <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>"
5072        },
5073        {
5074          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00706",
5075          "text": " <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_ALL_GRAPHICS</code>, or <code>VK_SHADER_STAGE_ALL</code>"
5076        },
5077        {
5078          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pName-00707",
5079          "text": " <code>pName</code> <strong class=\"purple\">must</strong> be the name of an <code>OpEntryPoint</code> in <code>module</code> with an execution model that matches <code>stage</code>"
5080        },
5081        {
5082          "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxClipDistances-00708",
5083          "text": " If the identified entry point includes any variable in its interface that is declared with the <code>ClipDistance</code> <code>BuiltIn</code> decoration, that variable <strong class=\"purple\">must</strong> not have an array size greater than <code>VkPhysicalDeviceLimits</code>::<code>maxClipDistances</code>"
5084        },
5085        {
5086          "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxCullDistances-00709",
5087          "text": " If the identified entry point includes any variable in its interface that is declared with the <code>CullDistance</code> <code>BuiltIn</code> decoration, that variable <strong class=\"purple\">must</strong> not have an array size greater than <code>VkPhysicalDeviceLimits</code>::<code>maxCullDistances</code>"
5088        },
5089        {
5090          "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxCombinedClipAndCullDistances-00710",
5091          "text": " If the identified entry point includes any variables in its interface that are declared with the <code>ClipDistance</code> or <code>CullDistance</code> <code>BuiltIn</code> decoration, those variables <strong class=\"purple\">must</strong> not have array sizes which sum to more than <code>VkPhysicalDeviceLimits</code>::<code>maxCombinedClipAndCullDistances</code>"
5092        },
5093        {
5094          "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxSampleMaskWords-00711",
5095          "text": " If the identified entry point includes any variable in its interface that is declared with the <code>SampleMask</code> <code>BuiltIn</code> decoration, that variable <strong class=\"purple\">must</strong> not have an array size greater than <code>VkPhysicalDeviceLimits</code>::<code>maxSampleMaskWords</code>"
5096        },
5097        {
5098          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00712",
5099          "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_VERTEX_BIT</code>, the identified entry point <strong class=\"purple\">must</strong> not include any input variable in its interface that is decorated with <code>CullDistance</code>"
5100        },
5101        {
5102          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00713",
5103          "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> or <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>, and the identified entry point has an <code>OpExecutionMode</code> instruction that specifies a patch size with <code>OutputVertices</code>, the patch size <strong class=\"purple\">must</strong> be greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxTessellationPatchSize</code>"
5104        },
5105        {
5106          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00714",
5107          "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>, the identified entry point <strong class=\"purple\">must</strong> have an <code>OpExecutionMode</code> instruction that specifies a maximum output vertex count that is greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxGeometryOutputVertices</code>"
5108        },
5109        {
5110          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00715",
5111          "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>, the identified entry point <strong class=\"purple\">must</strong> have an <code>OpExecutionMode</code> instruction that specifies an invocation count that is greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxGeometryShaderInvocations</code>"
5112        },
5113        {
5114          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02596",
5115          "text": " If <code>stage</code> is a vertex processing stage, and the identified entry point writes to <code>Layer</code> for any primitive, it <strong class=\"purple\">must</strong> write the same value to <code>Layer</code> for all vertices of a given primitive"
5116        },
5117        {
5118          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02597",
5119          "text": " If <code>stage</code> is a vertex processing stage, and the identified entry point writes to <code>ViewportIndex</code> for any primitive, it <strong class=\"purple\">must</strong> write the same value to <code>ViewportIndex</code> for all vertices of a given primitive"
5120        },
5121        {
5122          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00718",
5123          "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>, the identified entry point <strong class=\"purple\">must</strong> not include any output variables in its interface decorated with <code>CullDistance</code>"
5124        },
5125        {
5126          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00719",
5127          "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>, and the identified entry point writes to <code>FragDepth</code> in any execution path, it <strong class=\"purple\">must</strong> write to <code>FragDepth</code> in all execution paths"
5128        },
5129        {
5130          "vuid": "VUID-VkPipelineShaderStageCreateInfo-sType-sType",
5131          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO</code>"
5132        },
5133        {
5134          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-pNext",
5135          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
5136        },
5137        {
5138          "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-zerobitmask",
5139          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
5140        },
5141        {
5142          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-parameter",
5143          "text": " <code>stage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> value"
5144        },
5145        {
5146          "vuid": "VUID-VkPipelineShaderStageCreateInfo-module-parameter",
5147          "text": " <code>module</code> <strong class=\"purple\">must</strong> be a valid <code>VkShaderModule</code> handle"
5148        },
5149        {
5150          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pName-parameter",
5151          "text": " <code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
5152        },
5153        {
5154          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-parameter",
5155          "text": " If <code>pSpecializationInfo</code> is not <code>NULL</code>, <code>pSpecializationInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSpecializationInfo</code> structure"
5156        }
5157      ],
5158      "(VK_NV_mesh_shader)": [
5159        {
5160          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02091",
5161          "text": " If the <a href=\"#features-meshShader\">mesh shader</a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_MESH_BIT_NV</code>"
5162        },
5163        {
5164          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02092",
5165          "text": " If the <a href=\"#features-taskShader\">task shader</a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_TASK_BIT_NV</code>"
5166        },
5167        {
5168          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02093",
5169          "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_MESH_BIT_NV</code>, the identified entry point <strong class=\"purple\">must</strong> have an <code>OpExecutionMode</code> instruction that specifies a maximum output vertex count, <code>OutputVertices</code>, that is greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesNV</code>::<code>maxMeshOutputVertices</code>."
5170        },
5171        {
5172          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02094",
5173          "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_MESH_BIT_NV</code>, the identified entry point <strong class=\"purple\">must</strong> have an <code>OpExecutionMode</code> instruction that specifies a maximum output primitive count, <code>OutputPrimitivesNV</code>, that is greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesNV</code>::<code>maxMeshOutputPrimitives</code>."
5174        }
5175      ],
5176      "(VK_EXT_shader_stencil_export)": [
5177        {
5178          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-01511",
5179          "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>, and the identified entry point writes to <code>FragStencilRefEXT</code> in any execution path, it <strong class=\"purple\">must</strong> write to <code>FragStencilRefEXT</code> in all execution paths"
5180        }
5181      ]
5182    },
5183    "vkCreateGraphicsPipelines": {
5184      "core": [
5185        {
5186          "vuid": "VUID-vkCreateGraphicsPipelines-flags-00720",
5187          "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and the <code>basePipelineIndex</code> member of that same element is not <code>-1</code>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be less than the index into <code>pCreateInfos</code> that corresponds to that element"
5188        },
5189        {
5190          "vuid": "VUID-vkCreateGraphicsPipelines-flags-00721",
5191          "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, the base pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT</code> flag set"
5192        },
5193        {
5194          "vuid": "VUID-vkCreateGraphicsPipelines-device-parameter",
5195          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
5196        },
5197        {
5198          "vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-parameter",
5199          "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle"
5200        },
5201        {
5202          "vuid": "VUID-vkCreateGraphicsPipelines-pCreateInfos-parameter",
5203          "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <code>VkGraphicsPipelineCreateInfo</code> structures"
5204        },
5205        {
5206          "vuid": "VUID-vkCreateGraphicsPipelines-pAllocator-parameter",
5207          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
5208        },
5209        {
5210          "vuid": "VUID-vkCreateGraphicsPipelines-pPipelines-parameter",
5211          "text": " <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <code>VkPipeline</code> handles"
5212        },
5213        {
5214          "vuid": "VUID-vkCreateGraphicsPipelines-createInfoCount-arraylength",
5215          "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
5216        },
5217        {
5218          "vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-parent",
5219          "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
5220        }
5221      ]
5222    },
5223    "VkGraphicsPipelineCreateInfo": {
5224      "core": [
5225        {
5226          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00722",
5227          "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be a valid handle to a graphics <code>VkPipeline</code>"
5228        },
5229        {
5230          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00723",
5231          "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be a valid index into the calling command&#8217;s <code>pCreateInfos</code> parameter"
5232        },
5233        {
5234          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00724",
5235          "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is not -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
5236        },
5237        {
5238          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00725",
5239          "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be -1"
5240        },
5241        {
5242          "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-00726",
5243          "text": " The <code>stage</code> member of each element of <code>pStages</code> <strong class=\"purple\">must</strong> be unique"
5244        },
5245        {
5246          "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-00728",
5247          "text": " The <code>stage</code> member of each element of <code>pStages</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_COMPUTE_BIT</code>"
5248        },
5249        {
5250          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00729",
5251          "text": " If <code>pStages</code> includes a tessellation control shader stage, it <strong class=\"purple\">must</strong> include a tessellation evaluation shader stage"
5252        },
5253        {
5254          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00730",
5255          "text": " If <code>pStages</code> includes a tessellation evaluation shader stage, it <strong class=\"purple\">must</strong> include a tessellation control shader stage"
5256        },
5257        {
5258          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00731",
5259          "text": " If <code>pStages</code> includes a tessellation control shader stage and a tessellation evaluation shader stage, <code>pTessellationState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineTessellationStateCreateInfo</code> structure"
5260        },
5261        {
5262          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00732",
5263          "text": " If <code>pStages</code> includes tessellation shader stages, the shader code of at least one stage <strong class=\"purple\">must</strong> contain an <code>OpExecutionMode</code> instruction that specifies the type of subdivision in the pipeline"
5264        },
5265        {
5266          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00733",
5267          "text": " If <code>pStages</code> includes tessellation shader stages, and the shader code of both stages contain an <code>OpExecutionMode</code> instruction that specifies the type of subdivision in the pipeline, they <strong class=\"purple\">must</strong> both specify the same subdivision mode"
5268        },
5269        {
5270          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00734",
5271          "text": " If <code>pStages</code> includes tessellation shader stages, the shader code of at least one stage <strong class=\"purple\">must</strong> contain an <code>OpExecutionMode</code> instruction that specifies the output patch size in the pipeline"
5272        },
5273        {
5274          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00735",
5275          "text": " If <code>pStages</code> includes tessellation shader stages, and the shader code of both contain an <code>OpExecutionMode</code> instruction that specifies the out patch size in the pipeline, they <strong class=\"purple\">must</strong> both specify the same patch size"
5276        },
5277        {
5278          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00736",
5279          "text": " If <code>pStages</code> includes tessellation shader stages, the <code>topology</code> member of <code>pInputAssembly</code> <strong class=\"purple\">must</strong> be <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>"
5280        },
5281        {
5282          "vuid": "VUID-VkGraphicsPipelineCreateInfo-topology-00737",
5283          "text": " If the <code>topology</code> member of <code>pInputAssembly</code> is <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, <code>pStages</code> <strong class=\"purple\">must</strong> include tessellation shader stages"
5284        },
5285        {
5286          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00738",
5287          "text": " If <code>pStages</code> includes a geometry shader stage, and does not include any tessellation shader stages, its shader code <strong class=\"purple\">must</strong> contain an <code>OpExecutionMode</code> instruction that specifies an input primitive type that is <a href=\"#shaders-geometry-execution\">compatible</a> with the primitive topology specified in <code>pInputAssembly</code>"
5288        },
5289        {
5290          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00739",
5291          "text": " If <code>pStages</code> includes a geometry shader stage, and also includes tessellation shader stages, its shader code <strong class=\"purple\">must</strong> contain an <code>OpExecutionMode</code> instruction that specifies an input primitive type that is <a href=\"#shaders-geometry-execution\">compatible</a> with the primitive topology that is output by the tessellation stages"
5292        },
5293        {
5294          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00740",
5295          "text": " If <code>pStages</code> includes a fragment shader stage and a geometry shader stage, and the fragment shader code reads from an input variable that is decorated with <code>PrimitiveID</code>, then the geometry shader code <strong class=\"purple\">must</strong> write to a matching output variable, decorated with <code>PrimitiveID</code>, in all execution paths"
5296        },
5297        {
5298          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00741",
5299          "text": " If <code>pStages</code> includes a fragment shader stage, its shader code <strong class=\"purple\">must</strong> not read from any input attachment that is defined as <code>VK_ATTACHMENT_UNUSED</code> in <code>subpass</code>"
5300        },
5301        {
5302          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00742",
5303          "text": " The shader code for the entry points identified by <code>pStages</code>, and the rest of the state identified by this structure <strong class=\"purple\">must</strong> adhere to the pipeline linking rules described in the <a href=\"#interfaces\">Shader Interfaces</a> chapter"
5304        },
5305        {
5306          "vuid": "VUID-VkGraphicsPipelineCreateInfo-blendEnable-02023",
5307          "text": " If rasterization is not disabled and the subpass uses color attachments, then for each color attachment in the subpass the <code>blendEnable</code> member of the corresponding element of the <code>pAttachment</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code> if the attached image&#8217;s <a href=\"#resources-image-format-features\">format features</a> does not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>."
5308        },
5309        {
5310          "vuid": "VUID-VkGraphicsPipelineCreateInfo-attachmentCount-00746",
5311          "text": " If rasterization is not disabled and the subpass uses color attachments, the <code>attachmentCount</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be equal to the <code>colorAttachmentCount</code> used to create <code>subpass</code>"
5312        },
5313        {
5314          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00747",
5315          "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_VIEWPORT</code>, the <code>pViewports</code> member of <code>pViewportState</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pViewportState</code>::<code>viewportCount</code> valid <code>VkViewport</code> structures"
5316        },
5317        {
5318          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00748",
5319          "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_SCISSOR</code>, the <code>pScissors</code> member of <code>pViewportState</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pViewportState</code>::<code>scissorCount</code> <code>VkRect2D</code> structures"
5320        },
5321        {
5322          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00749",
5323          "text": " If the wide lines feature is not enabled, and no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_LINE_WIDTH</code>, the <code>lineWidth</code> member of <code>pRasterizationState</code> <strong class=\"purple\">must</strong> be <code>1.0</code>"
5324        },
5325        {
5326          "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00750",
5327          "text": " If the <code>rasterizerDiscardEnable</code> member of <code>pRasterizationState</code> is <code>VK_FALSE</code>, <code>pViewportState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineViewportStateCreateInfo</code> structure"
5328        },
5329        {
5330          "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00751",
5331          "text": " If the <code>rasterizerDiscardEnable</code> member of <code>pRasterizationState</code> is <code>VK_FALSE</code>, <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineMultisampleStateCreateInfo</code> structure"
5332        },
5333        {
5334          "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00752",
5335          "text": " If the <code>rasterizerDiscardEnable</code> member of <code>pRasterizationState</code> is <code>VK_FALSE</code>, and <code>subpass</code> uses a depth/stencil attachment, <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineDepthStencilStateCreateInfo</code> structure"
5336        },
5337        {
5338          "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00753",
5339          "text": " If the <code>rasterizerDiscardEnable</code> member of <code>pRasterizationState</code> is <code>VK_FALSE</code>, and <code>subpass</code> uses color attachments, <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineColorBlendStateCreateInfo</code> structure"
5340        },
5341        {
5342          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00754",
5343          "text": " If the depth bias clamping feature is not enabled, no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code>, and the <code>depthBiasEnable</code> member of <code>pRasterizationState</code> is <code>VK_TRUE</code>, the <code>depthBiasClamp</code> member of <code>pRasterizationState</code> <strong class=\"purple\">must</strong> be <code>0.0</code>"
5344        },
5345        {
5346          "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-00756",
5347          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-pipelinelayout-consistency\">consistent</a> with all shaders specified in <code>pStages</code>"
5348        },
5349        {
5350          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00757",
5351          "text": " If neither the <code>VK_AMD_mixed_attachment_samples</code> nor the <code>VK_NV_framebuffer_mixed_samples</code> extensions are enabled, and if <code>subpass</code> uses color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be the same as the sample count for those subpass attachments"
5352        },
5353        {
5354          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00758",
5355          "text": " If <code>subpass</code> does not use any color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> follow the rules for a <a href=\"#renderpass-noattachments\">zero-attachment subpass</a>"
5356        },
5357        {
5358          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00759",
5359          "text": " <code>subpass</code> <strong class=\"purple\">must</strong> be a valid subpass within <code>renderPass</code>"
5360        },
5361        {
5362          "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-01688",
5363          "text": " The number of resources in <code>layout</code> accessible to each shader stage that is used by the pipeline <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageResources</code>"
5364        },
5365        {
5366          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02097",
5367          "text": " If <code>pStages</code> includes a vertex shader stage, <code>pVertexInputState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineVertexInputStateCreateInfo\">VkPipelineVertexInputStateCreateInfo</a> structure"
5368        },
5369        {
5370          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02098",
5371          "text": " If <code>pStages</code> includes a vertex shader stage, <code>pInputAssemblyState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a> structure"
5372        },
5373        {
5374          "vuid": "VUID-VkGraphicsPipelineCreateInfo-sType-sType",
5375          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO</code>"
5376        },
5377        {
5378          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pNext-pNext",
5379          "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a> or <a href=\"#VkPipelineRepresentativeFragmentTestStateCreateInfoNV\">VkPipelineRepresentativeFragmentTestStateCreateInfoNV</a>"
5380        },
5381        {
5382          "vuid": "VUID-VkGraphicsPipelineCreateInfo-sType-unique",
5383          "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
5384        },
5385        {
5386          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-parameter",
5387          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values"
5388        },
5389        {
5390          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-parameter",
5391          "text": " <code>pStages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stageCount</code> valid <code>VkPipelineShaderStageCreateInfo</code> structures"
5392        },
5393        {
5394          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-parameter",
5395          "text": " <code>pRasterizationState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineRasterizationStateCreateInfo</code> structure"
5396        },
5397        {
5398          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-parameter",
5399          "text": " If <code>pDynamicState</code> is not <code>NULL</code>, <code>pDynamicState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineDynamicStateCreateInfo</code> structure"
5400        },
5401        {
5402          "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-parameter",
5403          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
5404        },
5405        {
5406          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-parameter",
5407          "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code> handle"
5408        },
5409        {
5410          "vuid": "VUID-VkGraphicsPipelineCreateInfo-stageCount-arraylength",
5411          "text": " <code>stageCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
5412        },
5413        {
5414          "vuid": "VUID-VkGraphicsPipelineCreateInfo-commonparent",
5415          "text": " Each of <code>basePipelineHandle</code>, <code>layout</code>, and <code>renderPass</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
5416        }
5417      ],
5418      "!(VK_NV_mesh_shader)": [
5419        {
5420          "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-00727",
5421          "text": " The <code>stage</code> member of one element of <code>pStages</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_VERTEX_BIT</code>"
5422        }
5423      ],
5424      "(VK_NV_mesh_shader)": [
5425        {
5426          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02095",
5427          "text": " The geometric shader stages provided in <code>pStages</code> <strong class=\"purple\">must</strong> be either from the mesh shading pipeline (<code>stage</code> is <code>VK_SHADER_STAGE_TASK_BIT_NV</code> or <code>VK_SHADER_STAGE_MESH_BIT_NV</code>) or from the primitive shading pipeline (<code>stage</code> is <code>VK_SHADER_STAGE_VERTEX_BIT</code>, <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>, <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>, or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>)."
5428        },
5429        {
5430          "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-02096",
5431          "text": " The <code>stage</code> member of one element of <code>pStages</code> <strong class=\"purple\">must</strong> be either <code>VK_SHADER_STAGE_VERTEX_BIT</code> or <code>VK_SHADER_STAGE_MESH_BIT_NV</code>."
5432        }
5433      ],
5434      "!(VK_VERSION_1_1,VK_KHR_maintenance2)": [
5435        {
5436          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00743",
5437          "text": " If rasterization is not disabled and <code>subpass</code> uses a depth/stencil attachment in <code>renderPass</code> that has a layout of <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> in the <code>VkAttachmentReference</code> defined by <code>subpass</code>, the <code>depthWriteEnable</code> member of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
5438        },
5439        {
5440          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00744",
5441          "text": " If rasterization is not disabled and <code>subpass</code> uses a depth/stencil attachment in <code>renderPass</code> that has a layout of <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> in the <code>VkAttachmentReference</code> defined by <code>subpass</code>, the <code>failOp</code>, <code>passOp</code> and <code>depthFailOp</code> members of each of the <code>front</code> and <code>back</code> members of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>"
5442        }
5443      ],
5444      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
5445        {
5446          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01756",
5447          "text": " If rasterization is not disabled and <code>subpass</code> uses a depth/stencil attachment in <code>renderPass</code> that has a layout of <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code> in the <code>VkAttachmentReference</code> defined by <code>subpass</code>, the <code>depthWriteEnable</code> member of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
5448        },
5449        {
5450          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01757",
5451          "text": " If rasterization is not disabled and <code>subpass</code> uses a depth/stencil attachment in <code>renderPass</code> that has a layout of <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code> in the <code>VkAttachmentReference</code> defined by <code>subpass</code>, the <code>failOp</code>, <code>passOp</code> and <code>depthFailOp</code> members of each of the <code>front</code> and <code>back</code> members of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>"
5452        },
5453        {
5454          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-01565",
5455          "text": " If <code>pStages</code> includes a fragment shader stage and an input attachment was referenced by the <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a> at <code>renderPass</code> create time, its shader code <strong class=\"purple\">must</strong> not read from any aspect that was not specified in the <code>aspectMask</code> of the corresponding <a href=\"#VkInputAttachmentAspectReference\">VkInputAttachmentAspectReference</a> structure."
5456        }
5457      ],
5458      "!(VK_EXT_depth_range_unrestricted)": [
5459        {
5460          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00755",
5461          "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code>, and the <code>depthBoundsTestEnable</code> member of <code>pDepthStencilState</code> is <code>VK_TRUE</code>, the <code>minDepthBounds</code> and <code>maxDepthBounds</code> members of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
5462        }
5463      ],
5464      "(VK_EXT_depth_range_unrestricted)": [
5465        {
5466          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-02510",
5467          "text": " If the <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is not enabled and no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code>, and the <code>depthBoundsTestEnable</code> member of <code>pDepthStencilState</code> is <code>VK_TRUE</code>, the <code>minDepthBounds</code> and <code>maxDepthBounds</code> members of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
5468        }
5469      ],
5470      "(VK_EXT_sample_locations)": [
5471        {
5472          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01521",
5473          "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code>, and the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure chained to the <code>pNext</code> chain of <code>pMultisampleState</code> is <code>VK_TRUE</code>, <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling <code>rasterizationSamples</code>"
5474        },
5475        {
5476          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01522",
5477          "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code>, and the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure chained to the <code>pNext</code> chain of <code>pMultisampleState</code> is <code>VK_TRUE</code>, <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling <code>rasterizationSamples</code>"
5478        },
5479        {
5480          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01523",
5481          "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code>, and the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure chained to the <code>pNext</code> chain of <code>pMultisampleState</code> is <code>VK_TRUE</code>, <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code>"
5482        },
5483        {
5484          "vuid": "VUID-VkGraphicsPipelineCreateInfo-sampleLocationsEnable-01524",
5485          "text": " If the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure chained to the <code>pNext</code> chain of <code>pMultisampleState</code> is <code>VK_TRUE</code>, the fragment shader code <strong class=\"purple\">must</strong> not statically use the extended instruction <code>InterpolateAtSample</code>"
5486        }
5487      ],
5488      "(VK_AMD_mixed_attachment_samples)": [
5489        {
5490          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01505",
5491          "text": " If the <code>VK_AMD_mixed_attachment_samples</code> extension is enabled, and if <code>subpass</code> uses color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> equal the maximum of the sample counts of those subpass attachments"
5492        }
5493      ],
5494      "(VK_NV_framebuffer_mixed_samples)": [
5495        {
5496          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01411",
5497          "text": " If the <code>VK_NV_framebuffer_mixed_samples</code> extension is enabled, and if <code>subpass</code> has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled, then the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be the same as the sample count of the depth/stencil attachment"
5498        },
5499        {
5500          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01412",
5501          "text": " If the <code>VK_NV_framebuffer_mixed_samples</code> extension is enabled, and if <code>subpass</code> has any color attachments, then the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be greater than or equal to the sample count for those subpass attachments"
5502        }
5503      ],
5504      "(VK_VERSION_1_1,VK_KHR_multiview)": [
5505        {
5506          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00760",
5507          "text": " If the <code>renderPass</code> has multiview enabled and <code>subpass</code> has more than one bit set in the view mask and <code>multiviewTessellationShader</code> is not enabled, then <code>pStages</code> <strong class=\"purple\">must</strong> not include tessellation shaders."
5508        },
5509        {
5510          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00761",
5511          "text": " If the <code>renderPass</code> has multiview enabled and <code>subpass</code> has more than one bit set in the view mask and <code>multiviewGeometryShader</code> is not enabled, then <code>pStages</code> <strong class=\"purple\">must</strong> not include a geometry shader."
5512        },
5513        {
5514          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00762",
5515          "text": " If the <code>renderPass</code> has multiview enabled and <code>subpass</code> has more than one bit set in the view mask, shaders in the pipeline <strong class=\"purple\">must</strong> not write to the <code>Layer</code> built-in output"
5516        },
5517        {
5518          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00763",
5519          "text": " If the <code>renderPass</code> has multiview enabled, then all shaders <strong class=\"purple\">must</strong> not include variables decorated with the <code>Layer</code> built-in decoration in their interfaces."
5520        }
5521      ],
5522      "(VK_VERSION_1_1,VK_KHR_device_group)": [
5523        {
5524          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00764",
5525          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not contain the <code>VK_PIPELINE_CREATE_DISPATCH_BASE</code> flag."
5526        }
5527      ],
5528      "(VK_NV_clip_space_w_scaling)": [
5529        {
5530          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01715",
5531          "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code>, and the <code>viewportWScalingEnable</code> member of a <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> structure, chained to the <code>pNext</code> chain of <code>pViewportState</code>, is <code>VK_TRUE</code>, the <code>pViewportWScalings</code> member of the <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> <strong class=\"purple\">must</strong> be a pointer to an array of <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> valid <a href=\"#VkViewportWScalingNV\">VkViewportWScalingNV</a> structures"
5532        }
5533      ],
5534      "(VK_EXT_transform_feedback)": [
5535        {
5536          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02317",
5537          "text": " The <code>Xfb</code> execution mode <strong class=\"purple\">can</strong> be specified by only one shader stage in <code>pStages</code>"
5538        },
5539        {
5540          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02318",
5541          "text": " If any shader stage in <code>pStages</code> specifies <code>Xfb</code> execution mode it <strong class=\"purple\">must</strong> be the last vertex processing stage"
5542        },
5543        {
5544          "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02319",
5545          "text": " If a <code>VkPipelineRasterizationStateStreamCreateInfoEXT</code>::<code>rasterizationStream</code> value other than zero is specified, all variables in the output interface of the entry point being compiled decorated with <code>Position</code>, <code>PointSize</code>, <code>ClipDistance</code>, or <code>CullDistance</code> <strong class=\"purple\">must</strong> all be decorated with identical <code>Stream</code> values that match the <code>rasterizationStream</code>"
5546        },
5547        {
5548          "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02320",
5549          "text": " If <code>VkPipelineRasterizationStateStreamCreateInfoEXT</code>::<code>rasterizationStream</code> is zero, or not specified, all variables in the output interface of the entry point being compiled decorated with <code>Position</code>, <code>PointSize</code>, <code>ClipDistance</code>, or <code>CullDistance</code> <strong class=\"purple\">must</strong> all be decorated with a <code>Stream</code> value of zero, or <strong class=\"purple\">must</strong> not specify the <code>Stream</code> decoration"
5550        },
5551        {
5552          "vuid": "VUID-VkGraphicsPipelineCreateInfo-geometryStreams-02321",
5553          "text": " If the last vertex processing stage is a geometry shader, and that geometry shader uses the <code>GeometryStreams</code> capability, then <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>geometryStreams</code> feature <strong class=\"purple\">must</strong> be enabled"
5554        }
5555      ],
5556      "(VK_EXT_transform_feedback)+(VK_NV_mesh_shader)": [
5557        {
5558          "vuid": "VUID-VkGraphicsPipelineCreateInfo-None-02322",
5559          "text": " If there are any mesh shader stages in the pipeline there <strong class=\"purple\">must</strong> not be any shader stage in the pipeline with a <code>Xfb</code> execution mode."
5560        }
5561      ]
5562    },
5563    "VkPipelineDynamicStateCreateInfo": {
5564      "core": [
5565        {
5566          "vuid": "VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-01442",
5567          "text": " Each element of <code>pDynamicStates</code> <strong class=\"purple\">must</strong> be unique"
5568        },
5569        {
5570          "vuid": "VUID-VkPipelineDynamicStateCreateInfo-sType-sType",
5571          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO</code>"
5572        },
5573        {
5574          "vuid": "VUID-VkPipelineDynamicStateCreateInfo-pNext-pNext",
5575          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
5576        },
5577        {
5578          "vuid": "VUID-VkPipelineDynamicStateCreateInfo-flags-zerobitmask",
5579          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
5580        },
5581        {
5582          "vuid": "VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-parameter",
5583          "text": " If <code>dynamicStateCount</code> is not <code>0</code>, <code>pDynamicStates</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dynamicStateCount</code> valid <a href=\"#VkDynamicState\">VkDynamicState</a> values"
5584        }
5585      ]
5586    },
5587    "vkDestroyPipeline": {
5588      "core": [
5589        {
5590          "vuid": "VUID-vkDestroyPipeline-pipeline-00765",
5591          "text": " All submitted commands that refer to <code>pipeline</code> <strong class=\"purple\">must</strong> have completed execution"
5592        },
5593        {
5594          "vuid": "VUID-vkDestroyPipeline-pipeline-00766",
5595          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>pipeline</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
5596        },
5597        {
5598          "vuid": "VUID-vkDestroyPipeline-pipeline-00767",
5599          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>pipeline</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
5600        },
5601        {
5602          "vuid": "VUID-vkDestroyPipeline-device-parameter",
5603          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
5604        },
5605        {
5606          "vuid": "VUID-vkDestroyPipeline-pipeline-parameter",
5607          "text": " If <code>pipeline</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle"
5608        },
5609        {
5610          "vuid": "VUID-vkDestroyPipeline-pAllocator-parameter",
5611          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
5612        },
5613        {
5614          "vuid": "VUID-vkDestroyPipeline-pipeline-parent",
5615          "text": " If <code>pipeline</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
5616        }
5617      ]
5618    },
5619    "vkCreatePipelineCache": {
5620      "core": [
5621        {
5622          "vuid": "VUID-vkCreatePipelineCache-device-parameter",
5623          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
5624        },
5625        {
5626          "vuid": "VUID-vkCreatePipelineCache-pCreateInfo-parameter",
5627          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineCacheCreateInfo</code> structure"
5628        },
5629        {
5630          "vuid": "VUID-vkCreatePipelineCache-pAllocator-parameter",
5631          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
5632        },
5633        {
5634          "vuid": "VUID-vkCreatePipelineCache-pPipelineCache-parameter",
5635          "text": " <code>pPipelineCache</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPipelineCache</code> handle"
5636        }
5637      ]
5638    },
5639    "VkPipelineCacheCreateInfo": {
5640      "core": [
5641        {
5642          "vuid": "VUID-VkPipelineCacheCreateInfo-initialDataSize-00768",
5643          "text": " If <code>initialDataSize</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be equal to the size of <code>pInitialData</code>, as returned by <code>vkGetPipelineCacheData</code> when <code>pInitialData</code> was originally retrieved"
5644        },
5645        {
5646          "vuid": "VUID-VkPipelineCacheCreateInfo-initialDataSize-00769",
5647          "text": " If <code>initialDataSize</code> is not <code>0</code>, <code>pInitialData</code> <strong class=\"purple\">must</strong> have been retrieved from a previous call to <code>vkGetPipelineCacheData</code>"
5648        },
5649        {
5650          "vuid": "VUID-VkPipelineCacheCreateInfo-sType-sType",
5651          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO</code>"
5652        },
5653        {
5654          "vuid": "VUID-VkPipelineCacheCreateInfo-pNext-pNext",
5655          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
5656        },
5657        {
5658          "vuid": "VUID-VkPipelineCacheCreateInfo-flags-zerobitmask",
5659          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
5660        },
5661        {
5662          "vuid": "VUID-VkPipelineCacheCreateInfo-pInitialData-parameter",
5663          "text": " If <code>initialDataSize</code> is not <code>0</code>, <code>pInitialData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>initialDataSize</code> bytes"
5664        }
5665      ]
5666    },
5667    "vkMergePipelineCaches": {
5668      "core": [
5669        {
5670          "vuid": "VUID-vkMergePipelineCaches-dstCache-00770",
5671          "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> not appear in the list of source caches"
5672        },
5673        {
5674          "vuid": "VUID-vkMergePipelineCaches-device-parameter",
5675          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
5676        },
5677        {
5678          "vuid": "VUID-vkMergePipelineCaches-dstCache-parameter",
5679          "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle"
5680        },
5681        {
5682          "vuid": "VUID-vkMergePipelineCaches-pSrcCaches-parameter",
5683          "text": " <code>pSrcCaches</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>srcCacheCount</code> valid <code>VkPipelineCache</code> handles"
5684        },
5685        {
5686          "vuid": "VUID-vkMergePipelineCaches-srcCacheCount-arraylength",
5687          "text": " <code>srcCacheCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
5688        },
5689        {
5690          "vuid": "VUID-vkMergePipelineCaches-dstCache-parent",
5691          "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
5692        },
5693        {
5694          "vuid": "VUID-vkMergePipelineCaches-pSrcCaches-parent",
5695          "text": " Each element of <code>pSrcCaches</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
5696        }
5697      ]
5698    },
5699    "vkGetPipelineCacheData": {
5700      "core": [
5701        {
5702          "vuid": "VUID-vkGetPipelineCacheData-device-parameter",
5703          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
5704        },
5705        {
5706          "vuid": "VUID-vkGetPipelineCacheData-pipelineCache-parameter",
5707          "text": " <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle"
5708        },
5709        {
5710          "vuid": "VUID-vkGetPipelineCacheData-pDataSize-parameter",
5711          "text": " <code>pDataSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value"
5712        },
5713        {
5714          "vuid": "VUID-vkGetPipelineCacheData-pData-parameter",
5715          "text": " If the value referenced by <code>pDataSize</code> is not <code>0</code>, and <code>pData</code> is not <code>NULL</code>, <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pDataSize</code> bytes"
5716        },
5717        {
5718          "vuid": "VUID-vkGetPipelineCacheData-pipelineCache-parent",
5719          "text": " <code>pipelineCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
5720        }
5721      ]
5722    },
5723    "vkDestroyPipelineCache": {
5724      "core": [
5725        {
5726          "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-00771",
5727          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>pipelineCache</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
5728        },
5729        {
5730          "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-00772",
5731          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>pipelineCache</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
5732        },
5733        {
5734          "vuid": "VUID-vkDestroyPipelineCache-device-parameter",
5735          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
5736        },
5737        {
5738          "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-parameter",
5739          "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle"
5740        },
5741        {
5742          "vuid": "VUID-vkDestroyPipelineCache-pAllocator-parameter",
5743          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
5744        },
5745        {
5746          "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-parent",
5747          "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
5748        }
5749      ]
5750    },
5751    "VkSpecializationInfo": {
5752      "core": [
5753        {
5754          "vuid": "VUID-VkSpecializationInfo-offset-00773",
5755          "text": " The <code>offset</code> member of each element of <code>pMapEntries</code> <strong class=\"purple\">must</strong> be less than <code>dataSize</code>"
5756        },
5757        {
5758          "vuid": "VUID-VkSpecializationInfo-pMapEntries-00774",
5759          "text": " The <code>size</code> member of each element of <code>pMapEntries</code> <strong class=\"purple\">must</strong> be less than or equal to <code>dataSize</code> minus <code>offset</code>"
5760        },
5761        {
5762          "vuid": "VUID-VkSpecializationInfo-pMapEntries-parameter",
5763          "text": " If <code>mapEntryCount</code> is not <code>0</code>, <code>pMapEntries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>mapEntryCount</code> valid <code>VkSpecializationMapEntry</code> structures"
5764        },
5765        {
5766          "vuid": "VUID-VkSpecializationInfo-pData-parameter",
5767          "text": " If <code>dataSize</code> is not <code>0</code>, <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
5768        }
5769      ]
5770    },
5771    "VkSpecializationMapEntry": {
5772      "core": [
5773        {
5774          "vuid": "VUID-VkSpecializationMapEntry-constantID-00776",
5775          "text": " For a <code>constantID</code> specialization constant declared in a shader, <code>size</code> <strong class=\"purple\">must</strong> match the byte size of the <code>constantID</code>. If the specialization constant is of type <code>boolean</code>, <code>size</code> <strong class=\"purple\">must</strong> be the byte size of <code>VkBool32</code>"
5776        }
5777      ]
5778    },
5779    "vkCmdBindPipeline": {
5780      "core": [
5781        {
5782          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00777",
5783          "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
5784        },
5785        {
5786          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00778",
5787          "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
5788        },
5789        {
5790          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00779",
5791          "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, <code>pipeline</code> <strong class=\"purple\">must</strong> be a compute pipeline"
5792        },
5793        {
5794          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00780",
5795          "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, <code>pipeline</code> <strong class=\"purple\">must</strong> be a graphics pipeline"
5796        },
5797        {
5798          "vuid": "VUID-vkCmdBindPipeline-pipeline-00781",
5799          "text": " If the <a href=\"#features-variableMultisampleRate\">variable multisample rate</a> feature is not supported, <code>pipeline</code> is a graphics pipeline, the current subpass has no attachments, and this is not the first call to this function with a graphics pipeline after transitioning to the current subpass, then the sample count specified by this pipeline <strong class=\"purple\">must</strong> match that set in the previous pipeline"
5800        },
5801        {
5802          "vuid": "VUID-vkCmdBindPipeline-commandBuffer-parameter",
5803          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
5804        },
5805        {
5806          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-parameter",
5807          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
5808        },
5809        {
5810          "vuid": "VUID-vkCmdBindPipeline-pipeline-parameter",
5811          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle"
5812        },
5813        {
5814          "vuid": "VUID-vkCmdBindPipeline-commandBuffer-recording",
5815          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
5816        },
5817        {
5818          "vuid": "VUID-vkCmdBindPipeline-commandBuffer-cmdpool",
5819          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
5820        },
5821        {
5822          "vuid": "VUID-vkCmdBindPipeline-commonparent",
5823          "text": " Both of <code>commandBuffer</code>, and <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
5824        }
5825      ],
5826      "(VK_EXT_sample_locations)": [
5827        {
5828          "vuid": "VUID-vkCmdBindPipeline-variableSampleLocations-01525",
5829          "text": " If <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>::<code>variableSampleLocations</code> is <code>VK_FALSE</code>, and <code>pipeline</code> is a graphics pipeline created with a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure having its <code>sampleLocationsEnable</code> member set to <code>VK_TRUE</code> but without <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> enabled then the current render pass instance <strong class=\"purple\">must</strong> have been begun by specifying a <a href=\"#VkRenderPassSampleLocationsBeginInfoEXT\">VkRenderPassSampleLocationsBeginInfoEXT</a> structure whose <code>pPostSubpassSampleLocations</code> member contains an element with a <code>subpassIndex</code> matching the current subpass index and the <code>sampleLocationsInfo</code> member of that element <strong class=\"purple\">must</strong> match the <code>sampleLocationsInfo</code> specified in <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> when the pipeline was created"
5830        }
5831      ],
5832      "(VK_EXT_transform_feedback)": [
5833        {
5834          "vuid": "VUID-vkCmdBindPipeline-None-02323",
5835          "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
5836        }
5837      ],
5838      "(VK_NV_ray_tracing)": [
5839        {
5840          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-02391",
5841          "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
5842        },
5843        {
5844          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-02392",
5845          "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code>, the <code>pipeline</code> <strong class=\"purple\">must</strong> be a ray tracing pipeline"
5846        }
5847      ]
5848    },
5849    "vkGetShaderInfoAMD": {
5850      "(VK_AMD_shader_info)": [
5851        {
5852          "vuid": "VUID-vkGetShaderInfoAMD-device-parameter",
5853          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
5854        },
5855        {
5856          "vuid": "VUID-vkGetShaderInfoAMD-pipeline-parameter",
5857          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle"
5858        },
5859        {
5860          "vuid": "VUID-vkGetShaderInfoAMD-shaderStage-parameter",
5861          "text": " <code>shaderStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> value"
5862        },
5863        {
5864          "vuid": "VUID-vkGetShaderInfoAMD-infoType-parameter",
5865          "text": " <code>infoType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderInfoTypeAMD\">VkShaderInfoTypeAMD</a> value"
5866        },
5867        {
5868          "vuid": "VUID-vkGetShaderInfoAMD-pInfoSize-parameter",
5869          "text": " <code>pInfoSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value"
5870        },
5871        {
5872          "vuid": "VUID-vkGetShaderInfoAMD-pInfo-parameter",
5873          "text": " If the value referenced by <code>pInfoSize</code> is not <code>0</code>, and <code>pInfo</code> is not <code>NULL</code>, <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pInfoSize</code> bytes"
5874        },
5875        {
5876          "vuid": "VUID-vkGetShaderInfoAMD-pipeline-parent",
5877          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
5878        }
5879      ]
5880    },
5881    "vkCreateRayTracingPipelinesNV": {
5882      "(VK_NV_ray_tracing)": [
5883        {
5884          "vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-02402",
5885          "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and the <code>basePipelineIndex</code> member of that same element is not <code>-1</code>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be less than the index into <code>pCreateInfos</code> that corresponds to that element"
5886        },
5887        {
5888          "vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-02403",
5889          "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, the base pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT</code> flag set"
5890        },
5891        {
5892          "vuid": "VUID-vkCreateRayTracingPipelinesNV-device-parameter",
5893          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
5894        },
5895        {
5896          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parameter",
5897          "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle"
5898        },
5899        {
5900          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pCreateInfos-parameter",
5901          "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <code>VkRayTracingPipelineCreateInfoNV</code> structures"
5902        },
5903        {
5904          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pAllocator-parameter",
5905          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
5906        },
5907        {
5908          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pPipelines-parameter",
5909          "text": " <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <code>VkPipeline</code> handles"
5910        },
5911        {
5912          "vuid": "VUID-vkCreateRayTracingPipelinesNV-createInfoCount-arraylength",
5913          "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
5914        },
5915        {
5916          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parent",
5917          "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
5918        }
5919      ]
5920    },
5921    "VkRayTracingPipelineCreateInfoNV": {
5922      "(VK_NV_ray_tracing)": [
5923        {
5924          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02404",
5925          "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is <code>-1</code>, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be a valid handle to a ray tracing <code>VkPipeline</code>"
5926        },
5927        {
5928          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02405",
5929          "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be a valid index into the calling command&#8217;s <code>pCreateInfos</code> parameter"
5930        },
5931        {
5932          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02406",
5933          "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is not <code>-1</code>, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
5934        },
5935        {
5936          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02407",
5937          "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be <code>-1</code>"
5938        },
5939        {
5940          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-stage-02408",
5941          "text": " The <code>stage</code> member of one element of <code>pStages</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_RAYGEN_BIT_NV</code>"
5942        },
5943        {
5944          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pStages-02409",
5945          "text": " The shader code for the entry points identified by <code>pStages</code>, and the rest of the state identified by this structure <strong class=\"purple\">must</strong> adhere to the pipeline linking rules described in the <a href=\"#interfaces\">Shader Interfaces</a> chapter"
5946        },
5947        {
5948          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-02410",
5949          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-pipelinelayout-consistency\">consistent</a> with all shaders specified in <code>pStages</code>"
5950        },
5951        {
5952          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-02411",
5953          "text": " The number of resources in <code>layout</code> accessible to each shader stage that is used by the pipeline <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxPerStageResources</code>"
5954        },
5955        {
5956          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-maxRecursionDepth-02412",
5957          "text": " <code>maxRecursionDepth</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxRecursionDepth</code>"
5958        },
5959        {
5960          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-sType-sType",
5961          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV</code>"
5962        },
5963        {
5964          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pNext-pNext",
5965          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
5966        },
5967        {
5968          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-parameter",
5969          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values"
5970        },
5971        {
5972          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pStages-parameter",
5973          "text": " <code>pStages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stageCount</code> valid <code>VkPipelineShaderStageCreateInfo</code> structures"
5974        },
5975        {
5976          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pGroups-parameter",
5977          "text": " <code>pGroups</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>groupCount</code> valid <code>VkRayTracingShaderGroupCreateInfoNV</code> structures"
5978        },
5979        {
5980          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-parameter",
5981          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
5982        },
5983        {
5984          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-stageCount-arraylength",
5985          "text": " <code>stageCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
5986        },
5987        {
5988          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-groupCount-arraylength",
5989          "text": " <code>groupCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
5990        },
5991        {
5992          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-commonparent",
5993          "text": " Both of <code>basePipelineHandle</code>, and <code>layout</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
5994        }
5995      ]
5996    },
5997    "VkRayTracingShaderGroupCreateInfoNV": {
5998      "(VK_NV_ray_tracing)": [
5999        {
6000          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02413",
6001          "text": " If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV</code> then <code>generalShader</code> <strong class=\"purple\">must</strong> be a valid index into <code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_RAYGEN_BIT_NV</code>, <code>VK_SHADER_STAGE_MISS_BIT_NV</code>, or <code>VK_SHADER_STAGE_CALLABLE_BIT_NV</code>"
6002        },
6003        {
6004          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02414",
6005          "text": " If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV</code> then <code>closestHitShader</code>, <code>anyHitShader</code>, and <code>intersectionShader</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_UNUSED_NV</code>"
6006        },
6007        {
6008          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02415",
6009          "text": " If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV</code> then <code>intersectionShader</code> <strong class=\"purple\">must</strong> be a valid index into <code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_INTERSECTION_BIT_NV</code>"
6010        },
6011        {
6012          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02416",
6013          "text": " If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV</code> then <code>intersectionShader</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_UNUSED_NV</code>"
6014        },
6015        {
6016          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-closestHitShader-02417",
6017          "text": " <code>closestHitShader</code> <strong class=\"purple\">must</strong> be either <code>VK_SHADER_UNUSED_NV</code> or a valid index into <code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV</code>"
6018        },
6019        {
6020          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-anyHitShader-02418",
6021          "text": " <code>anyHitShader</code> <strong class=\"purple\">must</strong> be either <code>VK_SHADER_UNUSED_NV</code> or a valid index into <code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_ANY_HIT_BIT_NV</code>"
6022        },
6023        {
6024          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-sType-sType",
6025          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV</code>"
6026        },
6027        {
6028          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-pNext-pNext",
6029          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
6030        },
6031        {
6032          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-parameter",
6033          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRayTracingShaderGroupTypeNV\">VkRayTracingShaderGroupTypeNV</a> value"
6034        }
6035      ]
6036    },
6037    "vkGetRayTracingShaderGroupHandlesNV": {
6038      "(VK_NV_ray_tracing)": [
6039        {
6040          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-firstGroup-02419",
6041          "text": " The sum of <code>firstGroup</code> and <code>groupCount</code> <strong class=\"purple\">must</strong> be less than the number of shader groups in <code>pipeline</code>."
6042        },
6043        {
6044          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-dataSize-02420",
6045          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be at least <span class=\"eq\"><code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code> {times} <code>groupCount</code></span>"
6046        },
6047        {
6048          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-device-parameter",
6049          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
6050        },
6051        {
6052          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-pipeline-parameter",
6053          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle"
6054        },
6055        {
6056          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-pData-parameter",
6057          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
6058        },
6059        {
6060          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-dataSize-arraylength",
6061          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
6062        },
6063        {
6064          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-pipeline-parent",
6065          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
6066        }
6067      ]
6068    },
6069    "vkCompileDeferredNV": {
6070      "(VK_NV_ray_tracing)": [
6071        {
6072          "vuid": "VUID-vkCompileDeferredNV-pipeline-02237",
6073          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV</code>"
6074        },
6075        {
6076          "vuid": "VUID-vkCompileDeferredNV-shader-02238",
6077          "text": " <code>shader</code> <strong class=\"purple\">must</strong> not have been called as a deferred compile before"
6078        },
6079        {
6080          "vuid": "VUID-vkCompileDeferredNV-device-parameter",
6081          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
6082        },
6083        {
6084          "vuid": "VUID-vkCompileDeferredNV-pipeline-parameter",
6085          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle"
6086        },
6087        {
6088          "vuid": "VUID-vkCompileDeferredNV-pipeline-parent",
6089          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
6090        }
6091      ]
6092    },
6093    "VkAllocationCallbacks": {
6094      "core": [
6095        {
6096          "vuid": "VUID-VkAllocationCallbacks-pfnAllocation-00632",
6097          "text": " <code>pfnAllocation</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid user-defined <a href=\"#PFN_vkAllocationFunction\">PFN_vkAllocationFunction</a>"
6098        },
6099        {
6100          "vuid": "VUID-VkAllocationCallbacks-pfnReallocation-00633",
6101          "text": " <code>pfnReallocation</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid user-defined <a href=\"#PFN_vkReallocationFunction\">PFN_vkReallocationFunction</a>"
6102        },
6103        {
6104          "vuid": "VUID-VkAllocationCallbacks-pfnFree-00634",
6105          "text": " <code>pfnFree</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid user-defined <a href=\"#PFN_vkFreeFunction\">PFN_vkFreeFunction</a>"
6106        },
6107        {
6108          "vuid": "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635",
6109          "text": " If either of <code>pfnInternalAllocation</code> or <code>pfnInternalFree</code> is not <code>NULL</code>, both <strong class=\"purple\">must</strong> be valid callbacks"
6110        }
6111      ]
6112    },
6113    "vkGetPhysicalDeviceMemoryProperties": {
6114      "core": [
6115        {
6116          "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties-physicalDevice-parameter",
6117          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
6118        },
6119        {
6120          "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties-pMemoryProperties-parameter",
6121          "text": " <code>pMemoryProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceMemoryProperties</code> structure"
6122        }
6123      ]
6124    },
6125    "vkGetPhysicalDeviceMemoryProperties2": {
6126      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
6127        {
6128          "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties2-physicalDevice-parameter",
6129          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
6130        },
6131        {
6132          "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties2-pMemoryProperties-parameter",
6133          "text": " <code>pMemoryProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceMemoryProperties2</code> structure"
6134        }
6135      ]
6136    },
6137    "VkPhysicalDeviceMemoryProperties2": {
6138      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
6139        {
6140          "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-sType-sType",
6141          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2</code>"
6142        },
6143        {
6144          "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-pNext-pNext",
6145          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPhysicalDeviceMemoryBudgetPropertiesEXT\">VkPhysicalDeviceMemoryBudgetPropertiesEXT</a>"
6146        }
6147      ]
6148    },
6149    "VkPhysicalDeviceMemoryBudgetPropertiesEXT": {
6150      "(VK_EXT_memory_budget)": [
6151        {
6152          "vuid": "VUID-VkPhysicalDeviceMemoryBudgetPropertiesEXT-sType-sType",
6153          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT</code>"
6154        }
6155      ]
6156    },
6157    "vkAllocateMemory": {
6158      "core": [
6159        {
6160          "vuid": "VUID-vkAllocateMemory-pAllocateInfo-01713",
6161          "text": " <code>pAllocateInfo</code>-&gt;<code>allocationSize</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a>::<code>memoryHeaps</code>[<code>pAllocateInfo</code>-&gt;<code>memoryTypeIndex</code>].<code>size</code> as returned by <a href=\"#vkGetPhysicalDeviceMemoryProperties\">vkGetPhysicalDeviceMemoryProperties</a> for the <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> that <code>device</code> was created from."
6162        },
6163        {
6164          "vuid": "VUID-vkAllocateMemory-pAllocateInfo-01714",
6165          "text": " <code>pAllocateInfo</code>-&gt;<code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a>::<code>memoryTypeCount</code> as returned by <a href=\"#vkGetPhysicalDeviceMemoryProperties\">vkGetPhysicalDeviceMemoryProperties</a> for the <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> that <code>device</code> was created from."
6166        },
6167        {
6168          "vuid": "VUID-vkAllocateMemory-device-parameter",
6169          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
6170        },
6171        {
6172          "vuid": "VUID-vkAllocateMemory-pAllocateInfo-parameter",
6173          "text": " <code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMemoryAllocateInfo</code> structure"
6174        },
6175        {
6176          "vuid": "VUID-vkAllocateMemory-pAllocator-parameter",
6177          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
6178        },
6179        {
6180          "vuid": "VUID-vkAllocateMemory-pMemory-parameter",
6181          "text": " <code>pMemory</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceMemory</code> handle"
6182        }
6183      ]
6184    },
6185    "VkMemoryAllocateInfo": {
6186      "!(VK_ANDROID_external_memory_android_hardware_buffer)": [
6187        {
6188          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00638",
6189          "text": " <code>allocationSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
6190        }
6191      ],
6192      "(VK_KHR_external_memory)+(VK_KHR_dedicated_allocation,VK_NV_dedicated_allocation)": [
6193        {
6194          "vuid": "VUID-VkMemoryAllocateInfo-pNext-00639",
6195          "text": "     If the <code>pNext</code> chain contains an instance of     <code>VkExportMemoryAllocateInfo</code>, and any of the handle types specified     in <code>VkExportMemoryAllocateInfo</code>::<code>handleTypes</code> require a     dedicated allocation, as reported by     <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a> in     <code>VkExternalImageFormatProperties</code>::<code>externalMemoryProperties</code>::<code>externalMemoryFeatures</code>     or     <code>VkExternalBufferProperties</code>::<code>externalMemoryProperties</code>::<code>externalMemoryFeatures</code>,     the <code>pNext</code> chain must contain an instance of ifdef::VK_KHR_dedicated_allocation[<a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>]"
6196        }
6197      ],
6198      "(VK_KHR_external_memory)+(VK_NV_external_memory)": [
6199        {
6200          "vuid": "VUID-VkMemoryAllocateInfo-pNext-00640",
6201          "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>, it <strong class=\"purple\">must</strong> not contain an instance of <a href=\"#VkExportMemoryAllocateInfoNV\">VkExportMemoryAllocateInfoNV</a> or <a href=\"#VkExportMemoryWin32HandleInfoNV\">VkExportMemoryWin32HandleInfoNV</a>."
6202        }
6203      ],
6204      "(VK_KHR_external_memory_win32+VK_NV_external_memory_win32)": [
6205        {
6206          "vuid": "VUID-VkMemoryAllocateInfo-pNext-00641",
6207          "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkImportMemoryWin32HandleInfoKHR\">VkImportMemoryWin32HandleInfoKHR</a>, it <strong class=\"purple\">must</strong> not contain an instance of <a href=\"#VkImportMemoryWin32HandleInfoNV\">VkImportMemoryWin32HandleInfoNV</a>."
6208        }
6209      ],
6210      "(VK_KHR_external_memory_fd)": [
6211        {
6212          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01742",
6213          "text": " If the parameters define an import operation, the external handle specified was created by the Vulkan API, and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR</code>, then the values of <code>allocationSize</code> and <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> match those specified when the memory object being imported was created."
6214        },
6215        {
6216          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-00648",
6217          "text": " If the parameters define an import operation and the external handle is a POSIX file descriptor created outside of the Vulkan API, the value of <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <a href=\"#vkGetMemoryFdPropertiesKHR\">vkGetMemoryFdPropertiesKHR</a>."
6218        }
6219      ],
6220      "(VK_KHR_external_memory+VK_KHR_device_group)": [
6221        {
6222          "vuid": "VUID-VkMemoryAllocateInfo-None-00643",
6223          "text": " If the parameters define an import operation and the external handle specified was created by the Vulkan API, the device mask specified by <a href=\"#VkMemoryAllocateFlagsInfo\">VkMemoryAllocateFlagsInfo</a> <strong class=\"purple\">must</strong> match that specified when the memory object being imported was allocated."
6224        },
6225        {
6226          "vuid": "VUID-VkMemoryAllocateInfo-None-00644",
6227          "text": " If the parameters define an import operation and the external handle specified was created by the Vulkan API, the list of physical devices that comprise the logical device passed to <a href=\"#vkAllocateMemory\">vkAllocateMemory</a> <strong class=\"purple\">must</strong> match the list of physical devices that comprise the logical device on which the memory was originally allocated."
6228        }
6229      ],
6230      "(VK_KHR_external_memory_win32)": [
6231        {
6232          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-00645",
6233          "text": " If the parameters define an import operation and the external handle is an NT handle or a global share handle created outside of the Vulkan API, the value of <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <a href=\"#vkGetMemoryWin32HandlePropertiesKHR\">vkGetMemoryWin32HandlePropertiesKHR</a>."
6234        },
6235        {
6236          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01743",
6237          "text": " If the parameters define an import operation, the external handle was created by the Vulkan API, and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR</code>, then the values of <code>allocationSize</code> and <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> match those specified when the memory object being imported was created."
6238        },
6239        {
6240          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00646",
6241          "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, <code>allocationSize</code> <strong class=\"purple\">must</strong> match the size reported in the memory requirements of the <code>image</code> or <code>buffer</code> member of the instance of <code>VkDedicatedAllocationMemoryAllocateInfoNV</code> included in the <code>pNext</code> chain."
6242        },
6243        {
6244          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00647",
6245          "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, <code>allocationSize</code> <strong class=\"purple\">must</strong> match the size specified when creating the Direct3D 12 heap from which the external handle was extracted."
6246        }
6247      ],
6248      "(VK_VERSION_1_1)": [
6249        {
6250          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-01872",
6251          "text": " If the protected memory feature is not enabled, the <code>VkMemoryAllocateInfo</code>::<code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> not indicate a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>."
6252        }
6253      ],
6254      "(VK_EXT_external_memory_host)": [
6255        {
6256          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-01744",
6257          "text": " If the parameters define an import operation and the external handle is a host pointer, the value of <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <a href=\"#vkGetMemoryHostPointerPropertiesEXT\">vkGetMemoryHostPointerPropertiesEXT</a>"
6258        },
6259        {
6260          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01745",
6261          "text": " If the parameters define an import operation and the external handle is a host pointer, <code>allocationSize</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>"
6262        }
6263      ],
6264      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
6265        {
6266          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-02383",
6267          "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, <code>allocationSize</code> <strong class=\"purple\">must</strong> be the size returned by <a href=\"#vkGetAndroidHardwareBufferPropertiesANDROID\">vkGetAndroidHardwareBufferPropertiesANDROID</a> for the Android hardware buffer."
6268        },
6269        {
6270          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02384",
6271          "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, and the <code>pNext</code> chain does not contain an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> or <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the Android hardware buffer <strong class=\"purple\">must</strong> have a <code>AHardwareBuffer_Desc</code>::<code>format</code> of <code>AHARDWAREBUFFER_FORMAT_BLOB</code> and a <code>AHardwareBuffer_Desc</code>::<code>usage</code> that includes <code>AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER</code>."
6272        },
6273        {
6274          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-02385",
6275          "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <a href=\"#vkGetAndroidHardwareBufferPropertiesANDROID\">vkGetAndroidHardwareBufferPropertiesANDROID</a> for the Android hardware buffer."
6276        },
6277        {
6278          "vuid": "VUID-VkMemoryAllocateInfo-pNext-01874",
6279          "text": " If the parameters do not define an import operation, and the <code>pNext</code> chain contains an instance of <code>VkExportMemoryAllocateInfo</code> with <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> included in its <code>handleTypes</code> member, and the <code>pNext</code> contains an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>allocationSize</code> <strong class=\"purple\">must</strong> be <code>0</code>, otherwise <code>allocationSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>."
6280        },
6281        {
6282          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02386",
6283          "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the Android hardware buffer&#8217;s <a href=\"#AHardwareBuffer\">AHardwareBuffer</a>::<code>usage</code> <strong class=\"purple\">must</strong> include at least one of <code>AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT</code> or <code>AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE</code>."
6284        },
6285        {
6286          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02387",
6287          "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the format of <code>image</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code> or the format returned by <a href=\"#vkGetAndroidHardwareBufferPropertiesANDROID\">vkGetAndroidHardwareBufferPropertiesANDROID</a> in <a href=\"#VkAndroidHardwareBufferFormatPropertiesANDROID\">VkAndroidHardwareBufferFormatPropertiesANDROID</a>::<code>format</code> for the Android hardware buffer."
6288        },
6289        {
6290          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02388",
6291          "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the width, height, and array layer dimensions of <code>image</code> and the Android hardware buffer&#8217;s <code>AHardwareBuffer_Desc</code> <strong class=\"purple\">must</strong> be identical."
6292        },
6293        {
6294          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02389",
6295          "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the Android hardware buffer&#8217;s <a href=\"#AHardwareBuffer\">AHardwareBuffer</a>::<code>usage</code> includes <code>AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE</code>, the <code>image</code> <strong class=\"purple\">must</strong> have a complete mipmap chain."
6296        },
6297        {
6298          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02586",
6299          "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the Android hardware buffer&#8217;s <a href=\"#AHardwareBuffer\">AHardwareBuffer</a>::<code>usage</code> does not include <code>AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE</code>, the <code>image</code> <strong class=\"purple\">must</strong> have exactly one mipmap level."
6300        },
6301        {
6302          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02390",
6303          "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, each bit set in the usage of <code>image</code> <strong class=\"purple\">must</strong> be listed in <a href=\"#memory-external-android-hardware-buffer-usage\">AHardwareBuffer Usage Equivalence</a>, and if there is a corresponding <code>AHARDWAREBUFFER_USAGE</code> bit listed that bit <strong class=\"purple\">must</strong> be included in the Android hardware buffer&#8217;s <code>AHardwareBuffer_Desc</code>::<code>usage</code>."
6304        }
6305      ],
6306      "core": [
6307        {
6308          "vuid": "VUID-VkMemoryAllocateInfo-sType-sType",
6309          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO</code>"
6310        },
6311        {
6312          "vuid": "VUID-VkMemoryAllocateInfo-pNext-pNext",
6313          "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>, <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>, <a href=\"#VkExportMemoryAllocateInfoNV\">VkExportMemoryAllocateInfoNV</a>, <a href=\"#VkExportMemoryWin32HandleInfoKHR\">VkExportMemoryWin32HandleInfoKHR</a>, <a href=\"#VkExportMemoryWin32HandleInfoNV\">VkExportMemoryWin32HandleInfoNV</a>, <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a>, <a href=\"#VkImportMemoryFdInfoKHR\">VkImportMemoryFdInfoKHR</a>, <a href=\"#VkImportMemoryHostPointerInfoEXT\">VkImportMemoryHostPointerInfoEXT</a>, <a href=\"#VkImportMemoryWin32HandleInfoKHR\">VkImportMemoryWin32HandleInfoKHR</a>, <a href=\"#VkImportMemoryWin32HandleInfoNV\">VkImportMemoryWin32HandleInfoNV</a>, <a href=\"#VkMemoryAllocateFlagsInfo\">VkMemoryAllocateFlagsInfo</a>, <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>, or <a href=\"#VkMemoryPriorityAllocateInfoEXT\">VkMemoryPriorityAllocateInfoEXT</a>"
6314        },
6315        {
6316          "vuid": "VUID-VkMemoryAllocateInfo-sType-unique",
6317          "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
6318        }
6319      ]
6320    },
6321    "VkMemoryDedicatedAllocateInfo": {
6322      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
6323        {
6324          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01432",
6325          "text": " At least one of <code>image</code> and <code>buffer</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
6326        },
6327        {
6328          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01433",
6329          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the image"
6330        },
6331        {
6332          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01434",
6333          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> have been created without <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code> set in <code>VkImageCreateInfo</code>::<code>flags</code>"
6334        },
6335        {
6336          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01435",
6337          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the buffer"
6338        },
6339        {
6340          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01436",
6341          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> have been created without <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code> set in <a href=\"#VkBufferCreateInfo\">VkBufferCreateInfo</a>::<code>flags</code>"
6342        },
6343        {
6344          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-sType-sType",
6345          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO</code>"
6346        },
6347        {
6348          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-parameter",
6349          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
6350        },
6351        {
6352          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-parameter",
6353          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
6354        },
6355        {
6356          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-commonparent",
6357          "text": " Both of <code>buffer</code>, and <code>image</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
6358        }
6359      ],
6360      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_external_memory_win32)": [
6361        {
6362          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01876",
6363          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, and the external handle was created by the Vulkan API, then the memory being imported <strong class=\"purple\">must</strong> also be a dedicated image allocation and <code>image</code> must be identical to the image associated with the imported memory."
6364        },
6365        {
6366          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01877",
6367          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, and the external handle was created by the Vulkan API, then the memory being imported <strong class=\"purple\">must</strong> also be a dedicated buffer allocation and <code>buffer</code> must be identical to the buffer associated with the imported memory."
6368        }
6369      ],
6370      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_external_memory_fd)": [
6371        {
6372          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01878",
6373          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT</code>, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated image allocation and <code>image</code> must be identical to the image associated with the imported memory."
6374        },
6375        {
6376          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01879",
6377          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT</code>, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated buffer allocation and <code>buffer</code> must be identical to the buffer associated with the imported memory."
6378        }
6379      ],
6380      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_sampler_ycbcr_conversion)": [
6381        {
6382          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01797",
6383          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> set in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code>"
6384        }
6385      ]
6386    },
6387    "VkDedicatedAllocationMemoryAllocateInfoNV": {
6388      "(VK_NV_dedicated_allocation)": [
6389        {
6390          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00649",
6391          "text": " At least one of <code>image</code> and <code>buffer</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
6392        },
6393        {
6394          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00650",
6395          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the image <strong class=\"purple\">must</strong> have been created with <code>VkDedicatedAllocationImageCreateInfoNV</code>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>"
6396        },
6397        {
6398          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00651",
6399          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the buffer <strong class=\"purple\">must</strong> have been created with <code>VkDedicatedAllocationBufferCreateInfoNV</code>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>"
6400        },
6401        {
6402          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00652",
6403          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the image"
6404        },
6405        {
6406          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00653",
6407          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the buffer"
6408        },
6409        {
6410          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-sType-sType",
6411          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV</code>"
6412        },
6413        {
6414          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-parameter",
6415          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
6416        },
6417        {
6418          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-parameter",
6419          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
6420        },
6421        {
6422          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-commonparent",
6423          "text": " Both of <code>buffer</code>, and <code>image</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
6424        }
6425      ],
6426      "(VK_NV_dedicated_allocation)+(VK_KHR_external_memory_win32,VK_KHR_external_memory_fd)": [
6427        {
6428          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00654",
6429          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated image allocation and <code>image</code> <strong class=\"purple\">must</strong> be identical to the image associated with the imported memory."
6430        },
6431        {
6432          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00655",
6433          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated buffer allocation and <code>buffer</code> <strong class=\"purple\">must</strong> be identical to the buffer associated with the imported memory."
6434        }
6435      ]
6436    },
6437    "VkMemoryPriorityAllocateInfoEXT": {
6438      "(VK_EXT_memory_priority)": [
6439        {
6440          "vuid": "VUID-VkMemoryPriorityAllocateInfoEXT-priority-02602",
6441          "text": " <code>priority</code> <strong class=\"purple\">must</strong> be between <code>0</code> and <code>1</code>, inclusive"
6442        },
6443        {
6444          "vuid": "VUID-VkMemoryPriorityAllocateInfoEXT-sType-sType",
6445          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT</code>"
6446        }
6447      ]
6448    },
6449    "VkExportMemoryAllocateInfo": {
6450      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
6451        {
6452          "vuid": "VUID-VkExportMemoryAllocateInfo-handleTypes-00656",
6453          "text": " The bits in <code>handleTypes</code> <strong class=\"purple\">must</strong> be supported and compatible, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>."
6454        },
6455        {
6456          "vuid": "VUID-VkExportMemoryAllocateInfo-sType-sType",
6457          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO</code>"
6458        },
6459        {
6460          "vuid": "VUID-VkExportMemoryAllocateInfo-handleTypes-parameter",
6461          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values"
6462        }
6463      ]
6464    },
6465    "VkExportMemoryWin32HandleInfoKHR": {
6466      "(VK_KHR_external_memory_win32)": [
6467        {
6468          "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-handleTypes-00657",
6469          "text": " If <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> does not include <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, <code>VkExportMemoryWin32HandleInfoKHR</code> <strong class=\"purple\">must</strong> not be in the <code>pNext</code> chain of <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a>."
6470        },
6471        {
6472          "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-sType-sType",
6473          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR</code>"
6474        },
6475        {
6476          "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-pAttributes-parameter",
6477          "text": " If <code>pAttributes</code> is not <code>NULL</code>, <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>SECURITY_ATTRIBUTES</code> value"
6478        }
6479      ]
6480    },
6481    "VkImportMemoryWin32HandleInfoKHR": {
6482      "(VK_KHR_external_memory_win32)": [
6483        {
6484          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00658",
6485          "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be supported for import, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>."
6486        },
6487        {
6488          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-00659",
6489          "text": " The memory from which <code>handle</code> was exported, or the memory named by <code>name</code> <strong class=\"purple\">must</strong> have been created on the same underlying physical device as <code>device</code>."
6490        },
6491        {
6492          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00660",
6493          "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle."
6494        },
6495        {
6496          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01439",
6497          "text": " If <code>handleType</code> is not <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>."
6498        },
6499        {
6500          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01440",
6501          "text": " If <code>handleType</code> is not <code>0</code> and <code>handle</code> is <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> name a valid memory resource of the type specified by <code>handleType</code>."
6502        },
6503        {
6504          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00661",
6505          "text": " If <code>handleType</code> is not <code>0</code> and <code>name</code> is <code>NULL</code>, <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>."
6506        },
6507        {
6508          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-01441",
6509          "text": " if <code>handle</code> is not <code>NULL</code>, <code>name</code> must be <code>NULL</code>."
6510        },
6511        {
6512          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-01518",
6513          "text": " If <code>handle</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-memory-handle-types-compatibility\">external memory handle types compatibility</a>."
6514        },
6515        {
6516          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-name-01519",
6517          "text": " If <code>name</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-memory-handle-types-compatibility\">external memory handle types compatibility</a>."
6518        },
6519        {
6520          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-sType-sType",
6521          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR</code>"
6522        },
6523        {
6524          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-parameter",
6525          "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
6526        }
6527      ]
6528    },
6529    "vkGetMemoryWin32HandleKHR": {
6530      "(VK_KHR_external_memory_win32)": [
6531        {
6532          "vuid": "VUID-vkGetMemoryWin32HandleKHR-device-parameter",
6533          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
6534        },
6535        {
6536          "vuid": "VUID-vkGetMemoryWin32HandleKHR-pGetWin32HandleInfo-parameter",
6537          "text": " <code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMemoryGetWin32HandleInfoKHR</code> structure"
6538        },
6539        {
6540          "vuid": "VUID-vkGetMemoryWin32HandleKHR-pHandle-parameter",
6541          "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value"
6542        }
6543      ]
6544    },
6545    "VkMemoryGetWin32HandleInfoKHR": {
6546      "(VK_KHR_external_memory_win32)": [
6547        {
6548          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00662",
6549          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> when <code>memory</code> was created."
6550        },
6551        {
6552          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00663",
6553          "text": " If <code>handleType</code> is defined as an NT handle, <a href=\"#vkGetMemoryWin32HandleKHR\">vkGetMemoryWin32HandleKHR</a> <strong class=\"purple\">must</strong> be called no more than once for each valid unique combination of <code>memory</code> and <code>handleType</code>."
6554        },
6555        {
6556          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00664",
6557          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle."
6558        },
6559        {
6560          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-sType-sType",
6561          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR</code>"
6562        },
6563        {
6564          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-pNext-pNext",
6565          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
6566        },
6567        {
6568          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-memory-parameter",
6569          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
6570        },
6571        {
6572          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-parameter",
6573          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
6574        }
6575      ]
6576    },
6577    "vkGetMemoryWin32HandlePropertiesKHR": {
6578      "(VK_KHR_external_memory_win32)": [
6579        {
6580          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handle-00665",
6581          "text": " <code>handle</code> <strong class=\"purple\">must</strong> be an external memory handle created outside of the Vulkan API."
6582        },
6583        {
6584          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-00666",
6585          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be one of the handle types defined as opaque."
6586        },
6587        {
6588          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-device-parameter",
6589          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
6590        },
6591        {
6592          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-parameter",
6593          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
6594        },
6595        {
6596          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-pMemoryWin32HandleProperties-parameter",
6597          "text": " <code>pMemoryWin32HandleProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryWin32HandlePropertiesKHR</code> structure"
6598        }
6599      ]
6600    },
6601    "VkMemoryWin32HandlePropertiesKHR": {
6602      "(VK_KHR_external_memory_win32)": [
6603        {
6604          "vuid": "VUID-VkMemoryWin32HandlePropertiesKHR-sType-sType",
6605          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR</code>"
6606        },
6607        {
6608          "vuid": "VUID-VkMemoryWin32HandlePropertiesKHR-pNext-pNext",
6609          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
6610        }
6611      ]
6612    },
6613    "VkImportMemoryFdInfoKHR": {
6614      "(VK_KHR_external_memory_fd)": [
6615        {
6616          "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00667",
6617          "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be supported for import, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>."
6618        },
6619        {
6620          "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-00668",
6621          "text": " The memory from which <code>fd</code> was exported <strong class=\"purple\">must</strong> have been created on the same underlying physical device as <code>device</code>."
6622        },
6623        {
6624          "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00669",
6625          "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle."
6626        },
6627        {
6628          "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00670",
6629          "text": " If <code>handleType</code> is not <code>0</code>, <code>fd</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>."
6630        },
6631        {
6632          "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-01746",
6633          "text": " The memory represented by <code>fd</code> <strong class=\"purple\">must</strong> have been created from a physical device and driver that is compatible with <code>device</code> and <code>handleType</code>, as described in <a href=\"#external-memory-handle-types-compatibility\">External memory handle types compatibility</a>."
6634        },
6635        {
6636          "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-01520",
6637          "text": " <code>fd</code> <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-memory-handle-types-compatibility\">external memory handle types compatibility</a>."
6638        },
6639        {
6640          "vuid": "VUID-VkImportMemoryFdInfoKHR-sType-sType",
6641          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR</code>"
6642        },
6643        {
6644          "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-parameter",
6645          "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
6646        }
6647      ]
6648    },
6649    "vkGetMemoryFdKHR": {
6650      "(VK_KHR_external_memory_fd)": [
6651        {
6652          "vuid": "VUID-vkGetMemoryFdKHR-device-parameter",
6653          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
6654        },
6655        {
6656          "vuid": "VUID-vkGetMemoryFdKHR-pGetFdInfo-parameter",
6657          "text": " <code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMemoryGetFdInfoKHR</code> structure"
6658        },
6659        {
6660          "vuid": "VUID-vkGetMemoryFdKHR-pFd-parameter",
6661          "text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>int</code> value"
6662        }
6663      ]
6664    },
6665    "VkMemoryGetFdInfoKHR": {
6666      "(VK_KHR_external_memory_fd)": [
6667        {
6668          "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-00671",
6669          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> when <code>memory</code> was created."
6670        },
6671        {
6672          "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-00672",
6673          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle."
6674        },
6675        {
6676          "vuid": "VUID-VkMemoryGetFdInfoKHR-sType-sType",
6677          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR</code>"
6678        },
6679        {
6680          "vuid": "VUID-VkMemoryGetFdInfoKHR-pNext-pNext",
6681          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
6682        },
6683        {
6684          "vuid": "VUID-VkMemoryGetFdInfoKHR-memory-parameter",
6685          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
6686        },
6687        {
6688          "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-parameter",
6689          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
6690        }
6691      ]
6692    },
6693    "vkGetMemoryFdPropertiesKHR": {
6694      "(VK_KHR_external_memory_fd)": [
6695        {
6696          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-fd-00673",
6697          "text": " <code>fd</code> <strong class=\"purple\">must</strong> be an external memory handle created outside of the Vulkan API."
6698        },
6699        {
6700          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-handleType-00674",
6701          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR</code>."
6702        },
6703        {
6704          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-device-parameter",
6705          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
6706        },
6707        {
6708          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-handleType-parameter",
6709          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
6710        },
6711        {
6712          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-pMemoryFdProperties-parameter",
6713          "text": " <code>pMemoryFdProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryFdPropertiesKHR</code> structure"
6714        }
6715      ]
6716    },
6717    "VkMemoryFdPropertiesKHR": {
6718      "(VK_KHR_external_memory_fd)": [
6719        {
6720          "vuid": "VUID-VkMemoryFdPropertiesKHR-sType-sType",
6721          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR</code>"
6722        },
6723        {
6724          "vuid": "VUID-VkMemoryFdPropertiesKHR-pNext-pNext",
6725          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
6726        }
6727      ]
6728    },
6729    "VkImportMemoryHostPointerInfoEXT": {
6730      "(VK_EXT_external_memory_host)": [
6731        {
6732          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01747",
6733          "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be supported for import, as reported in <a href=\"#VkExternalMemoryPropertiesKHR\">VkExternalMemoryPropertiesKHR</a>"
6734        },
6735        {
6736          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01748",
6737          "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT</code>"
6738        },
6739        {
6740          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-pHostPointer-01749",
6741          "text": " <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer aligned to an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>"
6742        },
6743        {
6744          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01750",
6745          "text": " If <code>handleType</code> is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT</code>, <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer to <code>allocationSize</code> number of bytes of host memory, where <code>allocationSize</code> is the member of the <code>VkMemoryAllocateInfo</code> structure this structure is chained to"
6746        },
6747        {
6748          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01751",
6749          "text": " If <code>handleType</code> is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT</code>, <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer to <code>allocationSize</code> number of bytes of host mapped foreign memory, where <code>allocationSize</code> is the member of the <code>VkMemoryAllocateInfo</code> structure this structure is chained to"
6750        },
6751        {
6752          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-sType-sType",
6753          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT</code>"
6754        },
6755        {
6756          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-parameter",
6757          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
6758        }
6759      ]
6760    },
6761    "vkGetMemoryHostPointerPropertiesEXT": {
6762      "(VK_EXT_external_memory_host)": [
6763        {
6764          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01752",
6765          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT</code>"
6766        },
6767        {
6768          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-pHostPointer-01753",
6769          "text": " <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer aligned to an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>"
6770        },
6771        {
6772          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01754",
6773          "text": " If <code>handleType</code> is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT</code>, <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer to host memory"
6774        },
6775        {
6776          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01755",
6777          "text": " If <code>handleType</code> is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT</code>, <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer to host mapped foreign memory"
6778        },
6779        {
6780          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-device-parameter",
6781          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
6782        },
6783        {
6784          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-parameter",
6785          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
6786        },
6787        {
6788          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-pMemoryHostPointerProperties-parameter",
6789          "text": " <code>pMemoryHostPointerProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryHostPointerPropertiesEXT</code> structure"
6790        }
6791      ]
6792    },
6793    "VkMemoryHostPointerPropertiesEXT": {
6794      "(VK_EXT_external_memory_host)": [
6795        {
6796          "vuid": "VUID-VkMemoryHostPointerPropertiesEXT-sType-sType",
6797          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT</code>"
6798        },
6799        {
6800          "vuid": "VUID-VkMemoryHostPointerPropertiesEXT-pNext-pNext",
6801          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
6802        }
6803      ]
6804    },
6805    "VkImportAndroidHardwareBufferInfoANDROID": {
6806      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
6807        {
6808          "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01880",
6809          "text": " If <code>buffer</code> is not <code>NULL</code>, Android hardware buffers <strong class=\"purple\">must</strong> be supported for import, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>."
6810        },
6811        {
6812          "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01881",
6813          "text": " If <code>buffer</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> be a valid Android hardware buffer object with <code>AHardwareBuffer_Desc</code>::<code>format</code> and <code>AHardwareBuffer_Desc</code>::<code>usage</code> compatible with Vulkan as described in <a href=\"#memory-external-android-hardware-buffer\">Android Hardware Buffers</a>."
6814        },
6815        {
6816          "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-sType-sType",
6817          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID</code>"
6818        },
6819        {
6820          "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-parameter",
6821          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>AHardwareBuffer</code> value"
6822        }
6823      ]
6824    },
6825    "vkGetMemoryAndroidHardwareBufferANDROID": {
6826      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
6827        {
6828          "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-device-parameter",
6829          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
6830        },
6831        {
6832          "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-pInfo-parameter",
6833          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMemoryGetAndroidHardwareBufferInfoANDROID</code> structure"
6834        },
6835        {
6836          "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-pBuffer-parameter",
6837          "text": " <code>pBuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid pointer to a <code>AHardwareBuffer</code> value"
6838        }
6839      ]
6840    },
6841    "VkMemoryGetAndroidHardwareBufferInfoANDROID": {
6842      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
6843        {
6844          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-handleTypes-01882",
6845          "text": " <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportMemoryAllocateInfoKHR\">VkExportMemoryAllocateInfoKHR</a>::<code>handleTypes</code> when <code>memory</code> was created."
6846        },
6847        {
6848          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-pNext-01883",
6849          "text": " If the <code>pNext</code> chain of the <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> used to allocate <code>memory</code> included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with non-<code>NULL</code> <code>image</code> member, then that <code>image</code> <strong class=\"purple\">must</strong> already be bound to <code>memory</code>."
6850        },
6851        {
6852          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-sType-sType",
6853          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID</code>"
6854        },
6855        {
6856          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-pNext-pNext",
6857          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
6858        },
6859        {
6860          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-memory-parameter",
6861          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
6862        }
6863      ]
6864    },
6865    "vkGetAndroidHardwareBufferPropertiesANDROID": {
6866      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
6867        {
6868          "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-01884",
6869          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid Android hardware buffer object with at least one of the <code>AHARDWAREBUFFER_USAGE_GPU_</code>* flags in its <code>AHardwareBuffer_Desc</code>::<code>usage</code>"
6870        },
6871        {
6872          "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-device-parameter",
6873          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
6874        },
6875        {
6876          "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-parameter",
6877          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>AHardwareBuffer</code> value"
6878        },
6879        {
6880          "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-pProperties-parameter",
6881          "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkAndroidHardwareBufferPropertiesANDROID</code> structure"
6882        }
6883      ]
6884    },
6885    "VkAndroidHardwareBufferPropertiesANDROID": {
6886      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
6887        {
6888          "vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-sType-sType",
6889          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID</code>"
6890        },
6891        {
6892          "vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-pNext-pNext",
6893          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkAndroidHardwareBufferFormatPropertiesANDROID\">VkAndroidHardwareBufferFormatPropertiesANDROID</a>"
6894        }
6895      ]
6896    },
6897    "VkAndroidHardwareBufferFormatPropertiesANDROID": {
6898      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
6899        {
6900          "vuid": "VUID-VkAndroidHardwareBufferFormatPropertiesANDROID-sType-sType",
6901          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID</code>"
6902        }
6903      ]
6904    },
6905    "VkExportMemoryAllocateInfoNV": {
6906      "(VK_NV_external_memory)": [
6907        {
6908          "vuid": "VUID-VkExportMemoryAllocateInfoNV-sType-sType",
6909          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV</code>"
6910        },
6911        {
6912          "vuid": "VUID-VkExportMemoryAllocateInfoNV-handleTypes-parameter",
6913          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
6914        }
6915      ]
6916    },
6917    "VkExportMemoryWin32HandleInfoNV": {
6918      "(VK_NV_external_memory_win32)": [
6919        {
6920          "vuid": "VUID-VkExportMemoryWin32HandleInfoNV-sType-sType",
6921          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV</code>"
6922        },
6923        {
6924          "vuid": "VUID-VkExportMemoryWin32HandleInfoNV-pAttributes-parameter",
6925          "text": " If <code>pAttributes</code> is not <code>NULL</code>, <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>SECURITY_ATTRIBUTES</code> value"
6926        }
6927      ]
6928    },
6929    "VkImportMemoryWin32HandleInfoNV": {
6930      "(VK_NV_external_memory_win32)": [
6931        {
6932          "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handleType-01327",
6933          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not have more than one bit set."
6934        },
6935        {
6936          "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handle-01328",
6937          "text": " <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle to memory, obtained as specified by <code>handleType</code>."
6938        },
6939        {
6940          "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-sType-sType",
6941          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV</code>"
6942        },
6943        {
6944          "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handleType-parameter",
6945          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
6946        }
6947      ]
6948    },
6949    "vkGetMemoryWin32HandleNV": {
6950      "(VK_NV_external_memory_win32)": [
6951        {
6952          "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-01326",
6953          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a flag specified in <a href=\"#VkExportMemoryAllocateInfoNV\">VkExportMemoryAllocateInfoNV</a>::<code>handleTypes</code> when allocating <code>memory</code>"
6954        },
6955        {
6956          "vuid": "VUID-vkGetMemoryWin32HandleNV-device-parameter",
6957          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
6958        },
6959        {
6960          "vuid": "VUID-vkGetMemoryWin32HandleNV-memory-parameter",
6961          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
6962        },
6963        {
6964          "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-parameter",
6965          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
6966        },
6967        {
6968          "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-requiredbitmask",
6969          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
6970        },
6971        {
6972          "vuid": "VUID-vkGetMemoryWin32HandleNV-pHandle-parameter",
6973          "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value"
6974        },
6975        {
6976          "vuid": "VUID-vkGetMemoryWin32HandleNV-memory-parent",
6977          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
6978        }
6979      ]
6980    },
6981    "VkMemoryAllocateFlagsInfo": {
6982      "(VK_VERSION_1_1,VK_KHR_device_group)": [
6983        {
6984          "vuid": "VUID-VkMemoryAllocateFlagsInfo-deviceMask-00675",
6985          "text": " If <code>VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT</code> is set, <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask."
6986        },
6987        {
6988          "vuid": "VUID-VkMemoryAllocateFlagsInfo-deviceMask-00676",
6989          "text": " If <code>VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT</code> is set, <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
6990        },
6991        {
6992          "vuid": "VUID-VkMemoryAllocateFlagsInfo-sType-sType",
6993          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO</code>"
6994        },
6995        {
6996          "vuid": "VUID-VkMemoryAllocateFlagsInfo-flags-parameter",
6997          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkMemoryAllocateFlagBits\">VkMemoryAllocateFlagBits</a> values"
6998        }
6999      ]
7000    },
7001    "vkFreeMemory": {
7002      "core": [
7003        {
7004          "vuid": "VUID-vkFreeMemory-memory-00677",
7005          "text": " All submitted commands that refer to <code>memory</code> (via images or buffers) <strong class=\"purple\">must</strong> have completed execution"
7006        },
7007        {
7008          "vuid": "VUID-vkFreeMemory-device-parameter",
7009          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7010        },
7011        {
7012          "vuid": "VUID-vkFreeMemory-memory-parameter",
7013          "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
7014        },
7015        {
7016          "vuid": "VUID-vkFreeMemory-pAllocator-parameter",
7017          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
7018        },
7019        {
7020          "vuid": "VUID-vkFreeMemory-memory-parent",
7021          "text": " If <code>memory</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
7022        }
7023      ]
7024    },
7025    "vkMapMemory": {
7026      "core": [
7027        {
7028          "vuid": "VUID-vkMapMemory-memory-00678",
7029          "text": " <code>memory</code> <strong class=\"purple\">must</strong> not be currently host mapped"
7030        },
7031        {
7032          "vuid": "VUID-vkMapMemory-offset-00679",
7033          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
7034        },
7035        {
7036          "vuid": "VUID-vkMapMemory-size-00680",
7037          "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
7038        },
7039        {
7040          "vuid": "VUID-vkMapMemory-size-00681",
7041          "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to the size of the <code>memory</code> minus <code>offset</code>"
7042        },
7043        {
7044          "vuid": "VUID-vkMapMemory-memory-00682",
7045          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created with a memory type that reports <code>VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT</code>"
7046        },
7047        {
7048          "vuid": "VUID-vkMapMemory-device-parameter",
7049          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7050        },
7051        {
7052          "vuid": "VUID-vkMapMemory-memory-parameter",
7053          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
7054        },
7055        {
7056          "vuid": "VUID-vkMapMemory-flags-zerobitmask",
7057          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
7058        },
7059        {
7060          "vuid": "VUID-vkMapMemory-ppData-parameter",
7061          "text": " <code>ppData</code> <strong class=\"purple\">must</strong> be a valid pointer to a pointer value"
7062        },
7063        {
7064          "vuid": "VUID-vkMapMemory-memory-parent",
7065          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
7066        }
7067      ],
7068      "(VK_KHR_device_group)": [
7069        {
7070          "vuid": "VUID-vkMapMemory-memory-00683",
7071          "text": " <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated with multiple instances."
7072        }
7073      ]
7074    },
7075    "vkFlushMappedMemoryRanges": {
7076      "core": [
7077        {
7078          "vuid": "VUID-vkFlushMappedMemoryRanges-device-parameter",
7079          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7080        },
7081        {
7082          "vuid": "VUID-vkFlushMappedMemoryRanges-pMemoryRanges-parameter",
7083          "text": " <code>pMemoryRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryRangeCount</code> valid <code>VkMappedMemoryRange</code> structures"
7084        },
7085        {
7086          "vuid": "VUID-vkFlushMappedMemoryRanges-memoryRangeCount-arraylength",
7087          "text": " <code>memoryRangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
7088        }
7089      ]
7090    },
7091    "vkInvalidateMappedMemoryRanges": {
7092      "core": [
7093        {
7094          "vuid": "VUID-vkInvalidateMappedMemoryRanges-device-parameter",
7095          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7096        },
7097        {
7098          "vuid": "VUID-vkInvalidateMappedMemoryRanges-pMemoryRanges-parameter",
7099          "text": " <code>pMemoryRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryRangeCount</code> valid <code>VkMappedMemoryRange</code> structures"
7100        },
7101        {
7102          "vuid": "VUID-vkInvalidateMappedMemoryRanges-memoryRangeCount-arraylength",
7103          "text": " <code>memoryRangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
7104        }
7105      ]
7106    },
7107    "VkMappedMemoryRange": {
7108      "core": [
7109        {
7110          "vuid": "VUID-VkMappedMemoryRange-memory-00684",
7111          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be currently host mapped"
7112        },
7113        {
7114          "vuid": "VUID-VkMappedMemoryRange-size-00685",
7115          "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>offset</code> and <code>size</code> <strong class=\"purple\">must</strong> specify a range contained within the currently mapped range of <code>memory</code>"
7116        },
7117        {
7118          "vuid": "VUID-VkMappedMemoryRange-size-00686",
7119          "text": " If <code>size</code> is equal to <code>VK_WHOLE_SIZE</code>, <code>offset</code> <strong class=\"purple\">must</strong> be within the currently mapped range of <code>memory</code>"
7120        },
7121        {
7122          "vuid": "VUID-VkMappedMemoryRange-size-01389",
7123          "text": " If <code>size</code> is equal to <code>VK_WHOLE_SIZE</code>, the end of the current mapping of <code>memory</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>nonCoherentAtomSize</code> bytes from the beginning of the memory object."
7124        },
7125        {
7126          "vuid": "VUID-VkMappedMemoryRange-offset-00687",
7127          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>nonCoherentAtomSize</code>"
7128        },
7129        {
7130          "vuid": "VUID-VkMappedMemoryRange-size-01390",
7131          "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> either be a multiple of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>nonCoherentAtomSize</code>, or <code>offset</code> plus <code>size</code> <strong class=\"purple\">must</strong> equal the size of <code>memory</code>."
7132        },
7133        {
7134          "vuid": "VUID-VkMappedMemoryRange-sType-sType",
7135          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE</code>"
7136        },
7137        {
7138          "vuid": "VUID-VkMappedMemoryRange-pNext-pNext",
7139          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7140        },
7141        {
7142          "vuid": "VUID-VkMappedMemoryRange-memory-parameter",
7143          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
7144        }
7145      ]
7146    },
7147    "vkUnmapMemory": {
7148      "core": [
7149        {
7150          "vuid": "VUID-vkUnmapMemory-memory-00689",
7151          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be currently host mapped"
7152        },
7153        {
7154          "vuid": "VUID-vkUnmapMemory-device-parameter",
7155          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7156        },
7157        {
7158          "vuid": "VUID-vkUnmapMemory-memory-parameter",
7159          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
7160        },
7161        {
7162          "vuid": "VUID-vkUnmapMemory-memory-parent",
7163          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
7164        }
7165      ]
7166    },
7167    "vkGetDeviceMemoryCommitment": {
7168      "core": [
7169        {
7170          "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-00690",
7171          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created with a memory type that reports <code>VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT</code>"
7172        },
7173        {
7174          "vuid": "VUID-vkGetDeviceMemoryCommitment-device-parameter",
7175          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7176        },
7177        {
7178          "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-parameter",
7179          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
7180        },
7181        {
7182          "vuid": "VUID-vkGetDeviceMemoryCommitment-pCommittedMemoryInBytes-parameter",
7183          "text": " <code>pCommittedMemoryInBytes</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceSize</code> value"
7184        },
7185        {
7186          "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-parent",
7187          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
7188        }
7189      ]
7190    },
7191    "vkGetDeviceGroupPeerMemoryFeatures": {
7192      "(VK_VERSION_1_1,VK_KHR_device_group)": [
7193        {
7194          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-heapIndex-00691",
7195          "text": " <code>heapIndex</code> <strong class=\"purple\">must</strong> be less than <code>memoryHeapCount</code>"
7196        },
7197        {
7198          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00692",
7199          "text": " <code>localDeviceIndex</code> <strong class=\"purple\">must</strong> be a valid device index"
7200        },
7201        {
7202          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-remoteDeviceIndex-00693",
7203          "text": " <code>remoteDeviceIndex</code> <strong class=\"purple\">must</strong> be a valid device index"
7204        },
7205        {
7206          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00694",
7207          "text": " <code>localDeviceIndex</code> <strong class=\"purple\">must</strong> not equal <code>remoteDeviceIndex</code>"
7208        },
7209        {
7210          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-device-parameter",
7211          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7212        },
7213        {
7214          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-pPeerMemoryFeatures-parameter",
7215          "text": " <code>pPeerMemoryFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPeerMemoryFeatureFlags\">VkPeerMemoryFeatureFlags</a> value"
7216        }
7217      ]
7218    },
7219    "vkCreateBuffer": {
7220      "core": [
7221        {
7222          "vuid": "VUID-vkCreateBuffer-flags-00911",
7223          "text": " If the <code>flags</code> member of <code>pCreateInfo</code> includes <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>, creating this <code>VkBuffer</code> <strong class=\"purple\">must</strong> not cause the total required sparse memory for all currently valid sparse resources on the device to exceed <code>VkPhysicalDeviceLimits</code>::<code>sparseAddressSpaceSize</code>"
7224        },
7225        {
7226          "vuid": "VUID-vkCreateBuffer-device-parameter",
7227          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7228        },
7229        {
7230          "vuid": "VUID-vkCreateBuffer-pCreateInfo-parameter",
7231          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkBufferCreateInfo</code> structure"
7232        },
7233        {
7234          "vuid": "VUID-vkCreateBuffer-pAllocator-parameter",
7235          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
7236        },
7237        {
7238          "vuid": "VUID-vkCreateBuffer-pBuffer-parameter",
7239          "text": " <code>pBuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkBuffer</code> handle"
7240        }
7241      ]
7242    },
7243    "VkBufferCreateInfo": {
7244      "core": [
7245        {
7246          "vuid": "VUID-VkBufferCreateInfo-size-00912",
7247          "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
7248        },
7249        {
7250          "vuid": "VUID-VkBufferCreateInfo-sharingMode-00913",
7251          "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueFamilyIndexCount</code> <code>uint32_t</code> values"
7252        },
7253        {
7254          "vuid": "VUID-VkBufferCreateInfo-sharingMode-00914",
7255          "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>queueFamilyIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>"
7256        },
7257        {
7258          "vuid": "VUID-VkBufferCreateInfo-flags-00915",
7259          "text": " If the <a href=\"#features-sparseBinding\">sparse bindings</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>"
7260        },
7261        {
7262          "vuid": "VUID-VkBufferCreateInfo-flags-00916",
7263          "text": " If the <a href=\"#features-sparseResidencyBuffer\">sparse buffer residency</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>"
7264        },
7265        {
7266          "vuid": "VUID-VkBufferCreateInfo-flags-00917",
7267          "text": " If the <a href=\"#features-sparseResidencyAliased\">sparse aliased residency</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>"
7268        },
7269        {
7270          "vuid": "VUID-VkBufferCreateInfo-flags-00918",
7271          "text": " If <code>flags</code> contains <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> or <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>, it <strong class=\"purple\">must</strong> also contain <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>"
7272        },
7273        {
7274          "vuid": "VUID-VkBufferCreateInfo-sType-sType",
7275          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO</code>"
7276        },
7277        {
7278          "vuid": "VUID-VkBufferCreateInfo-pNext-pNext",
7279          "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkBufferDeviceAddressCreateInfoEXT\">VkBufferDeviceAddressCreateInfoEXT</a>, <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>, or <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>"
7280        },
7281        {
7282          "vuid": "VUID-VkBufferCreateInfo-sType-unique",
7283          "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
7284        },
7285        {
7286          "vuid": "VUID-VkBufferCreateInfo-flags-parameter",
7287          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferCreateFlagBits\">VkBufferCreateFlagBits</a> values"
7288        },
7289        {
7290          "vuid": "VUID-VkBufferCreateInfo-usage-parameter",
7291          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferUsageFlagBits\">VkBufferUsageFlagBits</a> values"
7292        },
7293        {
7294          "vuid": "VUID-VkBufferCreateInfo-usage-requiredbitmask",
7295          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
7296        },
7297        {
7298          "vuid": "VUID-VkBufferCreateInfo-sharingMode-parameter",
7299          "text": " <code>sharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value"
7300        }
7301      ],
7302      "!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
7303        {
7304          "vuid": "VUID-VkBufferCreateInfo-sharingMode-01391",
7305          "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> for the <code>physicalDevice</code> that was used to create <code>device</code>"
7306        }
7307      ],
7308      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
7309        {
7310          "vuid": "VUID-VkBufferCreateInfo-sharingMode-01419",
7311          "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by either <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> or <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties2\">vkGetPhysicalDeviceQueueFamilyProperties2</a> for the <code>physicalDevice</code> that was used to create <code>device</code>"
7312        }
7313      ],
7314      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
7315        {
7316          "vuid": "VUID-VkBufferCreateInfo-pNext-00920",
7317          "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>, its <code>handleTypes</code> member <strong class=\"purple\">must</strong> only contain bits that are also in <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>::<code>externalMemoryProperties.compatibleHandleTypes</code>, as returned by <a href=\"#vkGetPhysicalDeviceExternalBufferProperties\">vkGetPhysicalDeviceExternalBufferProperties</a> with <code>pExternalBufferInfo</code>-&gt;<code>handleType</code> equal to any one of the handle types specified in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code>"
7318        }
7319      ],
7320      "(VK_VERSION_1_1)": [
7321        {
7322          "vuid": "VUID-VkBufferCreateInfo-flags-01887",
7323          "text": " If the protected memory feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_PROTECTED_BIT</code>"
7324        },
7325        {
7326          "vuid": "VUID-VkBufferCreateInfo-None-01888",
7327          "text": " If any of the bits <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code> are set, <code>VK_BUFFER_CREATE_PROTECTED_BIT</code> <strong class=\"purple\">must</strong> not also be set"
7328        }
7329      ],
7330      "(VK_NV_dedicated_allocation)": [
7331        {
7332          "vuid": "VUID-VkBufferCreateInfo-pNext-01571",
7333          "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>, and the <code>dedicatedAllocation</code> member of the chained structure is <code>VK_TRUE</code>, then <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>"
7334        }
7335      ],
7336      "(VK_EXT_buffer_device_address)": [
7337        {
7338          "vuid": "VUID-VkBufferCreateInfo-deviceAddress-02604",
7339          "text": " If <a href=\"#VkBufferDeviceAddressCreateInfoEXT\">VkBufferDeviceAddressCreateInfoEXT</a>::<code>deviceAddress</code> is not zero, <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT</code>"
7340        },
7341        {
7342          "vuid": "VUID-VkBufferCreateInfo-flags-02605",
7343          "text": " If <code>flags</code> includes <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT</code>, the <a href=\"#features-bufferDeviceAddressCaptureReplay\">bufferDeviceAddressCaptureReplay</a> feature <strong class=\"purple\">must</strong> be enabled"
7344        },
7345        {
7346          "vuid": "VUID-VkBufferCreateInfo-usage-02606",
7347          "text": " If <code>usage</code> includes <code>VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT</code>, the <a href=\"#features-bufferDeviceAddress\">bufferDeviceAddress</a> feature <strong class=\"purple\">must</strong> be enabled"
7348        }
7349      ]
7350    },
7351    "VkDedicatedAllocationBufferCreateInfoNV": {
7352      "(VK_NV_dedicated_allocation)": [
7353        {
7354          "vuid": "VUID-VkDedicatedAllocationBufferCreateInfoNV-sType-sType",
7355          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV</code>"
7356        }
7357      ]
7358    },
7359    "VkExternalMemoryBufferCreateInfo": {
7360      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
7361        {
7362          "vuid": "VUID-VkExternalMemoryBufferCreateInfo-sType-sType",
7363          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO</code>"
7364        },
7365        {
7366          "vuid": "VUID-VkExternalMemoryBufferCreateInfo-handleTypes-parameter",
7367          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values"
7368        }
7369      ]
7370    },
7371    "VkBufferDeviceAddressCreateInfoEXT": {
7372      "(VK_EXT_buffer_device_address)": [
7373        {
7374          "vuid": "VUID-VkBufferDeviceAddressCreateInfoEXT-sType-sType",
7375          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT</code>"
7376        }
7377      ]
7378    },
7379    "vkDestroyBuffer": {
7380      "core": [
7381        {
7382          "vuid": "VUID-vkDestroyBuffer-buffer-00922",
7383          "text": " All submitted commands that refer to <code>buffer</code>, either directly or via a <code>VkBufferView</code>, <strong class=\"purple\">must</strong> have completed execution"
7384        },
7385        {
7386          "vuid": "VUID-vkDestroyBuffer-buffer-00923",
7387          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>buffer</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
7388        },
7389        {
7390          "vuid": "VUID-vkDestroyBuffer-buffer-00924",
7391          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>buffer</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7392        },
7393        {
7394          "vuid": "VUID-vkDestroyBuffer-device-parameter",
7395          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7396        },
7397        {
7398          "vuid": "VUID-vkDestroyBuffer-buffer-parameter",
7399          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
7400        },
7401        {
7402          "vuid": "VUID-vkDestroyBuffer-pAllocator-parameter",
7403          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
7404        },
7405        {
7406          "vuid": "VUID-vkDestroyBuffer-buffer-parent",
7407          "text": " If <code>buffer</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
7408        }
7409      ]
7410    },
7411    "vkCreateBufferView": {
7412      "core": [
7413        {
7414          "vuid": "VUID-vkCreateBufferView-device-parameter",
7415          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7416        },
7417        {
7418          "vuid": "VUID-vkCreateBufferView-pCreateInfo-parameter",
7419          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkBufferViewCreateInfo</code> structure"
7420        },
7421        {
7422          "vuid": "VUID-vkCreateBufferView-pAllocator-parameter",
7423          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
7424        },
7425        {
7426          "vuid": "VUID-vkCreateBufferView-pView-parameter",
7427          "text": " <code>pView</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkBufferView</code> handle"
7428        }
7429      ]
7430    },
7431    "VkBufferViewCreateInfo": {
7432      "core": [
7433        {
7434          "vuid": "VUID-VkBufferViewCreateInfo-offset-00925",
7435          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
7436        },
7437        {
7438          "vuid": "VUID-VkBufferViewCreateInfo-offset-00926",
7439          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minTexelBufferOffsetAlignment</code>"
7440        },
7441        {
7442          "vuid": "VUID-VkBufferViewCreateInfo-range-00928",
7443          "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
7444        },
7445        {
7446          "vuid": "VUID-VkBufferViewCreateInfo-range-00929",
7447          "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> <strong class=\"purple\">must</strong> be an integer multiple of the texel block size of <code>format</code>"
7448        },
7449        {
7450          "vuid": "VUID-VkBufferViewCreateInfo-range-00930",
7451          "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> divided by the texel block size of <code>format</code>, multiplied by the number of texels per texel block for that format (as defined in the <a href=\"#formats-compatibility\">Compatible Formats</a> table), <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxTexelBufferElements</code>"
7452        },
7453        {
7454          "vuid": "VUID-VkBufferViewCreateInfo-offset-00931",
7455          "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, the sum of <code>offset</code> and <code>range</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
7456        },
7457        {
7458          "vuid": "VUID-VkBufferViewCreateInfo-buffer-00932",
7459          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing at least one of <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code> or <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code>"
7460        },
7461        {
7462          "vuid": "VUID-VkBufferViewCreateInfo-buffer-00933",
7463          "text": " If <code>buffer</code> was created with <code>usage</code> containing <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code>, <code>format</code> <strong class=\"purple\">must</strong> be supported for uniform texel buffers, as specified by the <code>VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT</code> flag in <code>VkFormatProperties</code>::<code>bufferFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
7464        },
7465        {
7466          "vuid": "VUID-VkBufferViewCreateInfo-buffer-00934",
7467          "text": " If <code>buffer</code> was created with <code>usage</code> containing <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code>, <code>format</code> <strong class=\"purple\">must</strong> be supported for storage texel buffers, as specified by the <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT</code> flag in <code>VkFormatProperties</code>::<code>bufferFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
7468        },
7469        {
7470          "vuid": "VUID-VkBufferViewCreateInfo-buffer-00935",
7471          "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
7472        },
7473        {
7474          "vuid": "VUID-VkBufferViewCreateInfo-sType-sType",
7475          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO</code>"
7476        },
7477        {
7478          "vuid": "VUID-VkBufferViewCreateInfo-pNext-pNext",
7479          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7480        },
7481        {
7482          "vuid": "VUID-VkBufferViewCreateInfo-flags-zerobitmask",
7483          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
7484        },
7485        {
7486          "vuid": "VUID-VkBufferViewCreateInfo-buffer-parameter",
7487          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
7488        },
7489        {
7490          "vuid": "VUID-VkBufferViewCreateInfo-format-parameter",
7491          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
7492        }
7493      ]
7494    },
7495    "vkDestroyBufferView": {
7496      "core": [
7497        {
7498          "vuid": "VUID-vkDestroyBufferView-bufferView-00936",
7499          "text": " All submitted commands that refer to <code>bufferView</code> <strong class=\"purple\">must</strong> have completed execution"
7500        },
7501        {
7502          "vuid": "VUID-vkDestroyBufferView-bufferView-00937",
7503          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>bufferView</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
7504        },
7505        {
7506          "vuid": "VUID-vkDestroyBufferView-bufferView-00938",
7507          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>bufferView</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7508        },
7509        {
7510          "vuid": "VUID-vkDestroyBufferView-device-parameter",
7511          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7512        },
7513        {
7514          "vuid": "VUID-vkDestroyBufferView-bufferView-parameter",
7515          "text": " If <code>bufferView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>bufferView</code> <strong class=\"purple\">must</strong> be a valid <code>VkBufferView</code> handle"
7516        },
7517        {
7518          "vuid": "VUID-vkDestroyBufferView-pAllocator-parameter",
7519          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
7520        },
7521        {
7522          "vuid": "VUID-vkDestroyBufferView-bufferView-parent",
7523          "text": " If <code>bufferView</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
7524        }
7525      ]
7526    },
7527    "vkCreateImage": {
7528      "core": [
7529        {
7530          "vuid": "VUID-vkCreateImage-flags-00939",
7531          "text": " If the <code>flags</code> member of <code>pCreateInfo</code> includes <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, creating this <code>VkImage</code> <strong class=\"purple\">must</strong> not cause the total required sparse memory for all currently valid sparse resources on the device to exceed <code>VkPhysicalDeviceLimits</code>::<code>sparseAddressSpaceSize</code>"
7532        },
7533        {
7534          "vuid": "VUID-vkCreateImage-device-parameter",
7535          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7536        },
7537        {
7538          "vuid": "VUID-vkCreateImage-pCreateInfo-parameter",
7539          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageCreateInfo</code> structure"
7540        },
7541        {
7542          "vuid": "VUID-vkCreateImage-pAllocator-parameter",
7543          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
7544        },
7545        {
7546          "vuid": "VUID-vkCreateImage-pImage-parameter",
7547          "text": " <code>pImage</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkImage</code> handle"
7548        }
7549      ]
7550    },
7551    "VkImageCreateInfo": {
7552      "core": [
7553        {
7554          "vuid": "VUID-VkImageCreateInfo-imageCreateMaxMipLevels-02251",
7555          "text": " Each of the following values (as described in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>) <strong class=\"purple\">must</strong> not be undefined <code>imageCreateMaxMipLevels</code>, <code>imageCreateMaxArrayLayers</code>, <code>imageCreateMaxExtent</code>, and <code>imageCreateSampleCounts</code>."
7556        },
7557        {
7558          "vuid": "VUID-VkImageCreateInfo-sharingMode-00941",
7559          "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueFamilyIndexCount</code> <code>uint32_t</code> values"
7560        },
7561        {
7562          "vuid": "VUID-VkImageCreateInfo-sharingMode-00942",
7563          "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>queueFamilyIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>"
7564        },
7565        {
7566          "vuid": "VUID-VkImageCreateInfo-extent-00944",
7567          "text": " <code>extent</code>::<code>width</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>."
7568        },
7569        {
7570          "vuid": "VUID-VkImageCreateInfo-extent-00945",
7571          "text": " <code>extent</code>::<code>height</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>."
7572        },
7573        {
7574          "vuid": "VUID-VkImageCreateInfo-extent-00946",
7575          "text": " <code>extent</code>::<code>depth</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>."
7576        },
7577        {
7578          "vuid": "VUID-VkImageCreateInfo-mipLevels-00947",
7579          "text": " <code>mipLevels</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
7580        },
7581        {
7582          "vuid": "VUID-VkImageCreateInfo-arrayLayers-00948",
7583          "text": " <code>arrayLayers</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
7584        },
7585        {
7586          "vuid": "VUID-VkImageCreateInfo-flags-00949",
7587          "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>"
7588        },
7589        {
7590          "vuid": "VUID-VkImageCreateInfo-extent-02252",
7591          "text": " <code>extent.width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxExtent.width</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)."
7592        },
7593        {
7594          "vuid": "VUID-VkImageCreateInfo-extent-02253",
7595          "text": " <code>extent.height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxExtent.height</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)."
7596        },
7597        {
7598          "vuid": "VUID-VkImageCreateInfo-extent-02254",
7599          "text": " <code>extent.depth</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxExtent.depth</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)."
7600        },
7601        {
7602          "vuid": "VUID-VkImageCreateInfo-imageType-00954",
7603          "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code> and <code>flags</code> contains <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code>, <code>extent.width</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be equal and <code>arrayLayers</code> <strong class=\"purple\">must</strong> be greater than or equal to 6"
7604        },
7605        {
7606          "vuid": "VUID-VkImageCreateInfo-imageType-00956",
7607          "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_1D</code>, both <code>extent.height</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>"
7608        },
7609        {
7610          "vuid": "VUID-VkImageCreateInfo-imageType-00957",
7611          "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>"
7612        },
7613        {
7614          "vuid": "VUID-VkImageCreateInfo-mipLevels-00958",
7615          "text": " <code>mipLevels</code> <strong class=\"purple\">must</strong> be less than or equal to the number of levels in the complete mipmap chain based on <span class=\"eq\"><code>extent.width</code></span>, <span class=\"eq\"><code>extent.height</code></span>, and <span class=\"eq\"><code>extent.depth</code></span>."
7616        },
7617        {
7618          "vuid": "VUID-VkImageCreateInfo-mipLevels-02255",
7619          "text": " <code>mipLevels</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxMipLevels</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)."
7620        },
7621        {
7622          "vuid": "VUID-VkImageCreateInfo-arrayLayers-02256",
7623          "text": " <code>arrayLayers</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxArrayLayers</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)."
7624        },
7625        {
7626          "vuid": "VUID-VkImageCreateInfo-imageType-00961",
7627          "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_3D</code>, <code>arrayLayers</code> <strong class=\"purple\">must</strong> be <code>1</code>."
7628        },
7629        {
7630          "vuid": "VUID-VkImageCreateInfo-samples-02257",
7631          "text": " If <code>samples</code> is not <code>VK_SAMPLE_COUNT_1_BIT</code>, then <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code>, <code>mipLevels</code> <strong class=\"purple\">must</strong> be equal to <code>1</code>, and <code>imageCreateMaybeLinear</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>) <strong class=\"purple\">must</strong> be <code>false</code>,"
7632        },
7633        {
7634          "vuid": "VUID-VkImageCreateInfo-usage-00963",
7635          "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, then bits other than <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, and <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> <strong class=\"purple\">must</strong> not be set"
7636        },
7637        {
7638          "vuid": "VUID-VkImageCreateInfo-usage-00964",
7639          "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferWidth</code>"
7640        },
7641        {
7642          "vuid": "VUID-VkImageCreateInfo-usage-00965",
7643          "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferHeight</code>"
7644        },
7645        {
7646          "vuid": "VUID-VkImageCreateInfo-usage-00966",
7647          "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, <code>usage</code> <strong class=\"purple\">must</strong> also contain at least one of <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>."
7648        },
7649        {
7650          "vuid": "VUID-VkImageCreateInfo-samples-02258",
7651          "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a bit value that is set in <code>imageCreateSampleCounts</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)."
7652        },
7653        {
7654          "vuid": "VUID-VkImageCreateInfo-usage-00968",
7655          "text": " If the <a href=\"#features-shaderStorageImageMultisample\">multisampled storage images</a> feature is not enabled, and <code>usage</code> contains <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>samples</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLE_COUNT_1_BIT</code>"
7656        },
7657        {
7658          "vuid": "VUID-VkImageCreateInfo-flags-00969",
7659          "text": " If the <a href=\"#features-sparseBinding\">sparse bindings</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>"
7660        },
7661        {
7662          "vuid": "VUID-VkImageCreateInfo-flags-01924",
7663          "text": " If the <a href=\"#features-sparseResidencyAliased\">sparse aliased residency</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>"
7664        },
7665        {
7666          "vuid": "VUID-VkImageCreateInfo-imageType-00970",
7667          "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_1D</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>"
7668        },
7669        {
7670          "vuid": "VUID-VkImageCreateInfo-imageType-00971",
7671          "text": " If the <a href=\"#features-sparseResidencyImage2D\">sparse residency for 2D images</a> feature is not enabled, and <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>"
7672        },
7673        {
7674          "vuid": "VUID-VkImageCreateInfo-imageType-00972",
7675          "text": " If the <a href=\"#features-sparseResidencyImage3D\">sparse residency for 3D images</a> feature is not enabled, and <code>imageType</code> is <code>VK_IMAGE_TYPE_3D</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>"
7676        },
7677        {
7678          "vuid": "VUID-VkImageCreateInfo-imageType-00973",
7679          "text": " If the <a href=\"#features-sparseResidency2Samples\">sparse residency for images with 2 samples</a> feature is not enabled, <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, and <code>samples</code> is <code>VK_SAMPLE_COUNT_2_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>"
7680        },
7681        {
7682          "vuid": "VUID-VkImageCreateInfo-imageType-00974",
7683          "text": " If the <a href=\"#features-sparseResidency4Samples\">sparse residency for images with 4 samples</a> feature is not enabled, <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, and <code>samples</code> is <code>VK_SAMPLE_COUNT_4_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>"
7684        },
7685        {
7686          "vuid": "VUID-VkImageCreateInfo-imageType-00975",
7687          "text": " If the <a href=\"#features-sparseResidency8Samples\">sparse residency for images with 8 samples</a> feature is not enabled, <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, and <code>samples</code> is <code>VK_SAMPLE_COUNT_8_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>"
7688        },
7689        {
7690          "vuid": "VUID-VkImageCreateInfo-imageType-00976",
7691          "text": " If the <a href=\"#features-sparseResidency16Samples\">sparse residency for images with 16 samples</a> feature is not enabled, <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, and <code>samples</code> is <code>VK_SAMPLE_COUNT_16_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>"
7692        },
7693        {
7694          "vuid": "VUID-VkImageCreateInfo-flags-00987",
7695          "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>, it <strong class=\"purple\">must</strong> also contain <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>"
7696        },
7697        {
7698          "vuid": "VUID-VkImageCreateInfo-None-01925",
7699          "text": " If any of the bits <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code> are set, <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code> <strong class=\"purple\">must</strong> not also be set"
7700        },
7701        {
7702          "vuid": "VUID-VkImageCreateInfo-initialLayout-00993",
7703          "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>."
7704        },
7705        {
7706          "vuid": "VUID-VkImageCreateInfo-sType-sType",
7707          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO</code>"
7708        },
7709        {
7710          "vuid": "VUID-VkImageCreateInfo-pNext-pNext",
7711          "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>, <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>, <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>, <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a>, <a href=\"#VkImageDrmFormatModifierExplicitCreateInfoEXT\">VkImageDrmFormatModifierExplicitCreateInfoEXT</a>, <a href=\"#VkImageDrmFormatModifierListCreateInfoEXT\">VkImageDrmFormatModifierListCreateInfoEXT</a>, <a href=\"#VkImageFormatListCreateInfoKHR\">VkImageFormatListCreateInfoKHR</a>, <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a>, or <a href=\"#VkImageSwapchainCreateInfoKHR\">VkImageSwapchainCreateInfoKHR</a>"
7712        },
7713        {
7714          "vuid": "VUID-VkImageCreateInfo-sType-unique",
7715          "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
7716        },
7717        {
7718          "vuid": "VUID-VkImageCreateInfo-flags-parameter",
7719          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values"
7720        },
7721        {
7722          "vuid": "VUID-VkImageCreateInfo-imageType-parameter",
7723          "text": " <code>imageType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
7724        },
7725        {
7726          "vuid": "VUID-VkImageCreateInfo-format-parameter",
7727          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
7728        },
7729        {
7730          "vuid": "VUID-VkImageCreateInfo-samples-parameter",
7731          "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
7732        },
7733        {
7734          "vuid": "VUID-VkImageCreateInfo-tiling-parameter",
7735          "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
7736        },
7737        {
7738          "vuid": "VUID-VkImageCreateInfo-usage-parameter",
7739          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
7740        },
7741        {
7742          "vuid": "VUID-VkImageCreateInfo-usage-requiredbitmask",
7743          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
7744        },
7745        {
7746          "vuid": "VUID-VkImageCreateInfo-sharingMode-parameter",
7747          "text": " <code>sharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value"
7748        },
7749        {
7750          "vuid": "VUID-VkImageCreateInfo-initialLayout-parameter",
7751          "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
7752        }
7753      ],
7754      "!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
7755        {
7756          "vuid": "VUID-VkImageCreateInfo-sharingMode-01392",
7757          "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> for the <code>physicalDevice</code> that was used to create <code>device</code>"
7758        }
7759      ],
7760      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
7761        {
7762          "vuid": "VUID-VkImageCreateInfo-sharingMode-01420",
7763          "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by either <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> or <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties2\">vkGetPhysicalDeviceQueueFamilyProperties2</a> for the <code>physicalDevice</code> that was used to create <code>device</code>"
7764        }
7765      ],
7766      "!(VK_ANDROID_external_memory_android_hardware_buffer)": [
7767        {
7768          "vuid": "VUID-VkImageCreateInfo-format-00943",
7769          "text": " <code>format</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>"
7770        }
7771      ],
7772      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
7773        {
7774          "vuid": "VUID-VkImageCreateInfo-pNext-01974",
7775          "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>, and its member <code>externalFormat</code> is non-zero the <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>."
7776        },
7777        {
7778          "vuid": "VUID-VkImageCreateInfo-pNext-01975",
7779          "text": " If the <code>pNext</code> chain does not contain an instance of <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>, or does and its member <code>externalFormat</code> is <code>0</code> the <code>format</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>."
7780        },
7781        {
7782          "vuid": "VUID-VkImageCreateInfo-pNext-02393",
7783          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a> structure whose <code>handleTypes</code> member includes <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>."
7784        },
7785        {
7786          "vuid": "VUID-VkImageCreateInfo-pNext-02394",
7787          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a> structure whose <code>handleTypes</code> member includes <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, <code>mipLevels</code> <strong class=\"purple\">must</strong> either be <code>1</code> or equal to the number of levels in the complete mipmap chain based on <span class=\"eq\"><code>extent.width</code></span>, <span class=\"eq\"><code>extent.height</code></span>, and <span class=\"eq\"><code>extent.depth</code></span>."
7788        },
7789        {
7790          "vuid": "VUID-VkImageCreateInfo-pNext-02396",
7791          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a> structure whose <code>externalFormat</code> member is not <code>0</code>, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>."
7792        },
7793        {
7794          "vuid": "VUID-VkImageCreateInfo-pNext-02397",
7795          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a> structure whose <code>externalFormat</code> member is not <code>0</code>, <code>usage</code> <strong class=\"purple\">must</strong> not include any usages except <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>."
7796        },
7797        {
7798          "vuid": "VUID-VkImageCreateInfo-pNext-02398",
7799          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a> structure whose <code>externalFormat</code> member is not <code>0</code>, <code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_OPTIMAL</code>."
7800        }
7801      ],
7802      "(VK_EXT_fragment_density_map)": [
7803        {
7804          "vuid": "VUID-VkImageCreateInfo-flags-02557",
7805          "text": " If <code>flags</code> contains <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>"
7806        },
7807        {
7808          "vuid": "VUID-VkImageCreateInfo-samples-02558",
7809          "text": " If <code>samples</code> is not <code>VK_SAMPLE_COUNT_1_BIT</code>, <code>usage</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>"
7810        },
7811        {
7812          "vuid": "VUID-VkImageCreateInfo-usage-02559",
7813          "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be less than or equal to \\(\\lceil{\\frac{maxFramebufferWidth}{minFragmentDensityTexelSize_{width}}}\\rceil\\)"
7814        },
7815        {
7816          "vuid": "VUID-VkImageCreateInfo-usage-02560",
7817          "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be less than or equal to \\(\\lceil{\\frac{maxFramebufferHeight}{minFragmentDensityTexelSize_{height}}}\\rceil\\)"
7818        },
7819        {
7820          "vuid": "VUID-VkImageCreateInfo-flags-02565",
7821          "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>, <code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_OPTIMAL</code>"
7822        },
7823        {
7824          "vuid": "VUID-VkImageCreateInfo-flags-02566",
7825          "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>"
7826        },
7827        {
7828          "vuid": "VUID-VkImageCreateInfo-flags-02567",
7829          "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code>"
7830        },
7831        {
7832          "vuid": "VUID-VkImageCreateInfo-flags-02568",
7833          "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>, <code>mipLevels</code> <strong class=\"purple\">must</strong> be <code>1</code>"
7834        }
7835      ],
7836      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
7837        {
7838          "vuid": "VUID-VkImageCreateInfo-flags-00950",
7839          "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_3D</code>"
7840        }
7841      ],
7842      "(VK_VERSION_1_1)": [
7843        {
7844          "vuid": "VUID-VkImageCreateInfo-flags-01890",
7845          "text": " If the protected memory feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_PROTECTED_BIT</code>."
7846        },
7847        {
7848          "vuid": "VUID-VkImageCreateInfo-None-01891",
7849          "text": " If any of the bits <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code> are set, <code>VK_IMAGE_CREATE_PROTECTED_BIT</code> <strong class=\"purple\">must</strong> not also be set."
7850        }
7851      ],
7852      "(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_NV_external_memory)": [
7853        {
7854          "vuid": "VUID-VkImageCreateInfo-pNext-00988",
7855          "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a>, it <strong class=\"purple\">must</strong> not contain an instance of <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>."
7856        }
7857      ],
7858      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
7859        {
7860          "vuid": "VUID-VkImageCreateInfo-pNext-00990",
7861          "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>, its <code>handleTypes</code> member <strong class=\"purple\">must</strong> only contain bits that are also in <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a>::<code>externalMemoryProperties.compatibleHandleTypes</code>, as returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a> with <code>format</code>, <code>imageType</code>, <code>tiling</code>, <code>usage</code>, and <code>flags</code> equal to those in this structure, and with an instance of <a href=\"#VkPhysicalDeviceExternalImageFormatInfo\">VkPhysicalDeviceExternalImageFormatInfo</a> in the <code>pNext</code> chain, with a <code>handleType</code> equal to any one of the handle types specified in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code>"
7862        }
7863      ],
7864      "(VK_NV_external_memory+VK_NV_external_memory_capabilities)": [
7865        {
7866          "vuid": "VUID-VkImageCreateInfo-pNext-00991",
7867          "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a>, its <code>handleTypes</code> member <strong class=\"purple\">must</strong> only contain bits that are also in <a href=\"#VkExternalImageFormatPropertiesNV\">VkExternalImageFormatPropertiesNV</a>::<code>externalMemoryProperties.compatibleHandleTypes</code>, as returned by <a href=\"#vkGetPhysicalDeviceExternalImageFormatPropertiesNV\">vkGetPhysicalDeviceExternalImageFormatPropertiesNV</a> with <code>format</code>, <code>imageType</code>, <code>tiling</code>, <code>usage</code>, and <code>flags</code> equal to those in this structure, and with <code>externalHandleType</code> equal to any one of the handle types specified in <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a>::<code>handleTypes</code>"
7868        }
7869      ],
7870      "(VK_VERSION_1_1,VK_KHR_device_group)": [
7871        {
7872          "vuid": "VUID-VkImageCreateInfo-physicalDeviceCount-01421",
7873          "text": " If the logical device was created with <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>::<code>physicalDeviceCount</code> equal to 1, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT</code>"
7874        },
7875        {
7876          "vuid": "VUID-VkImageCreateInfo-flags-02259",
7877          "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT</code>, then <code>mipLevels</code> <strong class=\"purple\">must</strong> be one, <code>arrayLayers</code> <strong class=\"purple\">must</strong> be one, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>. and <code>imageCreateMaybeLinear</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>) <strong class=\"purple\">must</strong> be <code>false</code>."
7878        }
7879      ],
7880      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
7881        {
7882          "vuid": "VUID-VkImageCreateInfo-flags-01572",
7883          "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code>, then <code>format</code> <strong class=\"purple\">must</strong> be a <a href=\"#appendix-compressedtex-bc\">block-compressed image format</a>, an <a href=\"#appendix-compressedtex-etc2\">ETC compressed image format</a>, or an <a href=\"#appendix-compressedtex-astc\">ASTC compressed image format</a>."
7884        },
7885        {
7886          "vuid": "VUID-VkImageCreateInfo-flags-01573",
7887          "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code>, then <code>flags</code> <strong class=\"purple\">must</strong> also contain <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>."
7888        }
7889      ],
7890      "(VK_VERSION_1_1,VK_KHR_external_memory,VK_NV_external_memory)": [
7891        {
7892          "vuid": "VUID-VkImageCreateInfo-pNext-01443",
7893          "text": "     If the <code>pNext</code> chain includes a ifdef::VK_VERSION_1_1,VK_KHR_external_memory[<a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>]"
7894        }
7895      ],
7896      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
7897        {
7898          "vuid": "VUID-VkImageCreateInfo-format-02561",
7899          "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>, then <code>mipLevels</code> <strong class=\"purple\">must</strong> be 1"
7900        },
7901        {
7902          "vuid": "VUID-VkImageCreateInfo-format-02562",
7903          "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>, <code>samples</code> must be <code>VK_SAMPLE_COUNT_1_BIT</code>"
7904        },
7905        {
7906          "vuid": "VUID-VkImageCreateInfo-format-02563",
7907          "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>"
7908        },
7909        {
7910          "vuid": "VUID-VkImageCreateInfo-imageCreateFormatFeatures-02260",
7911          "text": " If <code>format</code> is a <em>multi-planar</em> format, and if <code>imageCreateFormatFeatures</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>) does not contain <code>VK_FORMAT_FEATURE_DISJOINT_BIT</code>, then <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_DISJOINT_BIT</code>."
7912        },
7913        {
7914          "vuid": "VUID-VkImageCreateInfo-format-01577",
7915          "text": " If <code>format</code> is not a <em>multi-planar</em> format, and <code>flags</code> does not include <code>VK_IMAGE_CREATE_ALIAS_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_DISJOINT_BIT</code>"
7916        }
7917      ],
7918      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_ycbcr_image_arrays)": [
7919        {
7920          "vuid": "VUID-VkImageCreateInfo-format-02653",
7921          "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>, and the <code>ycbcrImageArrays</code> feature is not enabled, <code>arrayLayers</code> <strong class=\"purple\">must</strong> be 1"
7922        }
7923      ],
7924      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VK_EXT_ycbcr_image_arrays)": [
7925        {
7926          "vuid": "VUID-VkImageCreateInfo-format-02564",
7927          "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>, <code>arrayLayers</code> <strong class=\"purple\">must</strong> be 1"
7928        }
7929      ],
7930      "(VK_EXT_image_drm_format_modifier)": [
7931        {
7932          "vuid": "VUID-VkImageCreateInfo-tiling-02261",
7933          "text": " If <code>tiling</code> is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> contain exactly one of <a href=\"#VkImageDrmFormatModifierListCreateInfoEXT\">VkImageDrmFormatModifierListCreateInfoEXT</a> or <a href=\"#VkImageDrmFormatModifierExplicitCreateInfoEXT\">VkImageDrmFormatModifierExplicitCreateInfoEXT</a>."
7934        },
7935        {
7936          "vuid": "VUID-VkImageCreateInfo-pNext-02262",
7937          "text": " If the <code>pNext</code> chain contains <a href=\"#VkImageDrmFormatModifierListCreateInfoEXT\">VkImageDrmFormatModifierListCreateInfoEXT</a> or <a href=\"#VkImageDrmFormatModifierExplicitCreateInfoEXT\">VkImageDrmFormatModifierExplicitCreateInfoEXT</a>, then <code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>."
7938        },
7939        {
7940          "vuid": "VUID-VkImageCreateInfo-tiling-02353",
7941          "text": " If <code>tiling</code> is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code> and <code>flags</code> contains <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> contain <a href=\"#VkImageFormatListCreateInfoKHR\">VkImageFormatListCreateInfoKHR</a> with non-zero <code>viewFormatCount</code>."
7942        }
7943      ],
7944      "(VK_EXT_sample_locations)": [
7945        {
7946          "vuid": "VUID-VkImageCreateInfo-flags-01533",
7947          "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> <code>format</code> <strong class=\"purple\">must</strong> be a depth or depth/stencil format"
7948        }
7949      ],
7950      "(VK_EXT_separate_stencil_usage)": [
7951        {
7952          "vuid": "VUID-VkImageCreateInfo-format-02534",
7953          "text": " If <code>format</code> is a depth-stencil format and the <code>pNext</code> chain contains an instance of <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a>, then its <code>stencilUsage</code> member <strong class=\"purple\">must</strong> only include <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> if <code>usage</code> also includes it"
7954        },
7955        {
7956          "vuid": "VUID-VkImageCreateInfo-format-02535",
7957          "text": " If <code>format</code> is a depth-stencil format and the <code>pNext</code> chain contains an instance of <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a>, then its <code>stencilUsage</code> member <strong class=\"purple\">must</strong> only include <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code> if <code>usage</code> also includes it"
7958        },
7959        {
7960          "vuid": "VUID-VkImageCreateInfo-Format-02536",
7961          "text": " If <code>Format</code> is a depth-stencil format and the <code>pNext</code> chain contains an instance of <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a> with its <code>stencilUsage</code> member including <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferWidth</code>"
7962        },
7963        {
7964          "vuid": "VUID-VkImageCreateInfo-format-02537",
7965          "text": " If <code>format</code> is a depth-stencil format and the <code>pNext</code> chain contains an instance of <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a> with its <code>stencilUsage</code> member including <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferHeight</code>"
7966        },
7967        {
7968          "vuid": "VUID-VkImageCreateInfo-format-02538",
7969          "text": " If the <a href=\"#features-shaderStorageImageMultisample\">multisampled storage images</a> feature is not enabled, <code>format</code> is a depth-stencil format and the <code>pNext</code> chain contains an instance of <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a> with its <code>stencilUsage</code> including <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>samples</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLE_COUNT_1_BIT</code>"
7970        }
7971      ],
7972      "(VK_NV_corner_sampled_image)": [
7973        {
7974          "vuid": "VUID-VkImageCreateInfo-flags-02050",
7975          "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code> or <code>VK_IMAGE_TYPE_3D</code>"
7976        },
7977        {
7978          "vuid": "VUID-VkImageCreateInfo-flags-02051",
7979          "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code>, it <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code> and the <code>format</code> <strong class=\"purple\">must</strong> not be a depth/stencil format"
7980        },
7981        {
7982          "vuid": "VUID-VkImageCreateInfo-flags-02052",
7983          "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> and <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, <code>extent</code>::<code>width</code> and <code>extent</code>::<code>height</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>"
7984        },
7985        {
7986          "vuid": "VUID-VkImageCreateInfo-flags-02053",
7987          "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> and <code>imageType</code> is <code>VK_IMAGE_TYPE_3D</code>, <code>extent</code>::<code>width</code>, <code>extent</code>::<code>height</code>, and <code>extent</code>::<code>depth</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>"
7988        }
7989      ],
7990      "(VK_NV_shading_rate_image)": [
7991        {
7992          "vuid": "VUID-VkImageCreateInfo-imageType-02082",
7993          "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>."
7994        },
7995        {
7996          "vuid": "VUID-VkImageCreateInfo-samples-02083",
7997          "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>, <code>samples</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLE_COUNT_1_BIT</code>."
7998        },
7999        {
8000          "vuid": "VUID-VkImageCreateInfo-tiling-02084",
8001          "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>, <code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_OPTIMAL</code>."
8002        }
8003      ]
8004    },
8005    "VkImageStencilUsageCreateInfoEXT": {
8006      "(VK_EXT_separate_stencil_usage)": [
8007        {
8008          "vuid": "VUID-VkImageStencilUsageCreateInfoEXT-stencilUsage-02539",
8009          "text": " If <code>stencilUsage</code> includes <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, then bits other than <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, and <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> <strong class=\"purple\">must</strong> not be set"
8010        },
8011        {
8012          "vuid": "VUID-VkImageStencilUsageCreateInfoEXT-sType-sType",
8013          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT</code>"
8014        },
8015        {
8016          "vuid": "VUID-VkImageStencilUsageCreateInfoEXT-stencilUsage-parameter",
8017          "text": " <code>stencilUsage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
8018        },
8019        {
8020          "vuid": "VUID-VkImageStencilUsageCreateInfoEXT-stencilUsage-requiredbitmask",
8021          "text": " <code>stencilUsage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
8022        }
8023      ]
8024    },
8025    "VkDedicatedAllocationImageCreateInfoNV": {
8026      "(VK_NV_dedicated_allocation)": [
8027        {
8028          "vuid": "VUID-VkDedicatedAllocationImageCreateInfoNV-dedicatedAllocation-00994",
8029          "text": " If <code>dedicatedAllocation</code> is <code>VK_TRUE</code>, <code>VkImageCreateInfo</code>::<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>"
8030        },
8031        {
8032          "vuid": "VUID-VkDedicatedAllocationImageCreateInfoNV-sType-sType",
8033          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV</code>"
8034        }
8035      ]
8036    },
8037    "VkExternalMemoryImageCreateInfo": {
8038      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
8039        {
8040          "vuid": "VUID-VkExternalMemoryImageCreateInfo-sType-sType",
8041          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO</code>"
8042        },
8043        {
8044          "vuid": "VUID-VkExternalMemoryImageCreateInfo-handleTypes-parameter",
8045          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values"
8046        },
8047        {
8048          "vuid": "VUID-VkExternalMemoryImageCreateInfo-handleTypes-requiredbitmask",
8049          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
8050        }
8051      ]
8052    },
8053    "VkExternalMemoryImageCreateInfoNV": {
8054      "(VK_NV_external_memory)": [
8055        {
8056          "vuid": "VUID-VkExternalMemoryImageCreateInfoNV-sType-sType",
8057          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV</code>"
8058        },
8059        {
8060          "vuid": "VUID-VkExternalMemoryImageCreateInfoNV-handleTypes-parameter",
8061          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
8062        }
8063      ]
8064    },
8065    "VkExternalFormatANDROID": {
8066      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
8067        {
8068          "vuid": "VUID-VkExternalFormatANDROID-externalFormat-01894",
8069          "text": " <code>externalFormat</code> <strong class=\"purple\">must</strong> be <code>0</code> or a value returned in the <code>externalFormat</code> member of <a href=\"#VkAndroidHardwareBufferFormatPropertiesANDROID\">VkAndroidHardwareBufferFormatPropertiesANDROID</a> by an earlier call to <a href=\"#vkGetAndroidHardwareBufferPropertiesANDROID\">vkGetAndroidHardwareBufferPropertiesANDROID</a>"
8070        },
8071        {
8072          "vuid": "VUID-VkExternalFormatANDROID-sType-sType",
8073          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID</code>"
8074        }
8075      ]
8076    },
8077    "VkImageSwapchainCreateInfoKHR": {
8078      "(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [
8079        {
8080          "vuid": "VUID-VkImageSwapchainCreateInfoKHR-swapchain-00995",
8081          "text": " If <code>swapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the fields of <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> <strong class=\"purple\">must</strong> match the <a href=\"#swapchain-wsi-image-create-info\">implied image creation parameters</a> of the swapchain"
8082        },
8083        {
8084          "vuid": "VUID-VkImageSwapchainCreateInfoKHR-sType-sType",
8085          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR</code>"
8086        },
8087        {
8088          "vuid": "VUID-VkImageSwapchainCreateInfoKHR-swapchain-parameter",
8089          "text": " If <code>swapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
8090        }
8091      ]
8092    },
8093    "VkImageFormatListCreateInfoKHR": {
8094      "(VK_KHR_image_format_list)": [
8095        {
8096          "vuid": "VUID-VkImageFormatListCreateInfoKHR-viewFormatCount-01578",
8097          "text": " If <code>viewFormatCount</code> is not <code>0</code>, all of the formats in the <code>pViewFormats</code> array <strong class=\"purple\">must</strong> be compatible with the format specified in the <code>format</code> field of <code>VkImageCreateInfo</code>, as described in the <a href=\"#formats-compatibility\">compatibility table</a>."
8098        },
8099        {
8100          "vuid": "VUID-VkImageFormatListCreateInfoKHR-flags-01579",
8101          "text": " If <code>VkImageCreateInfo</code>::<code>flags</code> does not contain <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>, <code>viewFormatCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>."
8102        },
8103        {
8104          "vuid": "VUID-VkImageFormatListCreateInfoKHR-viewFormatCount-01580",
8105          "text": " If <code>viewFormatCount</code> is not <code>0</code>, <code>VkImageCreateInfo</code>::<code>format</code> <strong class=\"purple\">must</strong> be in <code>pViewFormats</code>."
8106        },
8107        {
8108          "vuid": "VUID-VkImageFormatListCreateInfoKHR-sType-sType",
8109          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR</code>"
8110        },
8111        {
8112          "vuid": "VUID-VkImageFormatListCreateInfoKHR-pViewFormats-parameter",
8113          "text": " If <code>viewFormatCount</code> is not <code>0</code>, <code>pViewFormats</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewFormatCount</code> valid <a href=\"#VkFormat\">VkFormat</a> values"
8114        }
8115      ]
8116    },
8117    "VkImageDrmFormatModifierListCreateInfoEXT": {
8118      "(VK_EXT_image_drm_format_modifier)": [
8119        {
8120          "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-pDrmFormatModifiers-02263",
8121          "text": " Each <em>modifier</em> in <code>pDrmFormatModifiers</code> must be compatible with the parameters in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> and its <code>pNext</code> chain, as determined by querying <a href=\"#VkPhysicalDeviceImageFormatInfo2\">VkPhysicalDeviceImageFormatInfo2</a> extended with <a href=\"#VkPhysicalDeviceImageDrmFormatModifierInfoEXT\">VkPhysicalDeviceImageDrmFormatModifierInfoEXT</a>."
8122        },
8123        {
8124          "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-sType-sType",
8125          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT</code>"
8126        },
8127        {
8128          "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-pDrmFormatModifiers-parameter",
8129          "text": " <code>pDrmFormatModifiers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>drmFormatModifierCount</code> <code>uint64_t</code> values"
8130        },
8131        {
8132          "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-drmFormatModifierCount-arraylength",
8133          "text": " <code>drmFormatModifierCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
8134        }
8135      ]
8136    },
8137    "VkImageDrmFormatModifierExplicitCreateInfoEXT": {
8138      "(VK_EXT_image_drm_format_modifier)": [
8139        {
8140          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-drmFormatModifier-02264",
8141          "text": " <code>drmFormatModifier</code> must be compatible with the parameters in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> and its <code>pNext</code> chain, as determined by querying <a href=\"#VkPhysicalDeviceImageFormatInfo2KHR\">VkPhysicalDeviceImageFormatInfo2KHR</a> extended with <a href=\"#VkPhysicalDeviceImageDrmFormatModifierInfoEXT\">VkPhysicalDeviceImageDrmFormatModifierInfoEXT</a>."
8142        },
8143        {
8144          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-drmFormatModifierPlaneCount-02265",
8145          "text": " <code>drmFormatModifierPlaneCount</code> <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkDrmFormatModifierPropertiesEXT\">VkDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifierPlaneCount</code> associated with <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>format</code> and <code>drmFormatModifier</code>, as found by querying <a href=\"#VkDrmFormatModifierPropertiesListEXT\">VkDrmFormatModifierPropertiesListEXT</a>."
8146        },
8147        {
8148          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-size-02267",
8149          "text": " For each element of <code>pPlaneLayouts</code>, <code>size</code> <strong class=\"purple\">must</strong> be 0"
8150        },
8151        {
8152          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-arrayPitch-02268",
8153          "text": " For each element of <code>pPlaneLayouts</code>, <code>arrayPitch</code> <strong class=\"purple\">must</strong> be 0 if <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>arrayLayers</code> is 1."
8154        },
8155        {
8156          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-depthPitch-02269",
8157          "text": " For each element of <code>pPlaneLayouts</code>, <code>depthPitch</code> <strong class=\"purple\">must</strong> be 0 if <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>extent</code>::<code>depth</code> is 1."
8158        },
8159        {
8160          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-sType-sType",
8161          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT</code>"
8162        },
8163        {
8164          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-pPlaneLayouts-parameter",
8165          "text": " If <code>drmFormatModifierPlaneCount</code> is not <code>0</code>, <code>pPlaneLayouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>drmFormatModifierPlaneCount</code> <code>VkSubresourceLayout</code> structures"
8166        }
8167      ]
8168    },
8169    "vkGetImageSubresourceLayout": {
8170      "!(VK_EXT_image_drm_format_modifier)": [
8171        {
8172          "vuid": "VUID-vkGetImageSubresourceLayout-image-00996",
8173          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>tiling</code> equal to <code>VK_IMAGE_TILING_LINEAR</code>"
8174        }
8175      ],
8176      "(VK_EXT_image_drm_format_modifier)": [
8177        {
8178          "vuid": "VUID-vkGetImageSubresourceLayout-image-02270",
8179          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>tiling</code> equal to <code>VK_IMAGE_TILING_LINEAR</code> or <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>"
8180        },
8181        {
8182          "vuid": "VUID-vkGetImageSubresourceLayout-tiling-02271",
8183          "text": "  If the <code>tiling</code> of the <code>image</code> is  <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then the <code>aspectMask</code>  member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be  <code>VK_IMAGE_ASPECT_MEMORY_PLANE</code><em>_i</em>_BIT_EXT and the index <em>i</em>  <strong class=\"purple\">must</strong> be less than the  <a href=\"#VkDrmFormatModifierPropertiesEXT\"><code>drmFormatModifierPlaneCount</code></a>  associated with the image&#8217;s <a href=\"#VkImageCreateInfo\"><code>format</code></a> and <a href=\"#VkImageDrmFormatModifierPropertiesEXT\"><code>drmFormatModifier</code></a>."
8184        }
8185      ],
8186      "core": [
8187        {
8188          "vuid": "VUID-vkGetImageSubresourceLayout-aspectMask-00997",
8189          "text": " The <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> only have a single bit set"
8190        },
8191        {
8192          "vuid": "VUID-vkGetImageSubresourceLayout-mipLevel-01716",
8193          "text": " The <code>mipLevel</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
8194        },
8195        {
8196          "vuid": "VUID-vkGetImageSubresourceLayout-arrayLayer-01717",
8197          "text": " The <code>arrayLayer</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
8198        },
8199        {
8200          "vuid": "VUID-vkGetImageSubresourceLayout-device-parameter",
8201          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
8202        },
8203        {
8204          "vuid": "VUID-vkGetImageSubresourceLayout-image-parameter",
8205          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
8206        },
8207        {
8208          "vuid": "VUID-vkGetImageSubresourceLayout-pSubresource-parameter",
8209          "text": " <code>pSubresource</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageSubresource</code> structure"
8210        },
8211        {
8212          "vuid": "VUID-vkGetImageSubresourceLayout-pLayout-parameter",
8213          "text": " <code>pLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSubresourceLayout</code> structure"
8214        },
8215        {
8216          "vuid": "VUID-vkGetImageSubresourceLayout-image-parent",
8217          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
8218        }
8219      ],
8220      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
8221        {
8222          "vuid": "VUID-vkGetImageSubresourceLayout-format-01581",
8223          "text": " If the <code>tiling</code> of the <code>image</code> is <code>VK_IMAGE_TILING_LINEAR</code> and its <code>format</code> is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a> with two planes, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>"
8224        },
8225        {
8226          "vuid": "VUID-vkGetImageSubresourceLayout-format-01582",
8227          "text": " If the <code>tiling</code> of the <code>image</code> is <code>VK_IMAGE_TILING_LINEAR</code> and its <code>format</code> is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a> with three planes, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>"
8228        }
8229      ],
8230      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
8231        {
8232          "vuid": "VUID-vkGetImageSubresourceLayout-image-01895",
8233          "text": " If <code>image</code> was created with the <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> external memory handle type, then <code>image</code> <strong class=\"purple\">must</strong> be bound to memory."
8234        }
8235      ]
8236    },
8237    "VkImageSubresource": {
8238      "core": [
8239        {
8240          "vuid": "VUID-VkImageSubresource-aspectMask-parameter",
8241          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
8242        },
8243        {
8244          "vuid": "VUID-VkImageSubresource-aspectMask-requiredbitmask",
8245          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
8246        }
8247      ]
8248    },
8249    "vkGetImageDrmFormatModifierPropertiesEXT": {
8250      "(VK_EXT_image_drm_format_modifier)": [
8251        {
8252          "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-02272",
8253          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkImageCreateInfo\"><code>tiling</code></a> equal to <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>."
8254        },
8255        {
8256          "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-device-parameter",
8257          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
8258        },
8259        {
8260          "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-parameter",
8261          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
8262        },
8263        {
8264          "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-pProperties-parameter",
8265          "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkImageDrmFormatModifierPropertiesEXT</code> structure"
8266        },
8267        {
8268          "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-parent",
8269          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
8270        }
8271      ]
8272    },
8273    "VkImageDrmFormatModifierPropertiesEXT": {
8274      "(VK_EXT_image_drm_format_modifier)": [
8275        {
8276          "vuid": "VUID-VkImageDrmFormatModifierPropertiesEXT-sType-sType",
8277          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT</code>"
8278        },
8279        {
8280          "vuid": "VUID-VkImageDrmFormatModifierPropertiesEXT-pNext-pNext",
8281          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
8282        }
8283      ]
8284    },
8285    "vkDestroyImage": {
8286      "core": [
8287        {
8288          "vuid": "VUID-vkDestroyImage-image-01000",
8289          "text": " All submitted commands that refer to <code>image</code>, either directly or via a <code>VkImageView</code>, <strong class=\"purple\">must</strong> have completed execution"
8290        },
8291        {
8292          "vuid": "VUID-vkDestroyImage-image-01001",
8293          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>image</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
8294        },
8295        {
8296          "vuid": "VUID-vkDestroyImage-image-01002",
8297          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>image</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
8298        },
8299        {
8300          "vuid": "VUID-vkDestroyImage-device-parameter",
8301          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
8302        },
8303        {
8304          "vuid": "VUID-vkDestroyImage-image-parameter",
8305          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
8306        },
8307        {
8308          "vuid": "VUID-vkDestroyImage-pAllocator-parameter",
8309          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
8310        },
8311        {
8312          "vuid": "VUID-vkDestroyImage-image-parent",
8313          "text": " If <code>image</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
8314        }
8315      ]
8316    },
8317    "vkCreateImageView": {
8318      "core": [
8319        {
8320          "vuid": "VUID-vkCreateImageView-device-parameter",
8321          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
8322        },
8323        {
8324          "vuid": "VUID-vkCreateImageView-pCreateInfo-parameter",
8325          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageViewCreateInfo</code> structure"
8326        },
8327        {
8328          "vuid": "VUID-vkCreateImageView-pAllocator-parameter",
8329          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
8330        },
8331        {
8332          "vuid": "VUID-vkCreateImageView-pView-parameter",
8333          "text": " <code>pView</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkImageView</code> handle"
8334        }
8335      ]
8336    },
8337    "VkImageViewCreateInfo": {
8338      "core": [
8339        {
8340          "vuid": "VUID-VkImageViewCreateInfo-image-01003",
8341          "text": " If <code>image</code> was not created with <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code> then <code>viewType</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_VIEW_TYPE_CUBE</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
8342        },
8343        {
8344          "vuid": "VUID-VkImageViewCreateInfo-viewType-01004",
8345          "text": " If the <a href=\"#features-imageCubeArray\">image cubemap arrays</a> feature is not enabled, <code>viewType</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
8346        },
8347        {
8348          "vuid": "VUID-VkImageViewCreateInfo-None-02273",
8349          "text": " The <a href=\"#resources-image-view-format-features\">format features</a> of the resultant image view <strong class=\"purple\">must</strong> contain at least one bit."
8350        },
8351        {
8352          "vuid": "VUID-VkImageViewCreateInfo-usage-02274",
8353          "text": " If <code>usage</code> contains <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, then the <a href=\"#resources-image-view-format-features\">format features</a> of the resultant image view <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT</code>."
8354        },
8355        {
8356          "vuid": "VUID-VkImageViewCreateInfo-usage-02275",
8357          "text": " If <code>usage</code> contains <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT</code>."
8358        },
8359        {
8360          "vuid": "VUID-VkImageViewCreateInfo-usage-02276",
8361          "text": " If <code>usage</code> contains <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>."
8362        },
8363        {
8364          "vuid": "VUID-VkImageViewCreateInfo-usage-02277",
8365          "text": " If <code>usage</code> contains <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>."
8366        },
8367        {
8368          "vuid": "VUID-VkImageViewCreateInfo-usage-02652",
8369          "text": " If <code>usage</code> contains <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain at least one of <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code> or <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>."
8370        },
8371        {
8372          "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01478",
8373          "text": " <code>subresourceRange.baseMipLevel</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
8374        },
8375        {
8376          "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01718",
8377          "text": " If <code>subresourceRange.levelCount</code> is not <code>VK_REMAINING_MIP_LEVELS</code>, <span class=\"eq\"><code>subresourceRange.baseMipLevel</code> &#43; <code>subresourceRange.levelCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
8378        },
8379        {
8380          "vuid": "VUID-VkImageViewCreateInfo-image-01018",
8381          "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, <code>format</code> <strong class=\"purple\">must</strong> be compatible with the <code>format</code> used to create <code>image</code>, as defined in <a href=\"#formats-compatibility-classes\">Format Compatibility Classes</a>"
8382        },
8383        {
8384          "vuid": "VUID-VkImageViewCreateInfo-image-01020",
8385          "text": " If <code>image</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
8386        },
8387        {
8388          "vuid": "VUID-VkImageViewCreateInfo-subResourceRange-01021",
8389          "text": " <code>subresourceRange</code> and <code>viewType</code> <strong class=\"purple\">must</strong> be compatible with the image, as described in the <a href=\"#resources-image-views-compatibility\">compatibility table</a>"
8390        },
8391        {
8392          "vuid": "VUID-VkImageViewCreateInfo-sType-sType",
8393          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO</code>"
8394        },
8395        {
8396          "vuid": "VUID-VkImageViewCreateInfo-pNext-pNext",
8397          "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkImageViewASTCDecodeModeEXT\">VkImageViewASTCDecodeModeEXT</a>, <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a>, or <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a>"
8398        },
8399        {
8400          "vuid": "VUID-VkImageViewCreateInfo-sType-unique",
8401          "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
8402        },
8403        {
8404          "vuid": "VUID-VkImageViewCreateInfo-flags-parameter",
8405          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageViewCreateFlagBits\">VkImageViewCreateFlagBits</a> values"
8406        },
8407        {
8408          "vuid": "VUID-VkImageViewCreateInfo-image-parameter",
8409          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
8410        },
8411        {
8412          "vuid": "VUID-VkImageViewCreateInfo-viewType-parameter",
8413          "text": " <code>viewType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageViewType\">VkImageViewType</a> value"
8414        },
8415        {
8416          "vuid": "VUID-VkImageViewCreateInfo-format-parameter",
8417          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
8418        },
8419        {
8420          "vuid": "VUID-VkImageViewCreateInfo-components-parameter",
8421          "text": " <code>components</code> <strong class=\"purple\">must</strong> be a valid <code>VkComponentMapping</code> structure"
8422        },
8423        {
8424          "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-parameter",
8425          "text": " <code>subresourceRange</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceRange</code> structure"
8426        }
8427      ],
8428      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
8429        {
8430          "vuid": "VUID-VkImageViewCreateInfo-image-01005",
8431          "text": " If <code>image</code> was created with <code>VK_IMAGE_TYPE_3D</code> but without <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set then <code>viewType</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>"
8432        },
8433        {
8434          "vuid": "VUID-VkImageViewCreateInfo-image-01482",
8435          "text": " If <code>image</code> is not a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set, or <code>viewType</code> is not <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange</code>::<code>baseArrayLayer</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
8436        },
8437        {
8438          "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01483",
8439          "text": " If <code>subresourceRange</code>::<code>layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <code>image</code> is not a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set, or <code>viewType</code> is not <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange</code>::<code>layerCount</code> <strong class=\"purple\">must</strong> be non-zero and <span class=\"eq\"><code>subresourceRange</code>::<code>baseArrayLayer</code> &#43; <code>subresourceRange</code>::<code>layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
8440        },
8441        {
8442          "vuid": "VUID-VkImageViewCreateInfo-image-01484",
8443          "text": " If <code>image</code> is a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set, and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange</code>::<code>baseArrayLayer</code> <strong class=\"purple\">must</strong> be less than the <code>extent.depth</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
8444        },
8445        {
8446          "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01485",
8447          "text": " If <code>subresourceRange</code>::<code>layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <code>image</code> is a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set, and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange</code>::<code>layerCount</code> <strong class=\"purple\">must</strong> be non-zero and <span class=\"eq\"><code>subresourceRange</code>::<code>baseArrayLayer</code> &#43; <code>subresourceRange</code>::<code>layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>extent.depth</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
8448        }
8449      ],
8450      "!(VK_EXT_fragment_density_map)+!(VK_NV_shading_rate_image)": [
8451        {
8452          "vuid": "VUID-VkImageViewCreateInfo-image-01007",
8453          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing at least one of <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>"
8454        }
8455      ],
8456      "!(VK_EXT_fragment_density_map)+(VK_NV_shading_rate_image)": [
8457        {
8458          "vuid": "VUID-VkImageViewCreateInfo-image-02085",
8459          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing at least one of <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>"
8460        }
8461      ],
8462      "(VK_EXT_fragment_density_map)+!(VK_NV_shading_rate_image)": [
8463        {
8464          "vuid": "VUID-VkImageViewCreateInfo-image-02569",
8465          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing at least one of <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>"
8466        }
8467      ],
8468      "(VK_EXT_fragment_density_map)+(VK_NV_shading_rate_image)": [
8469        {
8470          "vuid": "VUID-VkImageViewCreateInfo-image-02570",
8471          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing at least one of <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>, or <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>"
8472        }
8473      ],
8474      "(VK_EXT_fragment_density_map)": [
8475        {
8476          "vuid": "VUID-VkImageViewCreateInfo-image-02571",
8477          "text": " If <code>image</code> was created with <code>usage</code> containing <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>, <code>subresourceRange.levelCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
8478        },
8479        {
8480          "vuid": "VUID-VkImageViewCreateInfo-flags-02572",
8481          "text": " If <a href=\"#features-fragmentdensitymapdynamic\">dynamic fragment density map</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT</code>"
8482        },
8483        {
8484          "vuid": "VUID-VkImageViewCreateInfo-image-02573",
8485          "text": " If <a href=\"#features-fragmentdensitymapdynamic\">dynamic fragment density map</a> feature is not enabled and <code>image</code> was created with <code>usage</code> containing <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain any of <code>VK_IMAGE_CREATE_PROTECTED_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>"
8486        }
8487      ],
8488      "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
8489        {
8490          "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01480",
8491          "text": " <code>subresourceRange.baseArrayLayer</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
8492        },
8493        {
8494          "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01719",
8495          "text": " If <code>subresourceRange.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>subresourceRange.baseArrayLayer</code> &#43; <code>subresourceRange.layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
8496        }
8497      ],
8498      "(VK_VERSION_1_1,VK_KHR_maintenance2)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
8499        {
8500          "vuid": "VUID-VkImageViewCreateInfo-image-01759",
8501          "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, but without the <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code> flag, <code>format</code> <strong class=\"purple\">must</strong> be compatible with the <code>format</code> used to create <code>image</code>, as defined in <a href=\"#formats-compatibility-classes\">Format Compatibility Classes</a>"
8502        }
8503      ],
8504      "!(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
8505        {
8506          "vuid": "VUID-VkImageViewCreateInfo-image-01760",
8507          "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, and if the <code>format</code> of the <code>image</code> is not a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar</a> format, <code>format</code> <strong class=\"purple\">must</strong> be compatible with the <code>format</code> used to create <code>image</code>, as defined in <a href=\"#formats-compatibility-classes\">Format Compatibility Classes</a>"
8508        }
8509      ],
8510      "(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
8511        {
8512          "vuid": "VUID-VkImageViewCreateInfo-image-01761",
8513          "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, but without the <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code> flag, and if the <code>format</code> of the <code>image</code> is not a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar</a> format, <code>format</code> <strong class=\"purple\">must</strong> be compatible with the <code>format</code> used to create <code>image</code>, as defined in <a href=\"#formats-compatibility-classes\">Format Compatibility Classes</a>"
8514        }
8515      ],
8516      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
8517        {
8518          "vuid": "VUID-VkImageViewCreateInfo-image-01583",
8519          "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code> flag, <code>format</code> <strong class=\"purple\">must</strong> be compatible with, or <strong class=\"purple\">must</strong> be an uncompressed format that is size-compatible with, the <code>format</code> used to create <code>image</code>."
8520        },
8521        {
8522          "vuid": "VUID-VkImageViewCreateInfo-image-01584",
8523          "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code> flag, the <code>levelCount</code> and <code>layerCount</code> members of <code>subresourceRange</code> <strong class=\"purple\">must</strong> both be <code>1</code>."
8524        }
8525      ],
8526      "(VK_KHR_image_format_list)": [
8527        {
8528          "vuid": "VUID-VkImageViewCreateInfo-pNext-01585",
8529          "text": " If a <code>VkImageFormatListCreateInfoKHR</code> structure was included in the <code>pNext</code> chain of the <code>VkImageCreateInfo</code> struct used when creating <code>image</code> and the <code>viewFormatCount</code> field of <code>VkImageFormatListCreateInfoKHR</code> is not zero then <code>format</code> <strong class=\"purple\">must</strong> be one of the formats in <code>VkImageFormatListCreateInfoKHR</code>::<code>pViewFormats</code>."
8530        }
8531      ],
8532      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
8533        {
8534          "vuid": "VUID-VkImageViewCreateInfo-image-01586",
8535          "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, if the <code>format</code> of the <code>image</code> is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar</a> format, and if <code>subresourceRange.aspectMask</code> is one of <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>, then <code>format</code> <strong class=\"purple\">must</strong> be compatible with the <a href=\"#VkFormat\">VkFormat</a> for the plane of the <code>image</code> <code>format</code> indicated by <code>subresourceRange.aspectMask</code>, as defined in <a href=\"#formats-compatible-planes\">Compatible formats of planes of multi-planar formats</a>"
8536        },
8537        {
8538          "vuid": "VUID-VkImageViewCreateInfo-image-01762",
8539          "text": " If <code>image</code> was not created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, or if the <code>format</code> of the <code>image</code> is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar</a> format and if <code>subresourceRange.aspectMask</code> is <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, <code>format</code> <strong class=\"purple\">must</strong> be identical to the <code>format</code> used to create <code>image</code>"
8540        },
8541        {
8542          "vuid": "VUID-VkImageViewCreateInfo-pNext-01970",
8543          "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a> with a <code>conversion</code> value other than <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, all members of <code>components</code> <strong class=\"purple\">must</strong> have the value <code>VK_COMPONENT_SWIZZLE_IDENTITY</code>."
8544        }
8545      ],
8546      "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
8547        {
8548          "vuid": "VUID-VkImageViewCreateInfo-image-01019",
8549          "text": " If <code>image</code> was not created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, <code>format</code> <strong class=\"purple\">must</strong> be identical to the <code>format</code> used to create <code>image</code>"
8550        }
8551      ],
8552      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
8553        {
8554          "vuid": "VUID-VkImageViewCreateInfo-image-02399",
8555          "text": " If <code>image</code> has an <a href=\"#memory-external-android-hardware-buffer-external-formats\">external format</a>, <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>."
8556        },
8557        {
8558          "vuid": "VUID-VkImageViewCreateInfo-image-02400",
8559          "text": " If <code>image</code> has an <a href=\"#memory-external-android-hardware-buffer-external-formats\">external format</a>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> contain an instance of <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a> with a <code>conversion</code> object created with the same external format as <code>image</code>."
8560        },
8561        {
8562          "vuid": "VUID-VkImageViewCreateInfo-image-02401",
8563          "text": " If <code>image</code> has an <a href=\"#memory-external-android-hardware-buffer-external-formats\">external format</a>, all members of <code>components</code> <strong class=\"purple\">must</strong> be <code>VK_COMPONENT_SWIZZLE_IDENTITY</code>."
8564        }
8565      ],
8566      "(VK_NV_shading_rate_image)": [
8567        {
8568          "vuid": "VUID-VkImageViewCreateInfo-image-02086",
8569          "text": " If <code>image</code> was created with <code>usage</code> containing <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>, <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>"
8570        },
8571        {
8572          "vuid": "VUID-VkImageViewCreateInfo-image-02087",
8573          "text": " If <code>image</code> was created with <code>usage</code> containing <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>, <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_R8_UINT</code>"
8574        }
8575      ]
8576    },
8577    "VkImageViewUsageCreateInfo": {
8578      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
8579        {
8580          "vuid": "VUID-VkImageViewUsageCreateInfo-usage-01587",
8581          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not include any set bits that were not set in the <code>usage</code> member of the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure used to create the image this image view is created from."
8582        },
8583        {
8584          "vuid": "VUID-VkImageViewUsageCreateInfo-sType-sType",
8585          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO</code>"
8586        },
8587        {
8588          "vuid": "VUID-VkImageViewUsageCreateInfo-usage-parameter",
8589          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
8590        },
8591        {
8592          "vuid": "VUID-VkImageViewUsageCreateInfo-usage-requiredbitmask",
8593          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
8594        }
8595      ]
8596    },
8597    "VkImageSubresourceRange": {
8598      "core": [
8599        {
8600          "vuid": "VUID-VkImageSubresourceRange-levelCount-01720",
8601          "text": " If <code>levelCount</code> is not <code>VK_REMAINING_MIP_LEVELS</code>, it <strong class=\"purple\">must</strong> be greater than <code>0</code>"
8602        },
8603        {
8604          "vuid": "VUID-VkImageSubresourceRange-layerCount-01721",
8605          "text": " If <code>layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, it <strong class=\"purple\">must</strong> be greater than <code>0</code>"
8606        },
8607        {
8608          "vuid": "VUID-VkImageSubresourceRange-aspectMask-parameter",
8609          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
8610        },
8611        {
8612          "vuid": "VUID-VkImageSubresourceRange-aspectMask-requiredbitmask",
8613          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
8614        }
8615      ],
8616      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
8617        {
8618          "vuid": "VUID-VkImageSubresourceRange-aspectMask-01670",
8619          "text": " If <code>aspectMask</code> includes <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, then it <strong class=\"purple\">must</strong> not include any of <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>"
8620        }
8621      ],
8622      "(VK_EXT_image_drm_format_modifier)": [
8623        {
8624          "vuid": "VUID-VkImageSubresourceRange-aspectMask-02278",
8625          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_MEMORY_PLANE</code><em>_i</em>_BIT_EXT for any index <em>i</em>."
8626        }
8627      ]
8628    },
8629    "VkComponentMapping": {
8630      "core": [
8631        {
8632          "vuid": "VUID-VkComponentMapping-r-parameter",
8633          "text": " <code>r</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value"
8634        },
8635        {
8636          "vuid": "VUID-VkComponentMapping-g-parameter",
8637          "text": " <code>g</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value"
8638        },
8639        {
8640          "vuid": "VUID-VkComponentMapping-b-parameter",
8641          "text": " <code>b</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value"
8642        },
8643        {
8644          "vuid": "VUID-VkComponentMapping-a-parameter",
8645          "text": " <code>a</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value"
8646        }
8647      ]
8648    },
8649    "VkImageViewASTCDecodeModeEXT": {
8650      "(VK_EXT_astc_decode_mode)": [
8651        {
8652          "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02230",
8653          "text": " <code>decodeMode</code> <strong class=\"purple\">must</strong> be one of <code>VK_FORMAT_R16G16B16A16_SFLOAT</code>, <code>VK_FORMAT_R8G8B8A8_UNORM</code>, or <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>"
8654        },
8655        {
8656          "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02231",
8657          "text": " If the <a href=\"#features-astc-decodeModeSharedExponent\"><code>decodeModeSharedExponent</code></a> feature is not enabled, <code>decodeMode</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>"
8658        },
8659        {
8660          "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02232",
8661          "text": " If <code>decodeMode</code> is <code>VK_FORMAT_R8G8B8A8_UNORM</code> the image view <strong class=\"purple\">must</strong> not include blocks using any of the ASTC HDR modes"
8662        },
8663        {
8664          "vuid": "VUID-VkImageViewASTCDecodeModeEXT-format-02233",
8665          "text": " <code>format</code> of the image view <strong class=\"purple\">must</strong> be one of <code>VK_FORMAT_ASTC_4x4_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_4x4_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_5x4_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_5x4_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_5x5_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_5x5_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_6x5_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_6x5_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_6x6_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_6x6_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_8x5_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_8x5_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_8x6_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_8x6_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_8x8_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_8x8_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_10x5_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_10x5_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_10x6_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_10x6_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_10x8_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_10x8_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_10x10_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_10x10_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_12x10_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_12x10_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_12x12_UNORM_BLOCK</code>, or <code>VK_FORMAT_ASTC_12x12_SRGB_BLOCK</code>"
8666        },
8667        {
8668          "vuid": "VUID-VkImageViewASTCDecodeModeEXT-sType-sType",
8669          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT</code>"
8670        },
8671        {
8672          "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-parameter",
8673          "text": " <code>decodeMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
8674        }
8675      ]
8676    },
8677    "vkDestroyImageView": {
8678      "core": [
8679        {
8680          "vuid": "VUID-vkDestroyImageView-imageView-01026",
8681          "text": " All submitted commands that refer to <code>imageView</code> <strong class=\"purple\">must</strong> have completed execution"
8682        },
8683        {
8684          "vuid": "VUID-vkDestroyImageView-imageView-01027",
8685          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>imageView</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
8686        },
8687        {
8688          "vuid": "VUID-vkDestroyImageView-imageView-01028",
8689          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>imageView</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
8690        },
8691        {
8692          "vuid": "VUID-vkDestroyImageView-device-parameter",
8693          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
8694        },
8695        {
8696          "vuid": "VUID-vkDestroyImageView-imageView-parameter",
8697          "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageView</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageView</code> handle"
8698        },
8699        {
8700          "vuid": "VUID-vkDestroyImageView-pAllocator-parameter",
8701          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
8702        },
8703        {
8704          "vuid": "VUID-vkDestroyImageView-imageView-parent",
8705          "text": " If <code>imageView</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
8706        }
8707      ]
8708    },
8709    "vkGetImageViewHandleNVX": {
8710      "(VK_NVX_image_view_handle)": [
8711        {
8712          "vuid": "VUID-vkGetImageViewHandleNVX-device-parameter",
8713          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
8714        },
8715        {
8716          "vuid": "VUID-vkGetImageViewHandleNVX-pInfo-parameter",
8717          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageViewHandleInfoNVX</code> structure"
8718        }
8719      ]
8720    },
8721    "VkImageViewHandleInfoNVX": {
8722      "(VK_NVX_image_view_handle)": [
8723        {
8724          "vuid": "VUID-VkImageViewHandleInfoNVX-descriptorType-02654",
8725          "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>"
8726        },
8727        {
8728          "vuid": "VUID-VkImageViewHandleInfoNVX-sampler-02655",
8729          "text": " <code>sampler</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampler\">VkSampler</a> if <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>"
8730        },
8731        {
8732          "vuid": "VUID-VkImageViewHandleInfoNVX-imageView-02656",
8733          "text": "    If descriptorType is <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code> or    <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, the image that    <code>imageView</code> was created from <strong class=\"purple\">must</strong> have been created with the    <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> usage bit set"
8734        },
8735        {
8736          "vuid": "VUID-VkImageViewHandleInfoNVX-imageView-02657",
8737          "text": " If descriptorType is <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, the image that <code>imageView</code> was created from <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_USAGE_STORAGE_BIT</code> usage bit set"
8738        },
8739        {
8740          "vuid": "VUID-VkImageViewHandleInfoNVX-sType-sType",
8741          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX</code>"
8742        },
8743        {
8744          "vuid": "VUID-VkImageViewHandleInfoNVX-pNext-pNext",
8745          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
8746        },
8747        {
8748          "vuid": "VUID-VkImageViewHandleInfoNVX-imageView-parameter",
8749          "text": " <code>imageView</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageView</code> handle"
8750        },
8751        {
8752          "vuid": "VUID-VkImageViewHandleInfoNVX-descriptorType-parameter",
8753          "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
8754        },
8755        {
8756          "vuid": "VUID-VkImageViewHandleInfoNVX-sampler-parameter",
8757          "text": " If <code>sampler</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sampler</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampler</code> handle"
8758        },
8759        {
8760          "vuid": "VUID-VkImageViewHandleInfoNVX-commonparent",
8761          "text": " Both of <code>imageView</code>, and <code>sampler</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
8762        }
8763      ]
8764    },
8765    "vkGetBufferMemoryRequirements": {
8766      "core": [
8767        {
8768          "vuid": "VUID-vkGetBufferMemoryRequirements-device-parameter",
8769          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
8770        },
8771        {
8772          "vuid": "VUID-vkGetBufferMemoryRequirements-buffer-parameter",
8773          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
8774        },
8775        {
8776          "vuid": "VUID-vkGetBufferMemoryRequirements-pMemoryRequirements-parameter",
8777          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryRequirements</code> structure"
8778        },
8779        {
8780          "vuid": "VUID-vkGetBufferMemoryRequirements-buffer-parent",
8781          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
8782        }
8783      ]
8784    },
8785    "vkGetImageMemoryRequirements": {
8786      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
8787        {
8788          "vuid": "VUID-vkGetImageMemoryRequirements-image-01588",
8789          "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag set"
8790        }
8791      ],
8792      "core": [
8793        {
8794          "vuid": "VUID-vkGetImageMemoryRequirements-device-parameter",
8795          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
8796        },
8797        {
8798          "vuid": "VUID-vkGetImageMemoryRequirements-image-parameter",
8799          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
8800        },
8801        {
8802          "vuid": "VUID-vkGetImageMemoryRequirements-pMemoryRequirements-parameter",
8803          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryRequirements</code> structure"
8804        },
8805        {
8806          "vuid": "VUID-vkGetImageMemoryRequirements-image-parent",
8807          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
8808        }
8809      ]
8810    },
8811    "vkGetBufferMemoryRequirements2": {
8812      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
8813        {
8814          "vuid": "VUID-vkGetBufferMemoryRequirements2-device-parameter",
8815          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
8816        },
8817        {
8818          "vuid": "VUID-vkGetBufferMemoryRequirements2-pInfo-parameter",
8819          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkBufferMemoryRequirementsInfo2</code> structure"
8820        },
8821        {
8822          "vuid": "VUID-vkGetBufferMemoryRequirements2-pMemoryRequirements-parameter",
8823          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryRequirements2</code> structure"
8824        }
8825      ]
8826    },
8827    "VkBufferMemoryRequirementsInfo2": {
8828      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
8829        {
8830          "vuid": "VUID-VkBufferMemoryRequirementsInfo2-sType-sType",
8831          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2</code>"
8832        },
8833        {
8834          "vuid": "VUID-VkBufferMemoryRequirementsInfo2-pNext-pNext",
8835          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
8836        },
8837        {
8838          "vuid": "VUID-VkBufferMemoryRequirementsInfo2-buffer-parameter",
8839          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
8840        }
8841      ]
8842    },
8843    "vkGetImageMemoryRequirements2": {
8844      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
8845        {
8846          "vuid": "VUID-vkGetImageMemoryRequirements2-device-parameter",
8847          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
8848        },
8849        {
8850          "vuid": "VUID-vkGetImageMemoryRequirements2-pInfo-parameter",
8851          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageMemoryRequirementsInfo2</code> structure"
8852        },
8853        {
8854          "vuid": "VUID-vkGetImageMemoryRequirements2-pMemoryRequirements-parameter",
8855          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryRequirements2</code> structure"
8856        }
8857      ]
8858    },
8859    "VkImageMemoryRequirementsInfo2": {
8860      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
8861        {
8862          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01589",
8863          "text": " If <code>image</code> was created with a <em>multi-planar</em> format and the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag, there <strong class=\"purple\">must</strong> be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
8864        },
8865        {
8866          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01590",
8867          "text": " If <code>image</code> was not created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag, there <strong class=\"purple\">must</strong> not be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
8868        }
8869      ],
8870      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [
8871        {
8872          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-02279",
8873          "text": " If <code>image</code> was created with <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> and with <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then there <strong class=\"purple\">must</strong> be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
8874        },
8875        {
8876          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-02280",
8877          "text": " If <code>image</code> was created with a single-plane format and with any <code>tiling</code> other than <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then there <strong class=\"purple\">must</strong> not be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
8878        }
8879      ],
8880      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VK_EXT_image_drm_format_modifier)": [
8881        {
8882          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01591",
8883          "text": " If <code>image</code> was created with a single-plane format, there <strong class=\"purple\">must</strong> not be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
8884        }
8885      ],
8886      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
8887        {
8888          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01897",
8889          "text": " If <code>image</code> was created with the <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> external memory handle type, then <code>image</code> <strong class=\"purple\">must</strong> be bound to memory."
8890        }
8891      ],
8892      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
8893        {
8894          "vuid": "VUID-VkImageMemoryRequirementsInfo2-sType-sType",
8895          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2</code>"
8896        },
8897        {
8898          "vuid": "VUID-VkImageMemoryRequirementsInfo2-pNext-pNext",
8899          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a>"
8900        },
8901        {
8902          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-parameter",
8903          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
8904        }
8905      ]
8906    },
8907    "VkImagePlaneMemoryRequirementsInfo": {
8908      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
8909        {
8910          "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02281",
8911          "text": " If the image&#8217;s tiling is <code>VK_IMAGE_TILING_LINEAR</code> or <code>VK_IMAGE_TILING_OPTIMAL</code>, then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <em>format plane</em> for the image. (That is, for a two-plane image <code>planeAspect</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, and for a three-plane image <code>planeAspect</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>)."
8912        },
8913        {
8914          "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-sType-sType",
8915          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO</code>"
8916        },
8917        {
8918          "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-parameter",
8919          "text": " <code>planeAspect</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> value"
8920        }
8921      ],
8922      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [
8923        {
8924          "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02282",
8925          "text": "  If the image&#8217;s tiling is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>,  then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <em>memory plane</em> for the  image.  (That is, <code>aspectMask</code> <strong class=\"purple\">must</strong> specify a plane index that is less than  the  <a href=\"#VkDrmFormatModifierPropertiesEXT\"><code>drmFormatModifierPlaneCount</code></a>  associated with the image&#8217;s <a href=\"#VkImageCreateInfo\"><code>format</code></a> and <a href=\"#VkImageDrmFormatModifierPropertiesEXT\"><code>drmFormatModifier</code></a>.)"
8926        }
8927      ]
8928    },
8929    "VkMemoryRequirements2": {
8930      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
8931        {
8932          "vuid": "VUID-VkMemoryRequirements2-sType-sType",
8933          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2</code>"
8934        },
8935        {
8936          "vuid": "VUID-VkMemoryRequirements2-pNext-pNext",
8937          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>"
8938        }
8939      ]
8940    },
8941    "VkMemoryDedicatedRequirements": {
8942      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
8943        {
8944          "vuid": "VUID-VkMemoryDedicatedRequirements-sType-sType",
8945          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS</code>"
8946        }
8947      ]
8948    },
8949    "vkBindBufferMemory": {
8950      "core": [
8951        {
8952          "vuid": "VUID-vkBindBufferMemory-buffer-01029",
8953          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
8954        },
8955        {
8956          "vuid": "VUID-vkBindBufferMemory-buffer-01030",
8957          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
8958        },
8959        {
8960          "vuid": "VUID-vkBindBufferMemory-memoryOffset-01031",
8961          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
8962        },
8963        {
8964          "vuid": "VUID-vkBindBufferMemory-memory-01035",
8965          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code>"
8966        },
8967        {
8968          "vuid": "VUID-vkBindBufferMemory-memoryOffset-01036",
8969          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code>"
8970        },
8971        {
8972          "vuid": "VUID-vkBindBufferMemory-size-01037",
8973          "text": " The <code>size</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>"
8974        },
8975        {
8976          "vuid": "VUID-vkBindBufferMemory-device-parameter",
8977          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
8978        },
8979        {
8980          "vuid": "VUID-vkBindBufferMemory-buffer-parameter",
8981          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
8982        },
8983        {
8984          "vuid": "VUID-vkBindBufferMemory-memory-parameter",
8985          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
8986        },
8987        {
8988          "vuid": "VUID-vkBindBufferMemory-buffer-parent",
8989          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
8990        },
8991        {
8992          "vuid": "VUID-vkBindBufferMemory-memory-parent",
8993          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
8994        }
8995      ],
8996      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
8997        {
8998          "vuid": "VUID-vkBindBufferMemory-buffer-01444",
8999          "text": " If <code>buffer</code> requires a dedicated allocation(as reported by <a href=\"#vkGetBufferMemoryRequirements2\">vkGetBufferMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>buffer</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> equal to <code>buffer</code>"
9000        },
9001        {
9002          "vuid": "VUID-vkBindBufferMemory-memory-01508",
9003          "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>buffer</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code>, and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero."
9004        }
9005      ],
9006      "(VK_VERSION_1_1)": [
9007        {
9008          "vuid": "VUID-vkBindBufferMemory-None-01898",
9009          "text": " If buffer was created with the <code>VK_BUFFER_CREATE_PROTECTED_BIT</code> bit set, the buffer <strong class=\"purple\">must</strong> be bound to a memory object allocated with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
9010        },
9011        {
9012          "vuid": "VUID-vkBindBufferMemory-None-01899",
9013          "text": " If buffer was created with the <code>VK_BUFFER_CREATE_PROTECTED_BIT</code> bit not set, the buffer <strong class=\"purple\">must</strong> not be bound to a memory object created with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
9014        }
9015      ],
9016      "(VK_NV_dedicated_allocation)": [
9017        {
9018          "vuid": "VUID-vkBindBufferMemory-buffer-01038",
9019          "text": " If <code>buffer</code> was created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>buffer</code> equal to a buffer handle created with identical creation parameters to <code>buffer</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
9020        }
9021      ],
9022      "(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
9023        {
9024          "vuid": "VUID-vkBindBufferMemory-buffer-01039",
9025          "text": " If <code>buffer</code> was not created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image"
9026        }
9027      ]
9028    },
9029    "vkBindBufferMemory2": {
9030      "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
9031        {
9032          "vuid": "VUID-vkBindBufferMemory2-device-parameter",
9033          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
9034        },
9035        {
9036          "vuid": "VUID-vkBindBufferMemory2-pBindInfos-parameter",
9037          "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <code>VkBindBufferMemoryInfo</code> structures"
9038        },
9039        {
9040          "vuid": "VUID-vkBindBufferMemory2-bindInfoCount-arraylength",
9041          "text": " <code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
9042        }
9043      ]
9044    },
9045    "VkBindBufferMemoryInfo": {
9046      "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
9047        {
9048          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01593",
9049          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
9050        },
9051        {
9052          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01594",
9053          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
9054        },
9055        {
9056          "vuid": "VUID-VkBindBufferMemoryInfo-memoryOffset-01595",
9057          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
9058        },
9059        {
9060          "vuid": "VUID-VkBindBufferMemoryInfo-memory-01599",
9061          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code>"
9062        },
9063        {
9064          "vuid": "VUID-VkBindBufferMemoryInfo-memoryOffset-01600",
9065          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code>"
9066        },
9067        {
9068          "vuid": "VUID-VkBindBufferMemoryInfo-size-01601",
9069          "text": " The <code>size</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>"
9070        },
9071        {
9072          "vuid": "VUID-VkBindBufferMemoryInfo-sType-sType",
9073          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO</code>"
9074        },
9075        {
9076          "vuid": "VUID-VkBindBufferMemoryInfo-pNext-pNext",
9077          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a>"
9078        },
9079        {
9080          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-parameter",
9081          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
9082        },
9083        {
9084          "vuid": "VUID-VkBindBufferMemoryInfo-memory-parameter",
9085          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
9086        },
9087        {
9088          "vuid": "VUID-VkBindBufferMemoryInfo-commonparent",
9089          "text": " Both of <code>buffer</code>, and <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
9090        }
9091      ],
9092      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
9093        {
9094          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01602",
9095          "text": " If <code>buffer</code> requires a dedicated allocation(as reported by <a href=\"#vkGetBufferMemoryRequirements2\">vkGetBufferMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>buffer</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> equal to <code>buffer</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
9096        },
9097        {
9098          "vuid": "VUID-VkBindBufferMemoryInfo-memory-01900",
9099          "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>buffer</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero."
9100        }
9101      ],
9102      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)": [
9103        {
9104          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01603",
9105          "text": " If <code>buffer</code> was created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>buffer</code> equal to <code>buffer</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
9106        }
9107      ],
9108      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
9109        {
9110          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01604",
9111          "text": " If <code>buffer</code> was not created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image"
9112        }
9113      ],
9114      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
9115        {
9116          "vuid": "VUID-VkBindBufferMemoryInfo-pNext-01605",
9117          "text": " If the <code>pNext</code> chain includes <a href=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a>, all instances of <code>memory</code> specified by <a href=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a>::<code>pDeviceIndices</code> <strong class=\"purple\">must</strong> have been allocated"
9118        }
9119      ]
9120    },
9121    "VkBindBufferMemoryDeviceGroupInfo": {
9122      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
9123        {
9124          "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-deviceIndexCount-01606",
9125          "text": " <code>deviceIndexCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device"
9126        },
9127        {
9128          "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-01607",
9129          "text": " All elements of <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices"
9130        },
9131        {
9132          "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-sType-sType",
9133          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO</code>"
9134        },
9135        {
9136          "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-parameter",
9137          "text": " If <code>deviceIndexCount</code> is not <code>0</code>, <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>deviceIndexCount</code> <code>uint32_t</code> values"
9138        }
9139      ]
9140    },
9141    "vkBindImageMemory": {
9142      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
9143        {
9144          "vuid": "VUID-vkBindImageMemory-image-01608",
9145          "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> set."
9146        }
9147      ],
9148      "core": [
9149        {
9150          "vuid": "VUID-vkBindImageMemory-image-01044",
9151          "text": " <code>image</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
9152        },
9153        {
9154          "vuid": "VUID-vkBindImageMemory-image-01045",
9155          "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
9156        },
9157        {
9158          "vuid": "VUID-vkBindImageMemory-memoryOffset-01046",
9159          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
9160        },
9161        {
9162          "vuid": "VUID-vkBindImageMemory-memory-01047",
9163          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetImageMemoryRequirements</code> with <code>image</code>"
9164        },
9165        {
9166          "vuid": "VUID-vkBindImageMemory-memoryOffset-01048",
9167          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetImageMemoryRequirements</code> with <code>image</code>"
9168        },
9169        {
9170          "vuid": "VUID-vkBindImageMemory-size-01049",
9171          "text": " The <code>size</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetImageMemoryRequirements</code> with <code>image</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>"
9172        },
9173        {
9174          "vuid": "VUID-vkBindImageMemory-device-parameter",
9175          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
9176        },
9177        {
9178          "vuid": "VUID-vkBindImageMemory-image-parameter",
9179          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
9180        },
9181        {
9182          "vuid": "VUID-vkBindImageMemory-memory-parameter",
9183          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
9184        },
9185        {
9186          "vuid": "VUID-vkBindImageMemory-image-parent",
9187          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
9188        },
9189        {
9190          "vuid": "VUID-vkBindImageMemory-memory-parent",
9191          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
9192        }
9193      ],
9194      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
9195        {
9196          "vuid": "VUID-vkBindImageMemory-image-01445",
9197          "text": " If <code>image</code> requires a dedicated allocation (as reported by <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>image</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> equal to <code>image</code>"
9198        }
9199      ],
9200      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_NV_dedicated_allocation_image_aliasing)": [
9201        {
9202          "vuid": "VUID-vkBindImageMemory-memory-01509",
9203          "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero."
9204        }
9205      ],
9206      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_NV_dedicated_allocation_image_aliasing)": [
9207        {
9208          "vuid": "VUID-vkBindImageMemory-memory-02628",
9209          "text": " If the <a href=\"#features-dedicatedAllocationImageAliasing\">dedicated allocation image aliasing</a> feature is not enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero."
9210        },
9211        {
9212          "vuid": "VUID-vkBindImageMemory-memory-02629",
9213          "text": " If the <a href=\"#features-dedicatedAllocationImageAliasing\">dedicated allocation image aliasing</a> feature is enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero, and <code>image</code> <strong class=\"purple\">must</strong> be either equal to <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> or an image that was created using the same parameters in <code>VkImageCreateInfo</code>, with the exception that <code>extent</code> and <code>arrayLayers</code> <strong class=\"purple\">may</strong> differ subject to the following restrictions: every dimension in the <code>extent</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created; and the <code>arrayLayers</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created."
9214        }
9215      ],
9216      "(VK_VERSION_1_1)": [
9217        {
9218          "vuid": "VUID-vkBindImageMemory-None-01901",
9219          "text": " If image was created with the <code>VK_IMAGE_CREATE_PROTECTED_BIT</code> bit set, the image <strong class=\"purple\">must</strong> be bound to a memory object allocated with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
9220        },
9221        {
9222          "vuid": "VUID-vkBindImageMemory-None-01902",
9223          "text": " If image was created with the <code>VK_IMAGE_CREATE_PROTECTED_BIT</code> bit not set, the image <strong class=\"purple\">must</strong> not be bound to a memory object created with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
9224        }
9225      ],
9226      "(VK_NV_dedicated_allocation)": [
9227        {
9228          "vuid": "VUID-vkBindImageMemory-image-01050",
9229          "text": " If <code>image</code> was created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>image</code> equal to an image handle created with identical creation parameters to <code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
9230        }
9231      ],
9232      "(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
9233        {
9234          "vuid": "VUID-vkBindImageMemory-image-01051",
9235          "text": " If <code>image</code> was not created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image"
9236        }
9237      ]
9238    },
9239    "vkBindImageMemory2": {
9240      "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
9241        {
9242          "vuid": "VUID-vkBindImageMemory2-device-parameter",
9243          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
9244        },
9245        {
9246          "vuid": "VUID-vkBindImageMemory2-pBindInfos-parameter",
9247          "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <code>VkBindImageMemoryInfo</code> structures"
9248        },
9249        {
9250          "vuid": "VUID-vkBindImageMemory2-bindInfoCount-arraylength",
9251          "text": " <code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
9252        }
9253      ]
9254    },
9255    "VkBindImageMemoryInfo": {
9256      "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
9257        {
9258          "vuid": "VUID-VkBindImageMemoryInfo-image-01609",
9259          "text": " <code>image</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
9260        },
9261        {
9262          "vuid": "VUID-VkBindImageMemoryInfo-image-01610",
9263          "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
9264        },
9265        {
9266          "vuid": "VUID-VkBindImageMemoryInfo-memoryOffset-01611",
9267          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
9268        },
9269        {
9270          "vuid": "VUID-VkBindImageMemoryInfo-sType-sType",
9271          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO</code>"
9272        },
9273        {
9274          "vuid": "VUID-VkBindImageMemoryInfo-pNext-pNext",
9275          "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>, <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a>, or <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a>"
9276        },
9277        {
9278          "vuid": "VUID-VkBindImageMemoryInfo-sType-unique",
9279          "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
9280        },
9281        {
9282          "vuid": "VUID-VkBindImageMemoryInfo-image-parameter",
9283          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
9284        },
9285        {
9286          "vuid": "VUID-VkBindImageMemoryInfo-commonparent",
9287          "text": " Both of <code>image</code>, and <code>memory</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
9288        }
9289      ],
9290      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
9291        {
9292          "vuid": "VUID-VkBindImageMemoryInfo-memory-01612",
9293          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements\">vkGetImageMemoryRequirements</a> with <code>image</code>"
9294        },
9295        {
9296          "vuid": "VUID-VkBindImageMemoryInfo-memoryOffset-01613",
9297          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements\">vkGetImageMemoryRequirements</a> with <code>image</code>"
9298        },
9299        {
9300          "vuid": "VUID-VkBindImageMemoryInfo-memory-01614",
9301          "text": " The difference of the size of <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements\">vkGetImageMemoryRequirements</a> with the same <code>image</code>"
9302        }
9303      ],
9304      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
9305        {
9306          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01615",
9307          "text": " If the <code>pNext</code> chain does not include an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code>"
9308        },
9309        {
9310          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01616",
9311          "text": " If the <code>pNext</code> chain does not include an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code>"
9312        },
9313        {
9314          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01617",
9315          "text": " If the <code>pNext</code> chain does not include an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, the difference of the size of <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with the same <code>image</code>"
9316        },
9317        {
9318          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01618",
9319          "text": " If the <code>pNext</code> chain includes an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>image</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> bit set."
9320        },
9321        {
9322          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01619",
9323          "text": " If the <code>pNext</code> chain includes an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code> and the correct <code>planeAspect</code> for this plane in the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> structure attached to the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a>&#8217;s <code>pNext</code> chain"
9324        },
9325        {
9326          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01620",
9327          "text": " If the <code>pNext</code> chain includes an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code> and the correct <code>planeAspect</code> for this plane in the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> structure attached to the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a>&#8217;s <code>pNext</code> chain"
9328        },
9329        {
9330          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01621",
9331          "text": " If the <code>pNext</code> chain includes an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, the difference of the size of <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with the same <code>image</code> and the correct <code>planeAspect</code> for this plane in the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> structure attached to the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a>&#8217;s <code>pNext</code> chain"
9332        }
9333      ],
9334      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
9335        {
9336          "vuid": "VUID-VkBindImageMemoryInfo-image-01622",
9337          "text": " If <code>image</code> requires a dedicated allocation (as reported by <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>image</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> equal to <code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
9338        }
9339      ],
9340      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_NV_dedicated_allocation_image_aliasing)": [
9341        {
9342          "vuid": "VUID-VkBindImageMemoryInfo-memory-01903",
9343          "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero."
9344        }
9345      ],
9346      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_NV_dedicated_allocation_image_aliasing)": [
9347        {
9348          "vuid": "VUID-VkBindImageMemoryInfo-memory-02630",
9349          "text": " If the <a href=\"#features-dedicatedAllocationImageAliasing\">dedicated allocation image aliasing</a> feature is not enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero."
9350        },
9351        {
9352          "vuid": "VUID-VkBindImageMemoryInfo-memory-02631",
9353          "text": " If the <a href=\"#features-dedicatedAllocationImageAliasing\">dedicated allocation image aliasing</a> feature is enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero, and <code>image</code> <strong class=\"purple\">must</strong> be either equal to <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> or an image that was created using the same parameters in <code>VkImageCreateInfo</code>, with the exception that <code>extent</code> and <code>arrayLayers</code> <strong class=\"purple\">may</strong> differ subject to the following restrictions: every dimension in the <code>extent</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created; and the <code>arrayLayers</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created."
9354        }
9355      ],
9356      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)": [
9357        {
9358          "vuid": "VUID-VkBindImageMemoryInfo-image-01623",
9359          "text": " If <code>image</code> was created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>image</code> equal to <code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
9360        }
9361      ],
9362      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
9363        {
9364          "vuid": "VUID-VkBindImageMemoryInfo-image-01624",
9365          "text": " If <code>image</code> was not created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image"
9366        }
9367      ],
9368      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+!(VK_VERSION_1_1+VK_KHR_swapchain)+!(VK_KHR_device_group+VK_KHR_swapchain)": [
9369        {
9370          "vuid": "VUID-VkBindImageMemoryInfo-memory-01625",
9371          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
9372        }
9373      ],
9374      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
9375        {
9376          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01626",
9377          "text": " If the <code>pNext</code> chain includes <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>, all instances of <code>memory</code> specified by <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pDeviceIndices</code> <strong class=\"purple\">must</strong> have been allocated"
9378        },
9379        {
9380          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01627",
9381          "text": " If the <code>pNext</code> chain includes <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>, and <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>splitInstanceBindRegionCount</code> is not zero, then <code>image</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT</code> bit set"
9382        },
9383        {
9384          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01628",
9385          "text": " If the <code>pNext</code> chain includes <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>, all elements of <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be valid rectangles contained within the dimensions of <code>image</code>"
9386        },
9387        {
9388          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01629",
9389          "text": " If the <code>pNext</code> chain includes <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>, the union of the areas of all elements of <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pSplitInstanceBindRegions</code> that correspond to the same instance of <code>image</code> <strong class=\"purple\">must</strong> cover the entire image."
9390        }
9391      ],
9392      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [
9393        {
9394          "vuid": "VUID-VkBindImageMemoryInfo-image-01630",
9395          "text": " If <code>image</code> was created with a valid swapchain handle in <a href=\"#VkImageSwapchainCreateInfoKHR\">VkImageSwapchainCreateInfoKHR</a>::<code>swapchain</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a valid instance of <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a>"
9396        },
9397        {
9398          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01631",
9399          "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a>, <code>memory</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
9400        },
9401        {
9402          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01632",
9403          "text": " If the <code>pNext</code> chain does not include an instance of <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
9404        }
9405      ]
9406    },
9407    "VkBindImageMemoryDeviceGroupInfo": {
9408      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
9409        {
9410          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01633",
9411          "text": " At least one of <code>deviceIndexCount</code> and <code>splitInstanceBindRegionCount</code> <strong class=\"purple\">must</strong> be zero."
9412        },
9413        {
9414          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01634",
9415          "text": " <code>deviceIndexCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device"
9416        },
9417        {
9418          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-01635",
9419          "text": " All elements of <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices."
9420        },
9421        {
9422          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-splitInstanceBindRegionCount-01636",
9423          "text": " <code>splitInstanceBindRegionCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device squared"
9424        },
9425        {
9426          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-01637",
9427          "text": " Elements of <code>pSplitInstanceBindRegions</code> that correspond to the same instance of an image <strong class=\"purple\">must</strong> not overlap."
9428        },
9429        {
9430          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-offset-01638",
9431          "text": " The <code>offset.x</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block width (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.width</code>) of all non-metadata aspects of the image"
9432        },
9433        {
9434          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-offset-01639",
9435          "text": " The <code>offset.y</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block height (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.height</code>) of all non-metadata aspects of the image"
9436        },
9437        {
9438          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-extent-01640",
9439          "text": " The <code>extent.width</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block width of all non-metadata aspects of the image, or else <code>extent.width</code> + <code>offset.x</code> <strong class=\"purple\">must</strong> equal the width of the image subresource"
9440        },
9441        {
9442          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-extent-01641",
9443          "text": " The <code>extent.height</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block height of all non-metadata aspects of the image, or else <code>extent.height</code><br> <code>offset.y</code> <strong class=\"purple\">must</strong> equal the width of the image subresource"
9444        },
9445        {
9446          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-sType-sType",
9447          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO</code>"
9448        },
9449        {
9450          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-parameter",
9451          "text": " If <code>deviceIndexCount</code> is not <code>0</code>, <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>deviceIndexCount</code> <code>uint32_t</code> values"
9452        },
9453        {
9454          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-parameter",
9455          "text": " If <code>splitInstanceBindRegionCount</code> is not <code>0</code>, <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>splitInstanceBindRegionCount</code> <code>VkRect2D</code> structures"
9456        }
9457      ]
9458    },
9459    "VkBindImageMemorySwapchainInfoKHR": {
9460      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [
9461        {
9462          "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-imageIndex-01644",
9463          "text": " <code>imageIndex</code> <strong class=\"purple\">must</strong> be less than the number of images in <code>swapchain</code>"
9464        },
9465        {
9466          "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-sType-sType",
9467          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR</code>"
9468        },
9469        {
9470          "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-swapchain-parameter",
9471          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
9472        }
9473      ]
9474    },
9475    "VkBindImagePlaneMemoryInfo": {
9476      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
9477        {
9478          "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-02283",
9479          "text": " If the image&#8217;s tiling is <code>VK_IMAGE_TILING_LINEAR</code> or <code>VK_IMAGE_TILING_OPTIMAL</code>, then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <em>format plane</em> for the image. (That is, <code>planeAspect</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code> for &#8220;<code>_2PLANE</code>&#8221; formats and <code>planeAspect</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> for &#8220;<code>_3PLANE</code>&#8221; formats.)"
9480        },
9481        {
9482          "vuid": "VUID-VkBindImagePlaneMemoryInfo-None-01643",
9483          "text": " A single call to <a href=\"#vkBindImageMemory2\">vkBindImageMemory2</a> <strong class=\"purple\">must</strong> bind all or none of the planes of an image (i.e. bindings to all planes of an image <strong class=\"purple\">must</strong> be made in a single <a href=\"#vkBindImageMemory2\">vkBindImageMemory2</a> call), as separate bindings"
9484        },
9485        {
9486          "vuid": "VUID-VkBindImagePlaneMemoryInfo-sType-sType",
9487          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO</code>"
9488        },
9489        {
9490          "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-parameter",
9491          "text": " <code>planeAspect</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> value"
9492        }
9493      ],
9494      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [
9495        {
9496          "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-02284",
9497          "text": "  If the image&#8217;s tiling is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>,  then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <em>memory plane</em> for the  image.  (That is, <code>aspectMask</code> <strong class=\"purple\">must</strong> specify a plane index that is less than  the  <a href=\"#VkDrmFormatModifierPropertiesEXT\"><code>drmFormatModifierPlaneCount</code></a>  associated with the image&#8217;s <a href=\"#VkImageCreateInfo\"><code>format</code></a> and <a href=\"#VkImageDrmFormatModifierPropertiesEXT\"><code>drmFormatModifier</code></a>.)"
9498        }
9499      ]
9500    },
9501    "vkCreateAccelerationStructureNV": {
9502      "(VK_NV_ray_tracing)": [
9503        {
9504          "vuid": "VUID-vkCreateAccelerationStructureNV-device-parameter",
9505          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
9506        },
9507        {
9508          "vuid": "VUID-vkCreateAccelerationStructureNV-pCreateInfo-parameter",
9509          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAccelerationStructureCreateInfoNV</code> structure"
9510        },
9511        {
9512          "vuid": "VUID-vkCreateAccelerationStructureNV-pAllocator-parameter",
9513          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
9514        },
9515        {
9516          "vuid": "VUID-vkCreateAccelerationStructureNV-pAccelerationStructure-parameter",
9517          "text": " <code>pAccelerationStructure</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkAccelerationStructureNV</code> handle"
9518        }
9519      ]
9520    },
9521    "VkAccelerationStructureCreateInfoNV": {
9522      "(VK_NV_ray_tracing)": [
9523        {
9524          "vuid": "VUID-VkAccelerationStructureCreateInfoNV-compactedSize-02421",
9525          "text": " If <code>compactedSize</code> is not <code>0</code> then both <code>info.geometryCount</code> and <code>info.instanceCount</code> <strong class=\"purple\">must</strong> be <code>0</code>"
9526        },
9527        {
9528          "vuid": "VUID-VkAccelerationStructureCreateInfoNV-sType-sType",
9529          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV</code>"
9530        },
9531        {
9532          "vuid": "VUID-VkAccelerationStructureCreateInfoNV-pNext-pNext",
9533          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
9534        },
9535        {
9536          "vuid": "VUID-VkAccelerationStructureCreateInfoNV-info-parameter",
9537          "text": " <code>info</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureInfoNV</code> structure"
9538        }
9539      ]
9540    },
9541    "VkAccelerationStructureInfoNV": {
9542      "(VK_NV_ray_tracing)": [
9543        {
9544          "vuid": "VUID-VkAccelerationStructureInfoNV-geometryCount-02422",
9545          "text": " <code>geometryCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxGeometryCount</code>"
9546        },
9547        {
9548          "vuid": "VUID-VkAccelerationStructureInfoNV-instanceCount-02423",
9549          "text": " <code>instanceCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxInstanceCount</code>"
9550        },
9551        {
9552          "vuid": "VUID-VkAccelerationStructureInfoNV-maxTriangleCount-02424",
9553          "text": " The total number of triangles in all geometries <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxTriangleCount</code>"
9554        },
9555        {
9556          "vuid": "VUID-VkAccelerationStructureInfoNV-type-02425",
9557          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV</code> then <code>geometryCount</code> <strong class=\"purple\">must</strong> be <code>0</code>"
9558        },
9559        {
9560          "vuid": "VUID-VkAccelerationStructureInfoNV-type-02426",
9561          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV</code> then <code>instanceCount</code> <strong class=\"purple\">must</strong> be <code>0</code>"
9562        },
9563        {
9564          "vuid": "VUID-VkAccelerationStructureInfoNV-flags-02592",
9565          "text": " If <code>flags</code> has the <code>VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV</code> bit set, then it <strong class=\"purple\">must</strong> not have the <code>VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV</code> bit set"
9566        },
9567        {
9568          "vuid": "VUID-VkAccelerationStructureInfoNV-sType-sType",
9569          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV</code>"
9570        },
9571        {
9572          "vuid": "VUID-VkAccelerationStructureInfoNV-pNext-pNext",
9573          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
9574        },
9575        {
9576          "vuid": "VUID-VkAccelerationStructureInfoNV-type-parameter",
9577          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureTypeNV\">VkAccelerationStructureTypeNV</a> value"
9578        },
9579        {
9580          "vuid": "VUID-VkAccelerationStructureInfoNV-flags-parameter",
9581          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBuildAccelerationStructureFlagBitsNV\">VkBuildAccelerationStructureFlagBitsNV</a> values"
9582        },
9583        {
9584          "vuid": "VUID-VkAccelerationStructureInfoNV-pGeometries-parameter",
9585          "text": " If <code>geometryCount</code> is not <code>0</code>, <code>pGeometries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>geometryCount</code> valid <code>VkGeometryNV</code> structures"
9586        }
9587      ]
9588    },
9589    "VkGeometryNV": {
9590      "(VK_NV_ray_tracing)": [
9591        {
9592          "vuid": "VUID-VkGeometryNV-sType-sType",
9593          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_NV</code>"
9594        },
9595        {
9596          "vuid": "VUID-VkGeometryNV-pNext-pNext",
9597          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
9598        },
9599        {
9600          "vuid": "VUID-VkGeometryNV-geometryType-parameter",
9601          "text": " <code>geometryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryTypeNV\">VkGeometryTypeNV</a> value"
9602        },
9603        {
9604          "vuid": "VUID-VkGeometryNV-geometry-parameter",
9605          "text": " <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <code>VkGeometryDataNV</code> structure"
9606        },
9607        {
9608          "vuid": "VUID-VkGeometryNV-flags-parameter",
9609          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkGeometryFlagBitsNV\">VkGeometryFlagBitsNV</a> values"
9610        }
9611      ]
9612    },
9613    "VkGeometryDataNV": {
9614      "(VK_NV_ray_tracing)": [
9615        {
9616          "vuid": "VUID-VkGeometryDataNV-triangles-parameter",
9617          "text": " <code>triangles</code> <strong class=\"purple\">must</strong> be a valid <code>VkGeometryTrianglesNV</code> structure"
9618        },
9619        {
9620          "vuid": "VUID-VkGeometryDataNV-aabbs-parameter",
9621          "text": " <code>aabbs</code> <strong class=\"purple\">must</strong> be a valid <code>VkGeometryAABBNV</code> structure"
9622        }
9623      ]
9624    },
9625    "VkGeometryTrianglesNV": {
9626      "(VK_NV_ray_tracing)": [
9627        {
9628          "vuid": "VUID-VkGeometryTrianglesNV-vertexOffset-02428",
9629          "text": " <code>vertexOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>vertexData</code>"
9630        },
9631        {
9632          "vuid": "VUID-VkGeometryTrianglesNV-vertexOffset-02429",
9633          "text": " <code>vertexOffset</code> <strong class=\"purple\">must</strong> be a multiple of the component size of <code>vertexFormat</code>"
9634        },
9635        {
9636          "vuid": "VUID-VkGeometryTrianglesNV-vertexFormat-02430",
9637          "text": " <code>vertexFormat</code> <strong class=\"purple\">must</strong> be one of <code>VK_FORMAT_R32G32B32_SFLOAT</code>, <code>VK_FORMAT_R32G32_SFLOAT</code>, <code>VK_FORMAT_R16G16B16_SFLOAT</code>, <code>VK_FORMAT_R16G16_SFLOAT</code>, <code>VK_FORMAT_R16G16_SNORM</code>, or <code>VK_FORMAT_R16G16B16_SNORM</code>"
9638        },
9639        {
9640          "vuid": "VUID-VkGeometryTrianglesNV-indexOffset-02431",
9641          "text": " <code>indexOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>indexData</code>"
9642        },
9643        {
9644          "vuid": "VUID-VkGeometryTrianglesNV-indexOffset-02432",
9645          "text": " <code>indexOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of <code>indexType</code>"
9646        },
9647        {
9648          "vuid": "VUID-VkGeometryTrianglesNV-indexType-02433",
9649          "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be <code>VK_INDEX_TYPE_UINT16</code>, <code>VK_INDEX_TYPE_UINT32</code>, or <code>VK_INDEX_TYPE_NONE_NV</code>"
9650        },
9651        {
9652          "vuid": "VUID-VkGeometryTrianglesNV-indexData-02434",
9653          "text": " <code>indexData</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> if <code>indexType</code> is <code>VK_INDEX_TYPE_NONE_NV</code>"
9654        },
9655        {
9656          "vuid": "VUID-VkGeometryTrianglesNV-indexData-02435",
9657          "text": " <code>indexData</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle if <code>indexType</code> is not <code>VK_INDEX_TYPE_NONE_NV</code>"
9658        },
9659        {
9660          "vuid": "VUID-VkGeometryTrianglesNV-indexCount-02436",
9661          "text": " <code>indexCount</code> <strong class=\"purple\">must</strong> be <code>0</code> if <code>indexType</code> is <code>VK_INDEX_TYPE_NONE_NV</code>"
9662        },
9663        {
9664          "vuid": "VUID-VkGeometryTrianglesNV-transformOffset-02437",
9665          "text": " <code>transformOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>transformData</code>"
9666        },
9667        {
9668          "vuid": "VUID-VkGeometryTrianglesNV-transformOffset-02438",
9669          "text": " <code>transformOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>16</code>"
9670        },
9671        {
9672          "vuid": "VUID-VkGeometryTrianglesNV-sType-sType",
9673          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV</code>"
9674        },
9675        {
9676          "vuid": "VUID-VkGeometryTrianglesNV-pNext-pNext",
9677          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
9678        },
9679        {
9680          "vuid": "VUID-VkGeometryTrianglesNV-vertexData-parameter",
9681          "text": " If <code>vertexData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>vertexData</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
9682        },
9683        {
9684          "vuid": "VUID-VkGeometryTrianglesNV-vertexFormat-parameter",
9685          "text": " <code>vertexFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
9686        },
9687        {
9688          "vuid": "VUID-VkGeometryTrianglesNV-indexData-parameter",
9689          "text": " If <code>indexData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>indexData</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
9690        },
9691        {
9692          "vuid": "VUID-VkGeometryTrianglesNV-indexType-parameter",
9693          "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value"
9694        },
9695        {
9696          "vuid": "VUID-VkGeometryTrianglesNV-transformData-parameter",
9697          "text": " If <code>transformData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>transformData</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
9698        },
9699        {
9700          "vuid": "VUID-VkGeometryTrianglesNV-commonparent",
9701          "text": " Each of <code>indexData</code>, <code>transformData</code>, and <code>vertexData</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
9702        }
9703      ]
9704    },
9705    "VkGeometryAABBNV": {
9706      "(VK_NV_ray_tracing)": [
9707        {
9708          "vuid": "VUID-VkGeometryAABBNV-offset-02439",
9709          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>aabbData</code>"
9710        },
9711        {
9712          "vuid": "VUID-VkGeometryAABBNV-offset-02440",
9713          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>8</code>"
9714        },
9715        {
9716          "vuid": "VUID-VkGeometryAABBNV-stride-02441",
9717          "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>8</code>"
9718        },
9719        {
9720          "vuid": "VUID-VkGeometryAABBNV-sType-sType",
9721          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV</code>"
9722        },
9723        {
9724          "vuid": "VUID-VkGeometryAABBNV-pNext-pNext",
9725          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
9726        },
9727        {
9728          "vuid": "VUID-VkGeometryAABBNV-aabbData-parameter",
9729          "text": " If <code>aabbData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>aabbData</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
9730        }
9731      ]
9732    },
9733    "vkDestroyAccelerationStructureNV": {
9734      "(VK_NV_ray_tracing)": [
9735        {
9736          "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-02442",
9737          "text": " All submitted commands that refer to <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have completed execution"
9738        },
9739        {
9740          "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-02443",
9741          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>accelerationStructure</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
9742        },
9743        {
9744          "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-02444",
9745          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>accelerationStructure</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
9746        },
9747        {
9748          "vuid": "VUID-vkDestroyAccelerationStructureNV-device-parameter",
9749          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
9750        },
9751        {
9752          "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-parameter",
9753          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle"
9754        },
9755        {
9756          "vuid": "VUID-vkDestroyAccelerationStructureNV-pAllocator-parameter",
9757          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
9758        },
9759        {
9760          "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-parent",
9761          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
9762        }
9763      ]
9764    },
9765    "vkGetAccelerationStructureMemoryRequirementsNV": {
9766      "(VK_NV_ray_tracing)": [
9767        {
9768          "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-device-parameter",
9769          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
9770        },
9771        {
9772          "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-pInfo-parameter",
9773          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAccelerationStructureMemoryRequirementsInfoNV</code> structure"
9774        },
9775        {
9776          "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-pMemoryRequirements-parameter",
9777          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryRequirements2KHR</code> structure"
9778        }
9779      ]
9780    },
9781    "VkAccelerationStructureMemoryRequirementsInfoNV": {
9782      "(VK_NV_ray_tracing)": [
9783        {
9784          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-sType-sType",
9785          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV</code>"
9786        },
9787        {
9788          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-pNext-pNext",
9789          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
9790        },
9791        {
9792          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-type-parameter",
9793          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureMemoryRequirementsTypeNV\">VkAccelerationStructureMemoryRequirementsTypeNV</a> value"
9794        },
9795        {
9796          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-accelerationStructure-parameter",
9797          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle"
9798        }
9799      ]
9800    },
9801    "vkBindAccelerationStructureMemoryNV": {
9802      "(VK_NV_ray_tracing)": [
9803        {
9804          "vuid": "VUID-vkBindAccelerationStructureMemoryNV-device-parameter",
9805          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
9806        },
9807        {
9808          "vuid": "VUID-vkBindAccelerationStructureMemoryNV-pBindInfos-parameter",
9809          "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <code>VkBindAccelerationStructureMemoryInfoNV</code> structures"
9810        },
9811        {
9812          "vuid": "VUID-vkBindAccelerationStructureMemoryNV-bindInfoCount-arraylength",
9813          "text": " <code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
9814        }
9815      ]
9816    },
9817    "VkBindAccelerationStructureMemoryInfoNV": {
9818      "(VK_NV_ray_tracing)": [
9819        {
9820          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-accelerationStructure-02450",
9821          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
9822        },
9823        {
9824          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-02451",
9825          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
9826        },
9827        {
9828          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memory-02593",
9829          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <code>accelerationStructure</code> and <code>type</code> of <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV</code>"
9830        },
9831        {
9832          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-02594",
9833          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <code>accelerationStructure</code> and <code>type</code> of <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV</code>"
9834        },
9835        {
9836          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-size-02595",
9837          "text": " The <code>size</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <code>accelerationStructure</code> and <code>type</code> of <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>"
9838        },
9839        {
9840          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-sType-sType",
9841          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV</code>"
9842        },
9843        {
9844          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-pNext-pNext",
9845          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
9846        },
9847        {
9848          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-accelerationStructure-parameter",
9849          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle"
9850        },
9851        {
9852          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memory-parameter",
9853          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
9854        },
9855        {
9856          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-pDeviceIndices-parameter",
9857          "text": " If <code>deviceIndexCount</code> is not <code>0</code>, <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>deviceIndexCount</code> <code>uint32_t</code> values"
9858        },
9859        {
9860          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-commonparent",
9861          "text": " Both of <code>accelerationStructure</code>, and <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
9862        }
9863      ]
9864    },
9865    "vkGetAccelerationStructureHandleNV": {
9866      "(VK_NV_ray_tracing)": [
9867        {
9868          "vuid": "VUID-vkGetAccelerationStructureHandleNV-dataSize-02240",
9869          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be large enough to contain the result of the query, as described above"
9870        },
9871        {
9872          "vuid": "VUID-vkGetAccelerationStructureHandleNV-device-parameter",
9873          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
9874        },
9875        {
9876          "vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parameter",
9877          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle"
9878        },
9879        {
9880          "vuid": "VUID-vkGetAccelerationStructureHandleNV-pData-parameter",
9881          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
9882        },
9883        {
9884          "vuid": "VUID-vkGetAccelerationStructureHandleNV-dataSize-arraylength",
9885          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
9886        },
9887        {
9888          "vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parent",
9889          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
9890        }
9891      ]
9892    },
9893    "vkCreateSampler": {
9894      "core": [
9895        {
9896          "vuid": "VUID-vkCreateSampler-device-parameter",
9897          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
9898        },
9899        {
9900          "vuid": "VUID-vkCreateSampler-pCreateInfo-parameter",
9901          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSamplerCreateInfo</code> structure"
9902        },
9903        {
9904          "vuid": "VUID-vkCreateSampler-pAllocator-parameter",
9905          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
9906        },
9907        {
9908          "vuid": "VUID-vkCreateSampler-pSampler-parameter",
9909          "text": " <code>pSampler</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSampler</code> handle"
9910        }
9911      ]
9912    },
9913    "VkSamplerCreateInfo": {
9914      "core": [
9915        {
9916          "vuid": "VUID-VkSamplerCreateInfo-mipLodBias-01069",
9917          "text": " The absolute value of <code>mipLodBias</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxSamplerLodBias</code>"
9918        },
9919        {
9920          "vuid": "VUID-VkSamplerCreateInfo-maxLod-01973",
9921          "text": " <code>maxLod</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>minLod</code>"
9922        },
9923        {
9924          "vuid": "VUID-VkSamplerCreateInfo-anisotropyEnable-01070",
9925          "text": " If the <a href=\"#features-samplerAnisotropy\">anisotropic sampling</a> feature is not enabled, <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
9926        },
9927        {
9928          "vuid": "VUID-VkSamplerCreateInfo-anisotropyEnable-01071",
9929          "text": " If <code>anisotropyEnable</code> is <code>VK_TRUE</code>, <code>maxAnisotropy</code> <strong class=\"purple\">must</strong> be between <code>1.0</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxSamplerAnisotropy</code>, inclusive"
9930        },
9931        {
9932          "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01072",
9933          "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>minFilter</code> and <code>magFilter</code> <strong class=\"purple\">must</strong> be equal"
9934        },
9935        {
9936          "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01073",
9937          "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>mipmapMode</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_MIPMAP_MODE_NEAREST</code>"
9938        },
9939        {
9940          "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01074",
9941          "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>minLod</code> and <code>maxLod</code> <strong class=\"purple\">must</strong> be zero"
9942        },
9943        {
9944          "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01075",
9945          "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>addressModeU</code> and <code>addressModeV</code> <strong class=\"purple\">must</strong> each be either <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code> or <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER</code>"
9946        },
9947        {
9948          "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01076",
9949          "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
9950        },
9951        {
9952          "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01077",
9953          "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>compareEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
9954        },
9955        {
9956          "vuid": "VUID-VkSamplerCreateInfo-addressModeU-01078",
9957          "text": " If any of <code>addressModeU</code>, <code>addressModeV</code> or <code>addressModeW</code> are <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER</code>, <code>borderColor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBorderColor\">VkBorderColor</a> value"
9958        },
9959        {
9960          "vuid": "VUID-VkSamplerCreateInfo-addressModeU-01079",
9961          "text": " If the <code><a href=\"#VK_KHR_sampler_mirror_clamp_to_edge\">VK_KHR_sampler_mirror_clamp_to_edge</a></code> extension is not enabled, <code>addressModeU</code>, <code>addressModeV</code> and <code>addressModeW</code> <strong class=\"purple\">must</strong> not be <code>VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE</code>"
9962        },
9963        {
9964          "vuid": "VUID-VkSamplerCreateInfo-compareEnable-01080",
9965          "text": " If <code>compareEnable</code> is <code>VK_TRUE</code>, <code>compareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value"
9966        },
9967        {
9968          "vuid": "VUID-VkSamplerCreateInfo-sType-sType",
9969          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO</code>"
9970        },
9971        {
9972          "vuid": "VUID-VkSamplerCreateInfo-pNext-pNext",
9973          "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkSamplerReductionModeCreateInfoEXT\">VkSamplerReductionModeCreateInfoEXT</a> or <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a>"
9974        },
9975        {
9976          "vuid": "VUID-VkSamplerCreateInfo-sType-unique",
9977          "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
9978        },
9979        {
9980          "vuid": "VUID-VkSamplerCreateInfo-flags-parameter",
9981          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSamplerCreateFlagBits\">VkSamplerCreateFlagBits</a> values"
9982        },
9983        {
9984          "vuid": "VUID-VkSamplerCreateInfo-magFilter-parameter",
9985          "text": " <code>magFilter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value"
9986        },
9987        {
9988          "vuid": "VUID-VkSamplerCreateInfo-minFilter-parameter",
9989          "text": " <code>minFilter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value"
9990        },
9991        {
9992          "vuid": "VUID-VkSamplerCreateInfo-mipmapMode-parameter",
9993          "text": " <code>mipmapMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerMipmapMode\">VkSamplerMipmapMode</a> value"
9994        },
9995        {
9996          "vuid": "VUID-VkSamplerCreateInfo-addressModeU-parameter",
9997          "text": " <code>addressModeU</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> value"
9998        },
9999        {
10000          "vuid": "VUID-VkSamplerCreateInfo-addressModeV-parameter",
10001          "text": " <code>addressModeV</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> value"
10002        },
10003        {
10004          "vuid": "VUID-VkSamplerCreateInfo-addressModeW-parameter",
10005          "text": " <code>addressModeW</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> value"
10006        }
10007      ],
10008      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
10009        {
10010          "vuid": "VUID-VkSamplerCreateInfo-minFilter-01645",
10011          "text": " If <a href=\"#samplers-YCbCr-conversion\">sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion</a> is enabled and <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT</code> is not set for the format, <code>minFilter</code> and <code>magFilter</code> <strong class=\"purple\">must</strong> be equal to the sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion&#8217;s <code>chromaFilter</code>"
10012        },
10013        {
10014          "vuid": "VUID-VkSamplerCreateInfo-addressModeU-01646",
10015          "text": " If <a href=\"#samplers-YCbCr-conversion\">sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion</a> is enabled, <code>addressModeU</code>, <code>addressModeV</code>, and <code>addressModeW</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>, <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>, and <code>unnormalizedCoordinates</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
10016        }
10017      ],
10018      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_sampler_filter_minmax)": [
10019        {
10020          "vuid": "VUID-VkSamplerCreateInfo-None-01647",
10021          "text": " The sampler reduction mode <strong class=\"purple\">must</strong> be set to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT</code> if <a href=\"#samplers-YCbCr-conversion\">sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion</a> is enabled"
10022        }
10023      ],
10024      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
10025        {
10026          "vuid": "VUID-VkSamplerCreateInfo-magFilter-01081",
10027          "text": " If either <code>magFilter</code> or <code>minFilter</code> is <code>VK_FILTER_CUBIC_EXT</code>, <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
10028        }
10029      ],
10030      "(VK_IMG_filter_cubic+VK_EXT_sampler_filter_minmax)+!(VK_EXT_filter_cubic)": [
10031        {
10032          "vuid": "VUID-VkSamplerCreateInfo-magFilter-01422",
10033          "text": " If either <code>magFilter</code> or <code>minFilter</code> is <code>VK_FILTER_CUBIC_EXT</code>, the <code>reductionMode</code> member of <a href=\"#VkSamplerReductionModeCreateInfoEXT\">VkSamplerReductionModeCreateInfoEXT</a> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT</code>"
10034        }
10035      ],
10036      "(VK_EXT_sampler_filter_minmax)": [
10037        {
10038          "vuid": "VUID-VkSamplerCreateInfo-compareEnable-01423",
10039          "text": " If <code>compareEnable</code> is <code>VK_TRUE</code>, the <code>reductionMode</code> member of <a href=\"#VkSamplerReductionModeCreateInfoEXT\">VkSamplerReductionModeCreateInfoEXT</a> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT</code>"
10040        }
10041      ],
10042      "(VK_EXT_fragment_density_map)": [
10043        {
10044          "vuid": "VUID-VkSamplerCreateInfo-flags-02574",
10045          "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code>, then <code>minFilter</code> and <code>magFilter</code> <strong class=\"purple\">must</strong> be equal."
10046        },
10047        {
10048          "vuid": "VUID-VkSamplerCreateInfo-flags-02575",
10049          "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code>, then <code>mipmapMode</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_MIPMAP_MODE_NEAREST</code>."
10050        },
10051        {
10052          "vuid": "VUID-VkSamplerCreateInfo-flags-02576",
10053          "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code>, then <code>minLod</code> and <code>maxLod</code> <strong class=\"purple\">must</strong> be zero."
10054        },
10055        {
10056          "vuid": "VUID-VkSamplerCreateInfo-flags-02577",
10057          "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code>, then <code>addressModeU</code> and <code>addressModeV</code> <strong class=\"purple\">must</strong> each be either <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code> or <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER</code>."
10058        },
10059        {
10060          "vuid": "VUID-VkSamplerCreateInfo-flags-02578",
10061          "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code>, then <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>."
10062        },
10063        {
10064          "vuid": "VUID-VkSamplerCreateInfo-flags-02579",
10065          "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code>, then <code>compareEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>."
10066        },
10067        {
10068          "vuid": "VUID-VkSamplerCreateInfo-flags-02580",
10069          "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code>, then <code>unnormalizedCoordinates</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>."
10070        }
10071      ]
10072    },
10073    "VkSamplerReductionModeCreateInfoEXT": {
10074      "(VK_EXT_sampler_filter_minmax)": [
10075        {
10076          "vuid": "VUID-VkSamplerReductionModeCreateInfoEXT-sType-sType",
10077          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT</code>"
10078        },
10079        {
10080          "vuid": "VUID-VkSamplerReductionModeCreateInfoEXT-reductionMode-parameter",
10081          "text": " <code>reductionMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerReductionModeEXT\">VkSamplerReductionModeEXT</a> value"
10082        }
10083      ]
10084    },
10085    "vkDestroySampler": {
10086      "core": [
10087        {
10088          "vuid": "VUID-vkDestroySampler-sampler-01082",
10089          "text": " All submitted commands that refer to <code>sampler</code> <strong class=\"purple\">must</strong> have completed execution"
10090        },
10091        {
10092          "vuid": "VUID-vkDestroySampler-sampler-01083",
10093          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>sampler</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
10094        },
10095        {
10096          "vuid": "VUID-vkDestroySampler-sampler-01084",
10097          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>sampler</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
10098        },
10099        {
10100          "vuid": "VUID-vkDestroySampler-device-parameter",
10101          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
10102        },
10103        {
10104          "vuid": "VUID-vkDestroySampler-sampler-parameter",
10105          "text": " If <code>sampler</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sampler</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampler</code> handle"
10106        },
10107        {
10108          "vuid": "VUID-vkDestroySampler-pAllocator-parameter",
10109          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
10110        },
10111        {
10112          "vuid": "VUID-vkDestroySampler-sampler-parent",
10113          "text": " If <code>sampler</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
10114        }
10115      ]
10116    },
10117    "VkSamplerYcbcrConversionInfo": {
10118      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
10119        {
10120          "vuid": "VUID-VkSamplerYcbcrConversionInfo-sType-sType",
10121          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO</code>"
10122        },
10123        {
10124          "vuid": "VUID-VkSamplerYcbcrConversionInfo-conversion-parameter",
10125          "text": " <code>conversion</code> <strong class=\"purple\">must</strong> be a valid <code>VkSamplerYcbcrConversion</code> handle"
10126        }
10127      ]
10128    },
10129    "vkCreateSamplerYcbcrConversion": {
10130      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
10131        {
10132          "vuid": "VUID-vkCreateSamplerYcbcrConversion-None-01648",
10133          "text": " The <a href=\"#features-sampler-YCbCr-conversion\">sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion feature</a> <strong class=\"purple\">must</strong> be enabled"
10134        },
10135        {
10136          "vuid": "VUID-vkCreateSamplerYcbcrConversion-device-parameter",
10137          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
10138        },
10139        {
10140          "vuid": "VUID-vkCreateSamplerYcbcrConversion-pCreateInfo-parameter",
10141          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSamplerYcbcrConversionCreateInfo</code> structure"
10142        },
10143        {
10144          "vuid": "VUID-vkCreateSamplerYcbcrConversion-pAllocator-parameter",
10145          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
10146        },
10147        {
10148          "vuid": "VUID-vkCreateSamplerYcbcrConversion-pYcbcrConversion-parameter",
10149          "text": " <code>pYcbcrConversion</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSamplerYcbcrConversion</code> handle"
10150        }
10151      ]
10152    },
10153    "VkSamplerYcbcrConversionCreateInfo": {
10154      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
10155        {
10156          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01649",
10157          "text": " <code>format</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>"
10158        }
10159      ],
10160      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
10161        {
10162          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01904",
10163          "text": " If an external format conversion is being created, <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>, otherwise it <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>."
10164        }
10165      ],
10166      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
10167        {
10168          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01650",
10169          "text": " <code>format</code> <strong class=\"purple\">must</strong> support <code>VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT</code> or <code>VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT</code>"
10170        },
10171        {
10172          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01651",
10173          "text": " If the format does not support <code>VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT</code>, <code>xChromaOffset</code> and <code>yChromaOffset</code> <strong class=\"purple\">must</strong> not be <code>VK_CHROMA_LOCATION_COSITED_EVEN</code>"
10174        },
10175        {
10176          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01652",
10177          "text": " If the format does not support <code>VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT</code>, <code>xChromaOffset</code> and <code>yChromaOffset</code> <strong class=\"purple\">must</strong> not be <code>VK_CHROMA_LOCATION_MIDPOINT</code>"
10178        },
10179        {
10180          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01653",
10181          "text": " <code>format</code> <strong class=\"purple\">must</strong> represent unsigned normalized values (i.e. the format must be a <code>UNORM</code> format)"
10182        },
10183        {
10184          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02581",
10185          "text": " If the format has a <code>_422</code> or <code>_420</code> suffix, then <code>components.g</code> <strong class=\"purple\">must</strong> be <code>VK_COMPONENT_SWIZZLE_IDENTITY</code>"
10186        },
10187        {
10188          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02582",
10189          "text": " If the format has a <code>_422</code> or <code>_420</code> suffix, then <code>components.a</code> <strong class=\"purple\">must</strong> be <code>VK_COMPONENT_SWIZZLE_IDENTITY</code>, <code>VK_COMPONENT_SWIZZLE_ONE</code>, or <code>VK_COMPONENT_SWIZZLE_ZERO</code>"
10190        },
10191        {
10192          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02583",
10193          "text": " If the format has a <code>_422</code> or <code>_420</code> suffix, then <code>components.r</code> <strong class=\"purple\">must</strong> be <code>VK_COMPONENT_SWIZZLE_IDENTITY</code> or <code>VK_COMPONENT_SWIZZLE_B</code>"
10194        },
10195        {
10196          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02584",
10197          "text": " If the format has a <code>_422</code> or <code>_420</code> suffix, then <code>components.b</code> <strong class=\"purple\">must</strong> be <code>VK_COMPONENT_SWIZZLE_IDENTITY</code> or <code>VK_COMPONENT_SWIZZLE_R</code>"
10198        },
10199        {
10200          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02585",
10201          "text": " If the format has a <code>_422</code> or <code>_420</code> suffix, and if either <code>components.r</code> or <code>components.b</code> is <code>VK_COMPONENT_SWIZZLE_IDENTITY</code>, both values <strong class=\"purple\">must</strong> be <code>VK_COMPONENT_SWIZZLE_IDENTITY</code>"
10202        },
10203        {
10204          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrModel-01655",
10205          "text": " If <code>ycbcrModel</code> is not <code>VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY</code>, then <code>components.r</code>, <code>components.g</code>, and <code>components.b</code> <strong class=\"purple\">must</strong> correspond to channels of the <code>format</code>; that is, <code>components.r</code>, <code>components.g</code>, and <code>components.b</code> <strong class=\"purple\">must</strong> not be <code>VK_COMPONENT_SWIZZLE_ZERO</code> or <code>VK_COMPONENT_SWIZZLE_ONE</code>, and <strong class=\"purple\">must</strong> not correspond to a channel which contains zero or one as a consequence of <a href=\"#textures-conversion-to-rgba\">conversion to RGBA</a>"
10206        },
10207        {
10208          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-forceExplicitReconstruction-01656",
10209          "text": " If the format does not support <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT</code>, <code>forceExplicitReconstruction</code> <strong class=\"purple\">must</strong> be FALSE"
10210        },
10211        {
10212          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-01657",
10213          "text": " If the format does not support <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT</code>, <code>chromaFilter</code> <strong class=\"purple\">must</strong> be <code>VK_FILTER_NEAREST</code>"
10214        },
10215        {
10216          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-sType-sType",
10217          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO</code>"
10218        },
10219        {
10220          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-pNext-pNext",
10221          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>"
10222        },
10223        {
10224          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-parameter",
10225          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
10226        },
10227        {
10228          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrModel-parameter",
10229          "text": " <code>ycbcrModel</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerYcbcrModelConversion\">VkSamplerYcbcrModelConversion</a> value"
10230        },
10231        {
10232          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrRange-parameter",
10233          "text": " <code>ycbcrRange</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerYcbcrRange\">VkSamplerYcbcrRange</a> value"
10234        },
10235        {
10236          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-parameter",
10237          "text": " <code>components</code> <strong class=\"purple\">must</strong> be a valid <code>VkComponentMapping</code> structure"
10238        },
10239        {
10240          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-parameter",
10241          "text": " <code>xChromaOffset</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkChromaLocation\">VkChromaLocation</a> value"
10242        },
10243        {
10244          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-yChromaOffset-parameter",
10245          "text": " <code>yChromaOffset</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkChromaLocation\">VkChromaLocation</a> value"
10246        },
10247        {
10248          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-parameter",
10249          "text": " <code>chromaFilter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value"
10250        }
10251      ]
10252    },
10253    "vkDestroySamplerYcbcrConversion": {
10254      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
10255        {
10256          "vuid": "VUID-vkDestroySamplerYcbcrConversion-device-parameter",
10257          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
10258        },
10259        {
10260          "vuid": "VUID-vkDestroySamplerYcbcrConversion-ycbcrConversion-parameter",
10261          "text": " If <code>ycbcrConversion</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>ycbcrConversion</code> <strong class=\"purple\">must</strong> be a valid <code>VkSamplerYcbcrConversion</code> handle"
10262        },
10263        {
10264          "vuid": "VUID-vkDestroySamplerYcbcrConversion-pAllocator-parameter",
10265          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
10266        },
10267        {
10268          "vuid": "VUID-vkDestroySamplerYcbcrConversion-ycbcrConversion-parent",
10269          "text": " If <code>ycbcrConversion</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
10270        }
10271      ]
10272    },
10273    "vkCreateDescriptorSetLayout": {
10274      "core": [
10275        {
10276          "vuid": "VUID-vkCreateDescriptorSetLayout-device-parameter",
10277          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
10278        },
10279        {
10280          "vuid": "VUID-vkCreateDescriptorSetLayout-pCreateInfo-parameter",
10281          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDescriptorSetLayoutCreateInfo</code> structure"
10282        },
10283        {
10284          "vuid": "VUID-vkCreateDescriptorSetLayout-pAllocator-parameter",
10285          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
10286        },
10287        {
10288          "vuid": "VUID-vkCreateDescriptorSetLayout-pSetLayout-parameter",
10289          "text": " <code>pSetLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDescriptorSetLayout</code> handle"
10290        }
10291      ]
10292    },
10293    "VkDescriptorSetLayoutCreateInfo": {
10294      "core": [
10295        {
10296          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-binding-00279",
10297          "text": " The <a href=\"#VkDescriptorSetLayoutBinding\">VkDescriptorSetLayoutBinding</a>::<code>binding</code> members of the elements of the <code>pBindings</code> array <strong class=\"purple\">must</strong> each have different values."
10298        },
10299        {
10300          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-sType-sType",
10301          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO</code>"
10302        },
10303        {
10304          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-pNext-pNext",
10305          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDescriptorSetLayoutBindingFlagsCreateInfoEXT\">VkDescriptorSetLayoutBindingFlagsCreateInfoEXT</a>"
10306        },
10307        {
10308          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-parameter",
10309          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDescriptorSetLayoutCreateFlagBits\">VkDescriptorSetLayoutCreateFlagBits</a> values"
10310        },
10311        {
10312          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-pBindings-parameter",
10313          "text": " If <code>bindingCount</code> is not <code>0</code>, <code>pBindings</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid <code>VkDescriptorSetLayoutBinding</code> structures"
10314        }
10315      ],
10316      "(VK_KHR_push_descriptor)": [
10317        {
10318          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-00280",
10319          "text": " If <code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>, then all elements of <code>pBindings</code> <strong class=\"purple\">must</strong> not have a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>"
10320        },
10321        {
10322          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-00281",
10323          "text": " If <code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>, then the total number of elements of all bindings <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDevicePushDescriptorPropertiesKHR\">VkPhysicalDevicePushDescriptorPropertiesKHR</a>::<code>maxPushDescriptors</code>"
10324        }
10325      ],
10326      "(VK_KHR_push_descriptor)+(VK_EXT_inline_uniform_block)": [
10327        {
10328          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-02208",
10329          "text": " If <code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>, then all elements of <code>pBindings</code> <strong class=\"purple\">must</strong> not have a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>"
10330        }
10331      ],
10332      "(VK_EXT_descriptor_indexing)": [
10333        {
10334          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-03000",
10335          "text": " If any binding has the <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code> bit set, <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code>"
10336        },
10337        {
10338          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-descriptorType-03001",
10339          "text": " If any binding has the <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code> bit set, then all bindings <strong class=\"purple\">must</strong> not have <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>"
10340        }
10341      ]
10342    },
10343    "VkDescriptorSetLayoutBinding": {
10344      "core": [
10345        {
10346          "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-00282",
10347          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, and <code>descriptorCount</code> is not <code>0</code> and <code>pImmutableSamplers</code> is not <code>NULL</code>, <code>pImmutableSamplers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorCount</code> valid <code>VkSampler</code> handles"
10348        },
10349        {
10350          "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorCount-00283",
10351          "text": " If <code>descriptorCount</code> is not <code>0</code>, <code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values"
10352        },
10353        {
10354          "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-01510",
10355          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> and <code>descriptorCount</code> is not <code>0</code>, then <code>stageFlags</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>"
10356        },
10357        {
10358          "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-parameter",
10359          "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
10360        }
10361      ],
10362      "(VK_EXT_inline_uniform_block)": [
10363        {
10364          "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-02209",
10365          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> then <code>descriptorCount</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
10366        },
10367        {
10368          "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-02210",
10369          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> then <code>descriptorCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxInlineUniformBlockSize</code>"
10370        }
10371      ]
10372    },
10373    "VkDescriptorSetLayoutBindingFlagsCreateInfoEXT": {
10374      "(VK_EXT_descriptor_indexing)": [
10375        {
10376          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-bindingCount-03002",
10377          "text": " If <code>bindingCount</code> is not zero, <code>bindingCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a>::<code>bindingCount</code>"
10378        },
10379        {
10380          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-pBindingFlags-03004",
10381          "text": " If an element of <code>pBindingFlags</code> includes <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT</code>, then all other elements of <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a>::<code>pBindings</code> <strong class=\"purple\">must</strong> have a smaller value of <code>binding</code>"
10382        },
10383        {
10384          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingUniformBufferUpdateAfterBind-03005",
10385          "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingUniformBufferUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
10386        },
10387        {
10388          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingSampledImageUpdateAfterBind-03006",
10389          "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingSampledImageUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, or <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
10390        },
10391        {
10392          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingStorageImageUpdateAfterBind-03007",
10393          "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingStorageImageUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
10394        },
10395        {
10396          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingStorageBufferUpdateAfterBind-03008",
10397          "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingStorageBufferUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
10398        },
10399        {
10400          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingUniformTexelBufferUpdateAfterBind-03009",
10401          "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingUniformTexelBufferUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
10402        },
10403        {
10404          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingStorageTexelBufferUpdateAfterBind-03010",
10405          "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingStorageTexelBufferUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
10406        },
10407        {
10408          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-None-03011",
10409          "text": " All bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
10410        },
10411        {
10412          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingUpdateUnusedWhilePending-03012",
10413          "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingUpdateUnusedWhilePending</code> is not enabled, all elements of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT</code>"
10414        },
10415        {
10416          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingPartiallyBound-03013",
10417          "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingPartiallyBound</code> is not enabled, all elements of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT</code>"
10418        },
10419        {
10420          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingVariableDescriptorCount-03014",
10421          "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingVariableDescriptorCount</code> is not enabled, all elements of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT</code>"
10422        },
10423        {
10424          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-pBindingFlags-03015",
10425          "text": " If an element of <code>pBindingFlags</code> includes <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT</code>, that element&#8217;s <code>descriptorType</code> <strong class=\"purple\">must</strong> not be <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>"
10426        },
10427        {
10428          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-sType-sType",
10429          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT</code>"
10430        },
10431        {
10432          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-pBindingFlags-parameter",
10433          "text": " If <code>bindingCount</code> is not <code>0</code>, and <code>pBindingFlags</code> is not <code>NULL</code>, <code>pBindingFlags</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid combinations of <a href=\"#VkDescriptorBindingFlagBitsEXT\">VkDescriptorBindingFlagBitsEXT</a> values"
10434        }
10435      ],
10436      "(VK_EXT_descriptor_indexing)+(VK_KHR_push_descriptor)": [
10437        {
10438          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-flags-03003",
10439          "text": " If <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a>::<code>flags</code> includes <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>, then all elements of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>, <code>VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT</code>, or <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT</code>"
10440        }
10441      ],
10442      "(VK_EXT_descriptor_indexing)+(VK_EXT_inline_uniform_block)": [
10443        {
10444          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingInlineUniformBlockUpdateAfterBind-02211",
10445          "text": " If <a href=\"#VkPhysicalDeviceInlineUniformBlockFeaturesEXT\">VkPhysicalDeviceInlineUniformBlockFeaturesEXT</a>::<code>descriptorBindingInlineUniformBlockUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
10446        }
10447      ]
10448    },
10449    "vkGetDescriptorSetLayoutSupport": {
10450      "(VK_VERSION_1_1,VK_KHR_maintenance3)": [
10451        {
10452          "vuid": "VUID-vkGetDescriptorSetLayoutSupport-device-parameter",
10453          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
10454        },
10455        {
10456          "vuid": "VUID-vkGetDescriptorSetLayoutSupport-pCreateInfo-parameter",
10457          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDescriptorSetLayoutCreateInfo</code> structure"
10458        },
10459        {
10460          "vuid": "VUID-vkGetDescriptorSetLayoutSupport-pSupport-parameter",
10461          "text": " <code>pSupport</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDescriptorSetLayoutSupport</code> structure"
10462        }
10463      ]
10464    },
10465    "VkDescriptorSetLayoutSupport": {
10466      "(VK_VERSION_1_1,VK_KHR_maintenance3)": [
10467        {
10468          "vuid": "VUID-VkDescriptorSetLayoutSupport-sType-sType",
10469          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT</code>"
10470        },
10471        {
10472          "vuid": "VUID-VkDescriptorSetLayoutSupport-pNext-pNext",
10473          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDescriptorSetVariableDescriptorCountLayoutSupportEXT\">VkDescriptorSetVariableDescriptorCountLayoutSupportEXT</a>"
10474        }
10475      ]
10476    },
10477    "VkDescriptorSetVariableDescriptorCountLayoutSupportEXT": {
10478      "(VK_EXT_descriptor_indexing)": [
10479        {
10480          "vuid": "VUID-VkDescriptorSetVariableDescriptorCountLayoutSupportEXT-sType-sType",
10481          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT</code>"
10482        }
10483      ]
10484    },
10485    "vkDestroyDescriptorSetLayout": {
10486      "core": [
10487        {
10488          "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-00284",
10489          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>descriptorSetLayout</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
10490        },
10491        {
10492          "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-00285",
10493          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>descriptorSetLayout</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
10494        },
10495        {
10496          "vuid": "VUID-vkDestroyDescriptorSetLayout-device-parameter",
10497          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
10498        },
10499        {
10500          "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-parameter",
10501          "text": " If <code>descriptorSetLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>descriptorSetLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSetLayout</code> handle"
10502        },
10503        {
10504          "vuid": "VUID-vkDestroyDescriptorSetLayout-pAllocator-parameter",
10505          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
10506        },
10507        {
10508          "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-parent",
10509          "text": " If <code>descriptorSetLayout</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
10510        }
10511      ]
10512    },
10513    "vkCreatePipelineLayout": {
10514      "core": [
10515        {
10516          "vuid": "VUID-vkCreatePipelineLayout-device-parameter",
10517          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
10518        },
10519        {
10520          "vuid": "VUID-vkCreatePipelineLayout-pCreateInfo-parameter",
10521          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineLayoutCreateInfo</code> structure"
10522        },
10523        {
10524          "vuid": "VUID-vkCreatePipelineLayout-pAllocator-parameter",
10525          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
10526        },
10527        {
10528          "vuid": "VUID-vkCreatePipelineLayout-pPipelineLayout-parameter",
10529          "text": " <code>pPipelineLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPipelineLayout</code> handle"
10530        }
10531      ]
10532    },
10533    "VkPipelineLayoutCreateInfo": {
10534      "core": [
10535        {
10536          "vuid": "VUID-VkPipelineLayoutCreateInfo-setLayoutCount-00286",
10537          "text": " <code>setLayoutCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxBoundDescriptorSets</code>"
10538        },
10539        {
10540          "vuid": "VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-00292",
10541          "text": " Any two elements of <code>pPushConstantRanges</code> <strong class=\"purple\">must</strong> not include the same stage in <code>stageFlags</code>"
10542        },
10543        {
10544          "vuid": "VUID-VkPipelineLayoutCreateInfo-sType-sType",
10545          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO</code>"
10546        },
10547        {
10548          "vuid": "VUID-VkPipelineLayoutCreateInfo-pNext-pNext",
10549          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
10550        },
10551        {
10552          "vuid": "VUID-VkPipelineLayoutCreateInfo-flags-zerobitmask",
10553          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
10554        },
10555        {
10556          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-parameter",
10557          "text": " If <code>setLayoutCount</code> is not <code>0</code>, <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>setLayoutCount</code> valid <code>VkDescriptorSetLayout</code> handles"
10558        },
10559        {
10560          "vuid": "VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-parameter",
10561          "text": " If <code>pushConstantRangeCount</code> is not <code>0</code>, <code>pPushConstantRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pushConstantRangeCount</code> valid <code>VkPushConstantRange</code> structures"
10562        }
10563      ],
10564      "!(VK_EXT_descriptor_indexing)": [
10565        {
10566          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00287",
10567          "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible to any shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorSamplers</code>"
10568        },
10569        {
10570          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00288",
10571          "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible to any shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorUniformBuffers</code>"
10572        },
10573        {
10574          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00289",
10575          "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible to any shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorStorageBuffers</code>"
10576        },
10577        {
10578          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00290",
10579          "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible to any shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorSampledImages</code>"
10580        },
10581        {
10582          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00291",
10583          "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible to any shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorStorageImages</code>"
10584        },
10585        {
10586          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01676",
10587          "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorInputAttachments</code>"
10588        },
10589        {
10590          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01677",
10591          "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetSamplers</code>"
10592        },
10593        {
10594          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01678",
10595          "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetUniformBuffers</code>"
10596        },
10597        {
10598          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01679",
10599          "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetUniformBuffersDynamic</code>"
10600        },
10601        {
10602          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01680",
10603          "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageBuffers</code>"
10604        },
10605        {
10606          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01681",
10607          "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageBuffersDynamic</code>"
10608        },
10609        {
10610          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01682",
10611          "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetSampledImages</code>"
10612        },
10613        {
10614          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01683",
10615          "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageImages</code>"
10616        },
10617        {
10618          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01684",
10619          "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetInputAttachments</code>"
10620        }
10621      ],
10622      "!(VK_EXT_descriptor_indexing)+(VK_EXT_inline_uniform_block)": [
10623        {
10624          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02212",
10625          "text": " The total number of bindings with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxPerStageDescriptorInlineUniformBlocks</code>"
10626        },
10627        {
10628          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02213",
10629          "text": " The total number of bindings with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxDescriptorSetInlineUniformBlocks</code>"
10630        }
10631      ],
10632      "(VK_EXT_descriptor_indexing)": [
10633        {
10634          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03016",
10635          "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorSamplers</code>"
10636        },
10637        {
10638          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03017",
10639          "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorUniformBuffers</code>"
10640        },
10641        {
10642          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03018",
10643          "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorStorageBuffers</code>"
10644        },
10645        {
10646          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03019",
10647          "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorSampledImages</code>"
10648        },
10649        {
10650          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03020",
10651          "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorStorageImages</code>"
10652        },
10653        {
10654          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03021",
10655          "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorInputAttachments</code>"
10656        },
10657        {
10658          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03022",
10659          "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindSamplers</code>"
10660        },
10661        {
10662          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03023",
10663          "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindUniformBuffers</code>"
10664        },
10665        {
10666          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03024",
10667          "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindStorageBuffers</code>"
10668        },
10669        {
10670          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03025",
10671          "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindSampledImages</code>"
10672        },
10673        {
10674          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03026",
10675          "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindStorageImages</code>"
10676        },
10677        {
10678          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03027",
10679          "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindInputAttachments</code>"
10680        },
10681        {
10682          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03028",
10683          "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetSamplers</code>"
10684        },
10685        {
10686          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03029",
10687          "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetUniformBuffers</code>"
10688        },
10689        {
10690          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03030",
10691          "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetUniformBuffersDynamic</code>"
10692        },
10693        {
10694          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03031",
10695          "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageBuffers</code>"
10696        },
10697        {
10698          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03032",
10699          "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageBuffersDynamic</code>"
10700        },
10701        {
10702          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03033",
10703          "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetSampledImages</code>"
10704        },
10705        {
10706          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03034",
10707          "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageImages</code>"
10708        },
10709        {
10710          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03035",
10711          "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetInputAttachments</code>"
10712        },
10713        {
10714          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03036",
10715          "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindSamplers</code>"
10716        },
10717        {
10718          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03037",
10719          "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindUniformBuffers</code>"
10720        },
10721        {
10722          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03038",
10723          "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindUniformBuffersDynamic</code>"
10724        },
10725        {
10726          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03039",
10727          "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindStorageBuffers</code>"
10728        },
10729        {
10730          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03040",
10731          "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindStorageBuffersDynamic</code>"
10732        },
10733        {
10734          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03041",
10735          "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindSampledImages</code>"
10736        },
10737        {
10738          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03042",
10739          "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindStorageImages</code>"
10740        },
10741        {
10742          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03043",
10743          "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindInputAttachments</code>"
10744        }
10745      ],
10746      "(VK_EXT_descriptor_indexing)+(VK_EXT_inline_uniform_block)": [
10747        {
10748          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02214",
10749          "text": " The total number of bindings in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxPerStageDescriptorInlineUniformBlocks</code>"
10750        },
10751        {
10752          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02215",
10753          "text": " The total number of bindings with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks</code>"
10754        },
10755        {
10756          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02216",
10757          "text": " The total number of bindings in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxDescriptorSetInlineUniformBlocks</code>"
10758        },
10759        {
10760          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02217",
10761          "text": " The total number of bindings with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindInlineUniformBlocks</code>"
10762        }
10763      ],
10764      "(VK_KHR_push_descriptor)": [
10765        {
10766          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00293",
10767          "text": " <code>pSetLayouts</code> <strong class=\"purple\">must</strong> not contain more than one descriptor set layout that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code> set"
10768        }
10769      ],
10770      "(VK_NV_ray_tracing)": [
10771        {
10772          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02381",
10773          "text": " The total number of bindings with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxDescriptorSetAccelerationStructures</code>"
10774        }
10775      ]
10776    },
10777    "VkPushConstantRange": {
10778      "core": [
10779        {
10780          "vuid": "VUID-VkPushConstantRange-offset-00294",
10781          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code>"
10782        },
10783        {
10784          "vuid": "VUID-VkPushConstantRange-offset-00295",
10785          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
10786        },
10787        {
10788          "vuid": "VUID-VkPushConstantRange-size-00296",
10789          "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
10790        },
10791        {
10792          "vuid": "VUID-VkPushConstantRange-size-00297",
10793          "text": " <code>size</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
10794        },
10795        {
10796          "vuid": "VUID-VkPushConstantRange-size-00298",
10797          "text": " <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code> minus <code>offset</code>"
10798        },
10799        {
10800          "vuid": "VUID-VkPushConstantRange-stageFlags-parameter",
10801          "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values"
10802        },
10803        {
10804          "vuid": "VUID-VkPushConstantRange-stageFlags-requiredbitmask",
10805          "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
10806        }
10807      ]
10808    },
10809    "vkDestroyPipelineLayout": {
10810      "core": [
10811        {
10812          "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-00299",
10813          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>pipelineLayout</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
10814        },
10815        {
10816          "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-00300",
10817          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>pipelineLayout</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
10818        },
10819        {
10820          "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-02004",
10821          "text": " <code>pipelineLayout</code> <strong class=\"purple\">must</strong> not have been passed to any <code>vkCmd*</code> command for any command buffers that are still in the <a href=\"#commandbuffers-lifecycle\">recording state</a> when <code>vkDestroyPipelineLayout</code> is called"
10822        },
10823        {
10824          "vuid": "VUID-vkDestroyPipelineLayout-device-parameter",
10825          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
10826        },
10827        {
10828          "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-parameter",
10829          "text": " If <code>pipelineLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
10830        },
10831        {
10832          "vuid": "VUID-vkDestroyPipelineLayout-pAllocator-parameter",
10833          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
10834        },
10835        {
10836          "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-parent",
10837          "text": " If <code>pipelineLayout</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
10838        }
10839      ]
10840    },
10841    "vkCreateDescriptorPool": {
10842      "core": [
10843        {
10844          "vuid": "VUID-vkCreateDescriptorPool-device-parameter",
10845          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
10846        },
10847        {
10848          "vuid": "VUID-vkCreateDescriptorPool-pCreateInfo-parameter",
10849          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDescriptorPoolCreateInfo</code> structure"
10850        },
10851        {
10852          "vuid": "VUID-vkCreateDescriptorPool-pAllocator-parameter",
10853          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
10854        },
10855        {
10856          "vuid": "VUID-vkCreateDescriptorPool-pDescriptorPool-parameter",
10857          "text": " <code>pDescriptorPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDescriptorPool</code> handle"
10858        }
10859      ]
10860    },
10861    "VkDescriptorPoolCreateInfo": {
10862      "core": [
10863        {
10864          "vuid": "VUID-VkDescriptorPoolCreateInfo-maxSets-00301",
10865          "text": " <code>maxSets</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
10866        },
10867        {
10868          "vuid": "VUID-VkDescriptorPoolCreateInfo-sType-sType",
10869          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO</code>"
10870        },
10871        {
10872          "vuid": "VUID-VkDescriptorPoolCreateInfo-pNext-pNext",
10873          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDescriptorPoolInlineUniformBlockCreateInfoEXT\">VkDescriptorPoolInlineUniformBlockCreateInfoEXT</a>"
10874        },
10875        {
10876          "vuid": "VUID-VkDescriptorPoolCreateInfo-flags-parameter",
10877          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDescriptorPoolCreateFlagBits\">VkDescriptorPoolCreateFlagBits</a> values"
10878        },
10879        {
10880          "vuid": "VUID-VkDescriptorPoolCreateInfo-pPoolSizes-parameter",
10881          "text": " <code>pPoolSizes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>poolSizeCount</code> valid <code>VkDescriptorPoolSize</code> structures"
10882        },
10883        {
10884          "vuid": "VUID-VkDescriptorPoolCreateInfo-poolSizeCount-arraylength",
10885          "text": " <code>poolSizeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
10886        }
10887      ]
10888    },
10889    "VkDescriptorPoolInlineUniformBlockCreateInfoEXT": {
10890      "(VK_EXT_inline_uniform_block)": [
10891        {
10892          "vuid": "VUID-VkDescriptorPoolInlineUniformBlockCreateInfoEXT-sType-sType",
10893          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT</code>"
10894        }
10895      ]
10896    },
10897    "VkDescriptorPoolSize": {
10898      "core": [
10899        {
10900          "vuid": "VUID-VkDescriptorPoolSize-descriptorCount-00302",
10901          "text": " <code>descriptorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
10902        },
10903        {
10904          "vuid": "VUID-VkDescriptorPoolSize-type-parameter",
10905          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
10906        }
10907      ],
10908      "(VK_EXT_inline_uniform_block)": [
10909        {
10910          "vuid": "VUID-VkDescriptorPoolSize-type-02218",
10911          "text": " If <code>type</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> then <code>descriptorCount</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
10912        }
10913      ]
10914    },
10915    "vkDestroyDescriptorPool": {
10916      "core": [
10917        {
10918          "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00303",
10919          "text": " All submitted commands that refer to <code>descriptorPool</code> (via any allocated descriptor sets) <strong class=\"purple\">must</strong> have completed execution"
10920        },
10921        {
10922          "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00304",
10923          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>descriptorPool</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
10924        },
10925        {
10926          "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00305",
10927          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>descriptorPool</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
10928        },
10929        {
10930          "vuid": "VUID-vkDestroyDescriptorPool-device-parameter",
10931          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
10932        },
10933        {
10934          "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-parameter",
10935          "text": " If <code>descriptorPool</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorPool</code> handle"
10936        },
10937        {
10938          "vuid": "VUID-vkDestroyDescriptorPool-pAllocator-parameter",
10939          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
10940        },
10941        {
10942          "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-parent",
10943          "text": " If <code>descriptorPool</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
10944        }
10945      ]
10946    },
10947    "vkAllocateDescriptorSets": {
10948      "core": [
10949        {
10950          "vuid": "VUID-vkAllocateDescriptorSets-device-parameter",
10951          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
10952        },
10953        {
10954          "vuid": "VUID-vkAllocateDescriptorSets-pAllocateInfo-parameter",
10955          "text": " <code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDescriptorSetAllocateInfo</code> structure"
10956        },
10957        {
10958          "vuid": "VUID-vkAllocateDescriptorSets-pDescriptorSets-parameter",
10959          "text": " <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pAllocateInfo</code>::descriptorSetCount <code>VkDescriptorSet</code> handles"
10960        }
10961      ]
10962    },
10963    "VkDescriptorSetAllocateInfo": {
10964      "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
10965        {
10966          "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorSetCount-00306",
10967          "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> not be greater than the number of sets that are currently available for allocation in <code>descriptorPool</code>"
10968        },
10969        {
10970          "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorPool-00307",
10971          "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have enough free descriptor capacity remaining to allocate the descriptor sets of the specified layouts"
10972        }
10973      ],
10974      "(VK_KHR_push_descriptor)": [
10975        {
10976          "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-00308",
10977          "text": " Each element of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code> set"
10978        }
10979      ],
10980      "(VK_EXT_descriptor_indexing)": [
10981        {
10982          "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-03044",
10983          "text": " If any element of <code>pSetLayouts</code> was created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set, <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT</code> flag set"
10984        }
10985      ],
10986      "core": [
10987        {
10988          "vuid": "VUID-VkDescriptorSetAllocateInfo-sType-sType",
10989          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO</code>"
10990        },
10991        {
10992          "vuid": "VUID-VkDescriptorSetAllocateInfo-pNext-pNext",
10993          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDescriptorSetVariableDescriptorCountAllocateInfoEXT\">VkDescriptorSetVariableDescriptorCountAllocateInfoEXT</a>"
10994        },
10995        {
10996          "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorPool-parameter",
10997          "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorPool</code> handle"
10998        },
10999        {
11000          "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-parameter",
11001          "text": " <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorSetCount</code> valid <code>VkDescriptorSetLayout</code> handles"
11002        },
11003        {
11004          "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorSetCount-arraylength",
11005          "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
11006        },
11007        {
11008          "vuid": "VUID-VkDescriptorSetAllocateInfo-commonparent",
11009          "text": " Both of <code>descriptorPool</code>, and the elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
11010        }
11011      ]
11012    },
11013    "VkDescriptorSetVariableDescriptorCountAllocateInfoEXT": {
11014      "(VK_EXT_descriptor_indexing)": [
11015        {
11016          "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfoEXT-descriptorSetCount-03045",
11017          "text": " If <code>descriptorSetCount</code> is not zero, <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkDescriptorSetAllocateInfo\">VkDescriptorSetAllocateInfo</a>::<code>descriptorSetCount</code>"
11018        },
11019        {
11020          "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfoEXT-pSetLayouts-03046",
11021          "text": " If <a href=\"#VkDescriptorSetAllocateInfo\">VkDescriptorSetAllocateInfo</a>::<code>pSetLayouts</code>[i] has a variable descriptor count binding, then <code>pDescriptorCounts</code>[i] <strong class=\"purple\">must</strong> be less than or equal to the descriptor count specified for that binding when the descriptor set layout was created."
11022        },
11023        {
11024          "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfoEXT-sType-sType",
11025          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT</code>"
11026        },
11027        {
11028          "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfoEXT-pDescriptorCounts-parameter",
11029          "text": " If <code>descriptorSetCount</code> is not <code>0</code>, <code>pDescriptorCounts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorSetCount</code> <code>uint32_t</code> values"
11030        }
11031      ]
11032    },
11033    "vkFreeDescriptorSets": {
11034      "core": [
11035        {
11036          "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00309",
11037          "text": " All submitted commands that refer to any element of <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have completed execution"
11038        },
11039        {
11040          "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00310",
11041          "text": " <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorSetCount</code> <code>VkDescriptorSet</code> handles, each element of which <strong class=\"purple\">must</strong> either be a valid handle or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
11042        },
11043        {
11044          "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00311",
11045          "text": " Each valid handle in <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have been allocated from <code>descriptorPool</code>"
11046        },
11047        {
11048          "vuid": "VUID-vkFreeDescriptorSets-descriptorPool-00312",
11049          "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT</code> flag"
11050        },
11051        {
11052          "vuid": "VUID-vkFreeDescriptorSets-device-parameter",
11053          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
11054        },
11055        {
11056          "vuid": "VUID-vkFreeDescriptorSets-descriptorPool-parameter",
11057          "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorPool</code> handle"
11058        },
11059        {
11060          "vuid": "VUID-vkFreeDescriptorSets-descriptorSetCount-arraylength",
11061          "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
11062        },
11063        {
11064          "vuid": "VUID-vkFreeDescriptorSets-descriptorPool-parent",
11065          "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
11066        },
11067        {
11068          "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-parent",
11069          "text": " Each element of <code>pDescriptorSets</code> that is a valid handle <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>descriptorPool</code>"
11070        }
11071      ]
11072    },
11073    "vkResetDescriptorPool": {
11074      "core": [
11075        {
11076          "vuid": "VUID-vkResetDescriptorPool-descriptorPool-00313",
11077          "text": " All uses of <code>descriptorPool</code> (via any allocated descriptor sets) <strong class=\"purple\">must</strong> have completed execution"
11078        },
11079        {
11080          "vuid": "VUID-vkResetDescriptorPool-device-parameter",
11081          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
11082        },
11083        {
11084          "vuid": "VUID-vkResetDescriptorPool-descriptorPool-parameter",
11085          "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorPool</code> handle"
11086        },
11087        {
11088          "vuid": "VUID-vkResetDescriptorPool-flags-zerobitmask",
11089          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
11090        },
11091        {
11092          "vuid": "VUID-vkResetDescriptorPool-descriptorPool-parent",
11093          "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
11094        }
11095      ]
11096    },
11097    "vkUpdateDescriptorSets": {
11098      "!(VK_EXT_descriptor_indexing)": [
11099        {
11100          "vuid": "VUID-vkUpdateDescriptorSets-dstSet-00314",
11101          "text": " The <code>dstSet</code> member of each element of <code>pDescriptorWrites</code> or <code>pDescriptorCopies</code> <strong class=\"purple\">must</strong> not be used by any command that was recorded to a command buffer which is in the <a href=\"#commandbuffers-lifecycle\">pending state</a>."
11102        }
11103      ],
11104      "(VK_EXT_descriptor_indexing)": [
11105        {
11106          "vuid": "VUID-vkUpdateDescriptorSets-None-03047",
11107          "text": " Descriptor bindings updated by this command which were created without the <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code> or <code>VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT</code> bits set <strong class=\"purple\">must</strong> not be used by any command that was recorded to a command buffer which is in the <a href=\"#commandbuffers-lifecycle\">pending state</a>."
11108        }
11109      ],
11110      "core": [
11111        {
11112          "vuid": "VUID-vkUpdateDescriptorSets-device-parameter",
11113          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
11114        },
11115        {
11116          "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-parameter",
11117          "text": " If <code>descriptorWriteCount</code> is not <code>0</code>, <code>pDescriptorWrites</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorWriteCount</code> valid <code>VkWriteDescriptorSet</code> structures"
11118        },
11119        {
11120          "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorCopies-parameter",
11121          "text": " If <code>descriptorCopyCount</code> is not <code>0</code>, <code>pDescriptorCopies</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorCopyCount</code> valid <code>VkCopyDescriptorSet</code> structures"
11122        }
11123      ]
11124    },
11125    "VkWriteDescriptorSet": {
11126      "core": [
11127        {
11128          "vuid": "VUID-VkWriteDescriptorSet-dstBinding-00315",
11129          "text": " <code>dstBinding</code> <strong class=\"purple\">must</strong> be less than or equal to the maximum value of <code>binding</code> of all <a href=\"#VkDescriptorSetLayoutBinding\">VkDescriptorSetLayoutBinding</a> structures specified when <code>dstSet</code>&#8217;s descriptor set layout was created"
11130        },
11131        {
11132          "vuid": "VUID-VkWriteDescriptorSet-dstBinding-00316",
11133          "text": " <code>dstBinding</code> <strong class=\"purple\">must</strong> be a binding with a non-zero <code>descriptorCount</code>"
11134        },
11135        {
11136          "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-00317",
11137          "text": " All consecutive bindings updated via a single <code>VkWriteDescriptorSet</code> structure, except those with a <code>descriptorCount</code> of zero, <strong class=\"purple\">must</strong> have identical <code>descriptorType</code> and <code>stageFlags</code>."
11138        },
11139        {
11140          "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-00318",
11141          "text": " All consecutive bindings updated via a single <code>VkWriteDescriptorSet</code> structure, except those with a <code>descriptorCount</code> of zero, <strong class=\"purple\">must</strong> all either use immutable samplers or <strong class=\"purple\">must</strong> all not use immutable samplers."
11142        },
11143        {
11144          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00319",
11145          "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> match the type of <code>dstBinding</code> within <code>dstSet</code>"
11146        },
11147        {
11148          "vuid": "VUID-VkWriteDescriptorSet-dstSet-00320",
11149          "text": " <code>dstSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handle"
11150        },
11151        {
11152          "vuid": "VUID-VkWriteDescriptorSet-dstArrayElement-00321",
11153          "text": " The sum of <code>dstArrayElement</code> and <code>descriptorCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of array elements in the descriptor set binding specified by <code>dstBinding</code>, and all applicable consecutive bindings, as described by <a href=\"#descriptorsets-updates-consecutive\">consecutive binding updates</a>"
11154        },
11155        {
11156          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00322",
11157          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, <code>pImageInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorCount</code> valid <code>VkDescriptorImageInfo</code> structures"
11158        },
11159        {
11160          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00323",
11161          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code>, <code>pTexelBufferView</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorCount</code> valid <code>VkBufferView</code> handles"
11162        },
11163        {
11164          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00324",
11165          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code>, <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>, <code>pBufferInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorCount</code> valid <code>VkDescriptorBufferInfo</code> structures"
11166        },
11167        {
11168          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00325",
11169          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, and <code>dstSet</code> was not allocated with a layout that included immutable samplers for <code>dstBinding</code> with <code>descriptorType</code>, the <code>sampler</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampler</code> object"
11170        },
11171        {
11172          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00326",
11173          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, the <code>imageView</code> and <code>imageLayout</code> members of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageView</code> and <a href=\"#VkImageLayout\">VkImageLayout</a>, respectively"
11174        },
11175        {
11176          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01946",
11177          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, then the <code>imageView</code> member of each <code>pImageInfo</code> element <strong class=\"purple\">must</strong> have been created without a <code>VkSamplerYcbcrConversionInfo</code> structure in its <code>pNext</code> chain"
11178        },
11179        {
11180          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01947",
11181          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, and if any element of <code>pImageInfo</code> has a <code>imageView</code> member that was created with a <code>VkSamplerYcbcrConversionInfo</code> structure in its <code>pNext</code> chain, then <code>dstSet</code> <strong class=\"purple\">must</strong> have been allocated with a layout that included immutable samplers for <code>dstBinding</code>"
11182        },
11183        {
11184          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01948",
11185          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, and <code>dstSet</code> was allocated with a layout that included immutable samplers for <code>dstBinding</code>, then the <code>imageView</code> member of each element of <code>pImageInfo</code> which corresponds to an immutable sampler that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion</a> <strong class=\"purple\">must</strong> have been created with a <code>VkSamplerYcbcrConversionInfo</code> structure in its <code>pNext</code> chain with an <em>identically defined</em> <code>VkSamplerYcbcrConversionInfo</code> to the corresponding immutable sampler"
11186        },
11187        {
11188          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01402",
11189          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, for each descriptor that will be accessed via load or store operations the <code>imageLayout</code> member for corresponding elements of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_GENERAL</code>"
11190        },
11191        {
11192          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00327",
11193          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, the <code>offset</code> member of each element of <code>pBufferInfo</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minUniformBufferOffsetAlignment</code>"
11194        },
11195        {
11196          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00328",
11197          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>, the <code>offset</code> member of each element of <code>pBufferInfo</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minStorageBufferOffsetAlignment</code>"
11198        },
11199        {
11200          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00329",
11201          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code>, <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code>, or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>, and the <code>buffer</code> member of any element of <code>pBufferInfo</code> is the handle of a non-sparse buffer, then that buffer <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
11202        },
11203        {
11204          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00330",
11205          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, the <code>buffer</code> member of each element of <code>pBufferInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT</code> set"
11206        },
11207        {
11208          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00331",
11209          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>, the <code>buffer</code> member of each element of <code>pBufferInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_STORAGE_BUFFER_BIT</code> set"
11210        },
11211        {
11212          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00332",
11213          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, the <code>range</code> member of each element of <code>pBufferInfo</code>, or the effective range if <code>range</code> is <code>VK_WHOLE_SIZE</code>, <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxUniformBufferRange</code>"
11214        },
11215        {
11216          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00333",
11217          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>, the <code>range</code> member of each element of <code>pBufferInfo</code>, or the effective range if <code>range</code> is <code>VK_WHOLE_SIZE</code>, <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxStorageBufferRange</code>"
11218        },
11219        {
11220          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00334",
11221          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code>, the <code>VkBuffer</code> that each element of <code>pTexelBufferView</code> was created from <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code> set"
11222        },
11223        {
11224          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00335",
11225          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code>, the <code>VkBuffer</code> that each element of <code>pTexelBufferView</code> was created from <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code> set"
11226        },
11227        {
11228          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00336",
11229          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code> or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, the <code>imageView</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> have been created with the identity swizzle"
11230        },
11231        {
11232          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00337",
11233          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code> or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, the <code>imageView</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> set"
11234        },
11235        {
11236          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01403",
11237          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code> or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, the <code>imageLayout</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be a member of the list given in <a href=\"#descriptorsets-sampledimage\">Sampled Image</a> or <a href=\"#descriptorsets-combinedimagesampler\">Combined Image Sampler</a>, corresponding to its type"
11238        },
11239        {
11240          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00338",
11241          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, the <code>imageView</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> set"
11242        },
11243        {
11244          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00339",
11245          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, the <code>imageView</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_STORAGE_BIT</code> set"
11246        },
11247        {
11248          "vuid": "VUID-VkWriteDescriptorSet-sType-sType",
11249          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET</code>"
11250        },
11251        {
11252          "vuid": "VUID-VkWriteDescriptorSet-pNext-pNext",
11253          "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkWriteDescriptorSetAccelerationStructureNV\">VkWriteDescriptorSetAccelerationStructureNV</a> or <a href=\"#VkWriteDescriptorSetInlineUniformBlockEXT\">VkWriteDescriptorSetInlineUniformBlockEXT</a>"
11254        },
11255        {
11256          "vuid": "VUID-VkWriteDescriptorSet-sType-unique",
11257          "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
11258        },
11259        {
11260          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-parameter",
11261          "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
11262        },
11263        {
11264          "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-arraylength",
11265          "text": " <code>descriptorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
11266        },
11267        {
11268          "vuid": "VUID-VkWriteDescriptorSet-commonparent",
11269          "text": " Both of <code>dstSet</code>, and the elements of <code>pTexelBufferView</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
11270        }
11271      ],
11272      "(VK_EXT_inline_uniform_block)": [
11273        {
11274          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02219",
11275          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, <code>dstArrayElement</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>"
11276        },
11277        {
11278          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02220",
11279          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, <code>descriptorCount</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>"
11280        },
11281        {
11282          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02221",
11283          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkWriteDescriptorSetInlineUniformBlockEXT\">VkWriteDescriptorSetInlineUniformBlockEXT</a> structure whose <code>dataSize</code> member equals <code>descriptorCount</code>"
11284        }
11285      ],
11286      "(VK_NV_ray_tracing)": [
11287        {
11288          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02382",
11289          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkWriteDescriptorSetAccelerationStructureNV\">VkWriteDescriptorSetAccelerationStructureNV</a> structure whose <code>accelerationStructureCount</code> member equals <code>descriptorCount</code>"
11290        }
11291      ],
11292      "(VK_EXT_descriptor_indexing)": [
11293        {
11294          "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-03048",
11295          "text": " All consecutive bindings updated via a single <code>VkWriteDescriptorSet</code> structure, except those with a <code>descriptorCount</code> of zero, <strong class=\"purple\">must</strong> have identical <a href=\"#VkDescriptorBindingFlagBitsEXT\">VkDescriptorBindingFlagBitsEXT</a>."
11296        }
11297      ]
11298    },
11299    "VkDescriptorBufferInfo": {
11300      "core": [
11301        {
11302          "vuid": "VUID-VkDescriptorBufferInfo-offset-00340",
11303          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
11304        },
11305        {
11306          "vuid": "VUID-VkDescriptorBufferInfo-range-00341",
11307          "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
11308        },
11309        {
11310          "vuid": "VUID-VkDescriptorBufferInfo-range-00342",
11311          "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code> minus <code>offset</code>"
11312        },
11313        {
11314          "vuid": "VUID-VkDescriptorBufferInfo-buffer-parameter",
11315          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
11316        }
11317      ]
11318    },
11319    "VkDescriptorImageInfo": {
11320      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
11321        {
11322          "vuid": "VUID-VkDescriptorImageInfo-imageView-00343",
11323          "text": " <code>imageView</code> <strong class=\"purple\">must</strong> not be 2D or 2D array image view created from a 3D image"
11324        }
11325      ],
11326      "core": [
11327        {
11328          "vuid": "VUID-VkDescriptorImageInfo-imageView-01976",
11329          "text": " If <code>imageView</code> is created from a depth/stencil image, the <code>aspectMask</code> used to create the <code>imageView</code> <strong class=\"purple\">must</strong> include either <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code> but not both."
11330        },
11331        {
11332          "vuid": "VUID-VkDescriptorImageInfo-imageLayout-00344",
11333          "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> match the actual <a href=\"#VkImageLayout\">VkImageLayout</a> of each subresource accessible from <code>imageView</code> at the time this descriptor is accessed as defined by the <a href=\"#resources-image-layouts-matching-rule\">image layout matching rules</a>"
11334        },
11335        {
11336          "vuid": "VUID-VkDescriptorImageInfo-commonparent",
11337          "text": " Both of <code>imageView</code>, and <code>sampler</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
11338        }
11339      ],
11340      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
11341        {
11342          "vuid": "VUID-VkDescriptorImageInfo-sampler-01564",
11343          "text": " If <code>sampler</code> is used and the <a href=\"#VkFormat\">VkFormat</a> of the image is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, the image <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>, and the <code>aspectMask</code> of the <code>imageView</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code> or (for three-plane formats only) <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>"
11344        }
11345      ]
11346    },
11347    "VkWriteDescriptorSetInlineUniformBlockEXT": {
11348      "(VK_EXT_inline_uniform_block)": [
11349        {
11350          "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-dataSize-02222",
11351          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>"
11352        },
11353        {
11354          "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-sType-sType",
11355          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT</code>"
11356        },
11357        {
11358          "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-pData-parameter",
11359          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
11360        },
11361        {
11362          "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-dataSize-arraylength",
11363          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
11364        }
11365      ]
11366    },
11367    "VkWriteDescriptorSetAccelerationStructureNV": {
11368      "(VK_NV_ray_tracing)": [
11369        {
11370          "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-accelerationStructureCount-02236",
11371          "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be equal to <code>descriptorCount</code> in the extended structure"
11372        },
11373        {
11374          "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-sType-sType",
11375          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV</code>"
11376        },
11377        {
11378          "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-parameter",
11379          "text": " <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>accelerationStructureCount</code> valid <code>VkAccelerationStructureNV</code> handles"
11380        },
11381        {
11382          "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-accelerationStructureCount-arraylength",
11383          "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
11384        }
11385      ]
11386    },
11387    "VkCopyDescriptorSet": {
11388      "core": [
11389        {
11390          "vuid": "VUID-VkCopyDescriptorSet-srcBinding-00345",
11391          "text": " <code>srcBinding</code> <strong class=\"purple\">must</strong> be a valid binding within <code>srcSet</code>"
11392        },
11393        {
11394          "vuid": "VUID-VkCopyDescriptorSet-srcArrayElement-00346",
11395          "text": " The sum of <code>srcArrayElement</code> and <code>descriptorCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of array elements in the descriptor set binding specified by <code>srcBinding</code>, and all applicable consecutive bindings, as described by <a href=\"#descriptorsets-updates-consecutive\">consecutive binding updates</a>"
11396        },
11397        {
11398          "vuid": "VUID-VkCopyDescriptorSet-dstBinding-00347",
11399          "text": " <code>dstBinding</code> <strong class=\"purple\">must</strong> be a valid binding within <code>dstSet</code>"
11400        },
11401        {
11402          "vuid": "VUID-VkCopyDescriptorSet-dstArrayElement-00348",
11403          "text": " The sum of <code>dstArrayElement</code> and <code>descriptorCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of array elements in the descriptor set binding specified by <code>dstBinding</code>, and all applicable consecutive bindings, as described by <a href=\"#descriptorsets-updates-consecutive\">consecutive binding updates</a>"
11404        },
11405        {
11406          "vuid": "VUID-VkCopyDescriptorSet-dstBinding-02632",
11407          "text": " The type of <code>dstBinding</code> within <code>dstSet</code> <strong class=\"purple\">must</strong> be equal to the type of <code>srcBinding</code> within <code>srcSet</code>"
11408        },
11409        {
11410          "vuid": "VUID-VkCopyDescriptorSet-srcSet-00349",
11411          "text": " If <code>srcSet</code> is equal to <code>dstSet</code>, then the source and destination ranges of descriptors <strong class=\"purple\">must</strong> not overlap, where the ranges <strong class=\"purple\">may</strong> include array elements from consecutive bindings as described by <a href=\"#descriptorsets-updates-consecutive\">consecutive binding updates</a>"
11412        },
11413        {
11414          "vuid": "VUID-VkCopyDescriptorSet-sType-sType",
11415          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET</code>"
11416        },
11417        {
11418          "vuid": "VUID-VkCopyDescriptorSet-pNext-pNext",
11419          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
11420        },
11421        {
11422          "vuid": "VUID-VkCopyDescriptorSet-srcSet-parameter",
11423          "text": " <code>srcSet</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSet</code> handle"
11424        },
11425        {
11426          "vuid": "VUID-VkCopyDescriptorSet-dstSet-parameter",
11427          "text": " <code>dstSet</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSet</code> handle"
11428        },
11429        {
11430          "vuid": "VUID-VkCopyDescriptorSet-commonparent",
11431          "text": " Both of <code>dstSet</code>, and <code>srcSet</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
11432        }
11433      ],
11434      "(VK_EXT_inline_uniform_block)": [
11435        {
11436          "vuid": "VUID-VkCopyDescriptorSet-srcBinding-02223",
11437          "text": " If the descriptor type of the descriptor set binding specified by <code>srcBinding</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, <code>srcArrayElement</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>"
11438        },
11439        {
11440          "vuid": "VUID-VkCopyDescriptorSet-dstBinding-02224",
11441          "text": " If the descriptor type of the descriptor set binding specified by <code>dstBinding</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, <code>dstArrayElement</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>"
11442        },
11443        {
11444          "vuid": "VUID-VkCopyDescriptorSet-srcBinding-02225",
11445          "text": " If the descriptor type of the descriptor set binding specified by either <code>srcBinding</code> or <code>dstBinding</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, <code>descriptorCount</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>"
11446        }
11447      ],
11448      "(VK_EXT_descriptor_indexing)": [
11449        {
11450          "vuid": "VUID-VkCopyDescriptorSet-srcSet-01918",
11451          "text": " If <code>srcSet</code>&#8217;s layout was created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> flag set, then <code>dstSet</code>&#8217;s layout <strong class=\"purple\">must</strong> also have been created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> flag set"
11452        },
11453        {
11454          "vuid": "VUID-VkCopyDescriptorSet-srcSet-01919",
11455          "text": " If <code>srcSet</code>&#8217;s layout was created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> flag set, then <code>dstSet</code>&#8217;s layout <strong class=\"purple\">must</strong> also have been created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> flag set"
11456        },
11457        {
11458          "vuid": "VUID-VkCopyDescriptorSet-srcSet-01920",
11459          "text": " If the descriptor pool from which <code>srcSet</code> was allocated was created with the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT</code> flag set, then the descriptor pool from which <code>dstSet</code> was allocated <strong class=\"purple\">must</strong> also have been created with the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT</code> flag set"
11460        },
11461        {
11462          "vuid": "VUID-VkCopyDescriptorSet-srcSet-01921",
11463          "text": " If the descriptor pool from which <code>srcSet</code> was allocated was created without the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT</code> flag set, then the descriptor pool from which <code>dstSet</code> was allocated <strong class=\"purple\">must</strong> also have been created without the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT</code> flag set"
11464        }
11465      ]
11466    },
11467    "vkCreateDescriptorUpdateTemplate": {
11468      "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
11469        {
11470          "vuid": "VUID-vkCreateDescriptorUpdateTemplate-device-parameter",
11471          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
11472        },
11473        {
11474          "vuid": "VUID-vkCreateDescriptorUpdateTemplate-pCreateInfo-parameter",
11475          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDescriptorUpdateTemplateCreateInfo</code> structure"
11476        },
11477        {
11478          "vuid": "VUID-vkCreateDescriptorUpdateTemplate-pAllocator-parameter",
11479          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
11480        },
11481        {
11482          "vuid": "VUID-vkCreateDescriptorUpdateTemplate-pDescriptorUpdateTemplate-parameter",
11483          "text": " <code>pDescriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDescriptorUpdateTemplate</code> handle"
11484        }
11485      ]
11486    },
11487    "VkDescriptorUpdateTemplateCreateInfo": {
11488      "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
11489        {
11490          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00350",
11491          "text": " If <code>templateType</code> is <code>VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET</code>, <code>descriptorSetLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSetLayout</code> handle"
11492        },
11493        {
11494          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-sType-sType",
11495          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO</code>"
11496        },
11497        {
11498          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-pNext-pNext",
11499          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
11500        },
11501        {
11502          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-flags-zerobitmask",
11503          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
11504        },
11505        {
11506          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-pDescriptorUpdateEntries-parameter",
11507          "text": " <code>pDescriptorUpdateEntries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorUpdateEntryCount</code> valid <code>VkDescriptorUpdateTemplateEntry</code> structures"
11508        },
11509        {
11510          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-parameter",
11511          "text": " <code>templateType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorUpdateTemplateType\">VkDescriptorUpdateTemplateType</a> value"
11512        },
11513        {
11514          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-descriptorSetLayout-parameter",
11515          "text": " If <code>descriptorSetLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>descriptorSetLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSetLayout</code> handle"
11516        },
11517        {
11518          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-descriptorUpdateEntryCount-arraylength",
11519          "text": " <code>descriptorUpdateEntryCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
11520        },
11521        {
11522          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-commonparent",
11523          "text": " Both of <code>descriptorSetLayout</code>, and <code>pipelineLayout</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
11524        }
11525      ],
11526      "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+(VK_KHR_push_descriptor)": [
11527        {
11528          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00351",
11529          "text": " If <code>templateType</code> is <code>VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR</code>, <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
11530        },
11531        {
11532          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00352",
11533          "text": " If <code>templateType</code> is <code>VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR</code>, <code>pipelineLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
11534        },
11535        {
11536          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00353",
11537          "text": " If <code>templateType</code> is <code>VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR</code>, <code>set</code> <strong class=\"purple\">must</strong> be the unique set number in the pipeline layout that uses a descriptor set layout that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>"
11538        }
11539      ]
11540    },
11541    "VkDescriptorUpdateTemplateEntry": {
11542      "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
11543        {
11544          "vuid": "VUID-VkDescriptorUpdateTemplateEntry-dstBinding-00354",
11545          "text": " <code>dstBinding</code> <strong class=\"purple\">must</strong> be a valid binding in the descriptor set layout implicitly specified when using a descriptor update template to update descriptors."
11546        },
11547        {
11548          "vuid": "VUID-VkDescriptorUpdateTemplateEntry-dstArrayElement-00355",
11549          "text": " <code>dstArrayElement</code> and <code>descriptorCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of array elements in the descriptor set binding implicitly specified when using a descriptor update template to update descriptors, and all applicable consecutive bindings, as described by <a href=\"#descriptorsets-updates-consecutive\">consecutive binding updates</a>"
11550        },
11551        {
11552          "vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptorType-parameter",
11553          "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
11554        }
11555      ],
11556      "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+(VK_EXT_inline_uniform_block)": [
11557        {
11558          "vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptor-02226",
11559          "text": " If <code>descriptor</code> type is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, <code>dstArrayElement</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>"
11560        },
11561        {
11562          "vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptor-02227",
11563          "text": " If <code>descriptor</code> type is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, <code>descriptorCount</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>"
11564        }
11565      ]
11566    },
11567    "vkDestroyDescriptorUpdateTemplate": {
11568      "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
11569        {
11570          "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00356",
11571          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>descriptorSetLayout</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
11572        },
11573        {
11574          "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00357",
11575          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>descriptorSetLayout</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
11576        },
11577        {
11578          "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-device-parameter",
11579          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
11580        },
11581        {
11582          "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorUpdateTemplate-parameter",
11583          "text": " If <code>descriptorUpdateTemplate</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorUpdateTemplate</code> handle"
11584        },
11585        {
11586          "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-pAllocator-parameter",
11587          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
11588        },
11589        {
11590          "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorUpdateTemplate-parent",
11591          "text": " If <code>descriptorUpdateTemplate</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
11592        }
11593      ]
11594    },
11595    "vkUpdateDescriptorSetWithTemplate": {
11596      "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
11597        {
11598          "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-pData-01685",
11599          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to a memory that contains one or more valid instances of <a href=\"#VkDescriptorImageInfo\">VkDescriptorImageInfo</a>, <a href=\"#VkDescriptorBufferInfo\">VkDescriptorBufferInfo</a>, or <a href=\"#VkBufferView\">VkBufferView</a> in a layout defined by <code>descriptorUpdateTemplate</code> when it was created with <a href=\"#vkCreateDescriptorUpdateTemplate\">vkCreateDescriptorUpdateTemplate</a>"
11600        },
11601        {
11602          "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-device-parameter",
11603          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
11604        },
11605        {
11606          "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorSet-parameter",
11607          "text": " <code>descriptorSet</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSet</code> handle"
11608        },
11609        {
11610          "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorUpdateTemplate-parameter",
11611          "text": " <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorUpdateTemplate</code> handle"
11612        },
11613        {
11614          "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorUpdateTemplate-parent",
11615          "text": " <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
11616        }
11617      ]
11618    },
11619    "vkCmdBindDescriptorSets": {
11620      "core": [
11621        {
11622          "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-00358",
11623          "text": " Each element of <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have been allocated with a <code>VkDescriptorSetLayout</code> that matches (is the same as, or identically defined as) the <code>VkDescriptorSetLayout</code> at set <em>n</em> in <code>layout</code>, where <em>n</em> is the sum of <code>firstSet</code> and the index into <code>pDescriptorSets</code>"
11624        },
11625        {
11626          "vuid": "VUID-vkCmdBindDescriptorSets-dynamicOffsetCount-00359",
11627          "text": " <code>dynamicOffsetCount</code> <strong class=\"purple\">must</strong> be equal to the total number of dynamic descriptors in <code>pDescriptorSets</code>"
11628        },
11629        {
11630          "vuid": "VUID-vkCmdBindDescriptorSets-firstSet-00360",
11631          "text": " The sum of <code>firstSet</code> and <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPipelineLayoutCreateInfo</code>::<code>setLayoutCount</code> provided when <code>layout</code> was created"
11632        },
11633        {
11634          "vuid": "VUID-vkCmdBindDescriptorSets-pipelineBindPoint-00361",
11635          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be supported by the <code>commandBuffer</code>&#8217;s parent <code>VkCommandPool</code>&#8217;s queue family"
11636        },
11637        {
11638          "vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01971",
11639          "text": " Each element of <code>pDynamicOffsets</code> which corresponds to a descriptor binding with type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minUniformBufferOffsetAlignment</code>"
11640        },
11641        {
11642          "vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01972",
11643          "text": " Each element of <code>pDynamicOffsets</code> which corresponds to a descriptor binding with type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minStorageBufferOffsetAlignment</code>"
11644        },
11645        {
11646          "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-01979",
11647          "text": " For each dynamic uniform or storage buffer binding in <code>pDescriptorSets</code>, the sum of the effective offset, as defined above, and the range of the binding <strong class=\"purple\">must</strong> be less than or equal to the size of the buffer"
11648        },
11649        {
11650          "vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-parameter",
11651          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
11652        },
11653        {
11654          "vuid": "VUID-vkCmdBindDescriptorSets-pipelineBindPoint-parameter",
11655          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
11656        },
11657        {
11658          "vuid": "VUID-vkCmdBindDescriptorSets-layout-parameter",
11659          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
11660        },
11661        {
11662          "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-parameter",
11663          "text": " <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorSetCount</code> valid <code>VkDescriptorSet</code> handles"
11664        },
11665        {
11666          "vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-parameter",
11667          "text": " If <code>dynamicOffsetCount</code> is not <code>0</code>, <code>pDynamicOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dynamicOffsetCount</code> <code>uint32_t</code> values"
11668        },
11669        {
11670          "vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-recording",
11671          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
11672        },
11673        {
11674          "vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-cmdpool",
11675          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
11676        },
11677        {
11678          "vuid": "VUID-vkCmdBindDescriptorSets-descriptorSetCount-arraylength",
11679          "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
11680        },
11681        {
11682          "vuid": "VUID-vkCmdBindDescriptorSets-commonparent",
11683          "text": " Each of <code>commandBuffer</code>, <code>layout</code>, and the elements of <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
11684        }
11685      ]
11686    },
11687    "vkCmdPushDescriptorSetKHR": {
11688      "(VK_KHR_push_descriptor)": [
11689        {
11690          "vuid": "VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-00363",
11691          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be supported by the <code>commandBuffer</code>&#8217;s parent <code>VkCommandPool</code>&#8217;s queue family"
11692        },
11693        {
11694          "vuid": "VUID-vkCmdPushDescriptorSetKHR-set-00364",
11695          "text": " <code>set</code> <strong class=\"purple\">must</strong> be less than <code>VkPipelineLayoutCreateInfo</code>::<code>setLayoutCount</code> provided when <code>layout</code> was created"
11696        },
11697        {
11698          "vuid": "VUID-vkCmdPushDescriptorSetKHR-set-00365",
11699          "text": " <code>set</code> <strong class=\"purple\">must</strong> be the unique set number in the pipeline layout that uses a descriptor set layout that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>"
11700        },
11701        {
11702          "vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-parameter",
11703          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
11704        },
11705        {
11706          "vuid": "VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-parameter",
11707          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
11708        },
11709        {
11710          "vuid": "VUID-vkCmdPushDescriptorSetKHR-layout-parameter",
11711          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
11712        },
11713        {
11714          "vuid": "VUID-vkCmdPushDescriptorSetKHR-pDescriptorWrites-parameter",
11715          "text": " <code>pDescriptorWrites</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorWriteCount</code> valid <code>VkWriteDescriptorSet</code> structures"
11716        },
11717        {
11718          "vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-recording",
11719          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
11720        },
11721        {
11722          "vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-cmdpool",
11723          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
11724        },
11725        {
11726          "vuid": "VUID-vkCmdPushDescriptorSetKHR-descriptorWriteCount-arraylength",
11727          "text": " <code>descriptorWriteCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
11728        },
11729        {
11730          "vuid": "VUID-vkCmdPushDescriptorSetKHR-commonparent",
11731          "text": " Both of <code>commandBuffer</code>, and <code>layout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
11732        }
11733      ]
11734    },
11735    "vkCmdPushDescriptorSetWithTemplateKHR": {
11736      "(VK_KHR_push_descriptor)+(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
11737        {
11738          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-00366",
11739          "text": " The <code>pipelineBindPoint</code> specified during the creation of the descriptor update template <strong class=\"purple\">must</strong> be supported by the <code>commandBuffer</code>&#8217;s parent <code>VkCommandPool</code>&#8217;s queue family"
11740        },
11741        {
11742          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-pData-01686",
11743          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to a memory that contains one or more valid instances of <a href=\"#VkDescriptorImageInfo\">VkDescriptorImageInfo</a>, <a href=\"#VkDescriptorBufferInfo\">VkDescriptorBufferInfo</a>, or <a href=\"#VkBufferView\">VkBufferView</a> in a layout defined by <code>descriptorUpdateTemplate</code> when it was created with <a href=\"#vkCreateDescriptorUpdateTemplateKHR\">vkCreateDescriptorUpdateTemplateKHR</a>"
11744        },
11745        {
11746          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-parameter",
11747          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
11748        },
11749        {
11750          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-parameter",
11751          "text": " <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorUpdateTemplate</code> handle"
11752        },
11753        {
11754          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-layout-parameter",
11755          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
11756        },
11757        {
11758          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-recording",
11759          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
11760        },
11761        {
11762          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-cmdpool",
11763          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
11764        },
11765        {
11766          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commonparent",
11767          "text": " Each of <code>commandBuffer</code>, <code>descriptorUpdateTemplate</code>, and <code>layout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
11768        }
11769      ]
11770    },
11771    "vkCmdPushConstants": {
11772      "core": [
11773        {
11774          "vuid": "VUID-vkCmdPushConstants-offset-01795",
11775          "text": " For each byte in the range specified by <code>offset</code> and <code>size</code> and for each shader stage in <code>stageFlags</code>, there <strong class=\"purple\">must</strong> be a push constant range in <code>layout</code> that includes that byte and that stage"
11776        },
11777        {
11778          "vuid": "VUID-vkCmdPushConstants-offset-01796",
11779          "text": " For each byte in the range specified by <code>offset</code> and <code>size</code> and for each push constant range that overlaps that byte, <code>stageFlags</code> <strong class=\"purple\">must</strong> include all stages in that push constant range&#8217;s <a href=\"#VkPushConstantRange\">VkPushConstantRange</a>::<code>stageFlags</code>"
11780        },
11781        {
11782          "vuid": "VUID-vkCmdPushConstants-offset-00368",
11783          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
11784        },
11785        {
11786          "vuid": "VUID-vkCmdPushConstants-size-00369",
11787          "text": " <code>size</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
11788        },
11789        {
11790          "vuid": "VUID-vkCmdPushConstants-offset-00370",
11791          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code>"
11792        },
11793        {
11794          "vuid": "VUID-vkCmdPushConstants-size-00371",
11795          "text": " <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code> minus <code>offset</code>"
11796        },
11797        {
11798          "vuid": "VUID-vkCmdPushConstants-commandBuffer-parameter",
11799          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
11800        },
11801        {
11802          "vuid": "VUID-vkCmdPushConstants-layout-parameter",
11803          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
11804        },
11805        {
11806          "vuid": "VUID-vkCmdPushConstants-stageFlags-parameter",
11807          "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values"
11808        },
11809        {
11810          "vuid": "VUID-vkCmdPushConstants-stageFlags-requiredbitmask",
11811          "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
11812        },
11813        {
11814          "vuid": "VUID-vkCmdPushConstants-pValues-parameter",
11815          "text": " <code>pValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>size</code> bytes"
11816        },
11817        {
11818          "vuid": "VUID-vkCmdPushConstants-commandBuffer-recording",
11819          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
11820        },
11821        {
11822          "vuid": "VUID-vkCmdPushConstants-commandBuffer-cmdpool",
11823          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
11824        },
11825        {
11826          "vuid": "VUID-vkCmdPushConstants-size-arraylength",
11827          "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
11828        },
11829        {
11830          "vuid": "VUID-vkCmdPushConstants-commonparent",
11831          "text": " Both of <code>commandBuffer</code>, and <code>layout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
11832        }
11833      ]
11834    },
11835    "vkGetBufferDeviceAddressEXT": {
11836      "(VK_EXT_buffer_device_address)": [
11837        {
11838          "vuid": "VUID-vkGetBufferDeviceAddressEXT-None-02598",
11839          "text": " The <a href=\"#features-bufferDeviceAddress\">bufferDeviceAddress</a> feature <strong class=\"purple\">must</strong> be enabled"
11840        },
11841        {
11842          "vuid": "VUID-vkGetBufferDeviceAddressEXT-device-02599",
11843          "text": " If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\">bufferDeviceAddressMultiDevice</a> feature <strong class=\"purple\">must</strong> be enabled"
11844        },
11845        {
11846          "vuid": "VUID-vkGetBufferDeviceAddressEXT-device-parameter",
11847          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
11848        },
11849        {
11850          "vuid": "VUID-vkGetBufferDeviceAddressEXT-pInfo-parameter",
11851          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkBufferDeviceAddressInfoEXT</code> structure"
11852        }
11853      ]
11854    },
11855    "VkBufferDeviceAddressInfoEXT": {
11856      "(VK_EXT_buffer_device_address)": [
11857        {
11858          "vuid": "VUID-VkBufferDeviceAddressInfoEXT-buffer-02600",
11859          "text": " If <code>buffer</code> is non-sparse and was not created with the <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT</code> flag, then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
11860        },
11861        {
11862          "vuid": "VUID-VkBufferDeviceAddressInfoEXT-buffer-02601",
11863          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT</code>"
11864        },
11865        {
11866          "vuid": "VUID-VkBufferDeviceAddressInfoEXT-sType-sType",
11867          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT</code>"
11868        },
11869        {
11870          "vuid": "VUID-VkBufferDeviceAddressInfoEXT-pNext-pNext",
11871          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
11872        },
11873        {
11874          "vuid": "VUID-VkBufferDeviceAddressInfoEXT-buffer-parameter",
11875          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
11876        }
11877      ]
11878    },
11879    "vkCreateQueryPool": {
11880      "core": [
11881        {
11882          "vuid": "VUID-vkCreateQueryPool-device-parameter",
11883          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
11884        },
11885        {
11886          "vuid": "VUID-vkCreateQueryPool-pCreateInfo-parameter",
11887          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkQueryPoolCreateInfo</code> structure"
11888        },
11889        {
11890          "vuid": "VUID-vkCreateQueryPool-pAllocator-parameter",
11891          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
11892        },
11893        {
11894          "vuid": "VUID-vkCreateQueryPool-pQueryPool-parameter",
11895          "text": " <code>pQueryPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkQueryPool</code> handle"
11896        }
11897      ]
11898    },
11899    "VkQueryPoolCreateInfo": {
11900      "core": [
11901        {
11902          "vuid": "VUID-VkQueryPoolCreateInfo-queryType-00791",
11903          "text": " If the <a href=\"#features-pipelineStatisticsQuery\">pipeline statistics queries</a> feature is not enabled, <code>queryType</code> <strong class=\"purple\">must</strong> not be <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code>"
11904        },
11905        {
11906          "vuid": "VUID-VkQueryPoolCreateInfo-queryType-00792",
11907          "text": " If <code>queryType</code> is <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code>, <code>pipelineStatistics</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryPipelineStatisticFlagBits\">VkQueryPipelineStatisticFlagBits</a> values"
11908        },
11909        {
11910          "vuid": "VUID-VkQueryPoolCreateInfo-sType-sType",
11911          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO</code>"
11912        },
11913        {
11914          "vuid": "VUID-VkQueryPoolCreateInfo-pNext-pNext",
11915          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
11916        },
11917        {
11918          "vuid": "VUID-VkQueryPoolCreateInfo-flags-zerobitmask",
11919          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
11920        },
11921        {
11922          "vuid": "VUID-VkQueryPoolCreateInfo-queryType-parameter",
11923          "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value"
11924        }
11925      ]
11926    },
11927    "vkDestroyQueryPool": {
11928      "core": [
11929        {
11930          "vuid": "VUID-vkDestroyQueryPool-queryPool-00793",
11931          "text": " All submitted commands that refer to <code>queryPool</code> <strong class=\"purple\">must</strong> have completed execution"
11932        },
11933        {
11934          "vuid": "VUID-vkDestroyQueryPool-queryPool-00794",
11935          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>queryPool</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
11936        },
11937        {
11938          "vuid": "VUID-vkDestroyQueryPool-queryPool-00795",
11939          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>queryPool</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
11940        },
11941        {
11942          "vuid": "VUID-vkDestroyQueryPool-device-parameter",
11943          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
11944        },
11945        {
11946          "vuid": "VUID-vkDestroyQueryPool-queryPool-parameter",
11947          "text": " If <code>queryPool</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
11948        },
11949        {
11950          "vuid": "VUID-vkDestroyQueryPool-pAllocator-parameter",
11951          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
11952        },
11953        {
11954          "vuid": "VUID-vkDestroyQueryPool-queryPool-parent",
11955          "text": " If <code>queryPool</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
11956        }
11957      ]
11958    },
11959    "vkCmdResetQueryPool": {
11960      "core": [
11961        {
11962          "vuid": "VUID-vkCmdResetQueryPool-firstQuery-00796",
11963          "text": " <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
11964        },
11965        {
11966          "vuid": "VUID-vkCmdResetQueryPool-firstQuery-00797",
11967          "text": " The sum of <code>firstQuery</code> and <code>queryCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>"
11968        },
11969        {
11970          "vuid": "VUID-vkCmdResetQueryPool-commandBuffer-parameter",
11971          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
11972        },
11973        {
11974          "vuid": "VUID-vkCmdResetQueryPool-queryPool-parameter",
11975          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
11976        },
11977        {
11978          "vuid": "VUID-vkCmdResetQueryPool-commandBuffer-recording",
11979          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
11980        },
11981        {
11982          "vuid": "VUID-vkCmdResetQueryPool-commandBuffer-cmdpool",
11983          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
11984        },
11985        {
11986          "vuid": "VUID-vkCmdResetQueryPool-renderpass",
11987          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
11988        },
11989        {
11990          "vuid": "VUID-vkCmdResetQueryPool-commonparent",
11991          "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
11992        }
11993      ]
11994    },
11995    "vkCmdBeginQuery": {
11996      "core": [
11997        {
11998          "vuid": "VUID-vkCmdBeginQuery-queryPool-01922",
11999          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> that differs from that of any queries that are <a href=\"#queries-operation-active\">active</a> within <code>commandBuffer</code>"
12000        },
12001        {
12002          "vuid": "VUID-vkCmdBeginQuery-None-00807",
12003          "text": " All queries used by the command <strong class=\"purple\">must</strong> be unavailable"
12004        },
12005        {
12006          "vuid": "VUID-vkCmdBeginQuery-queryType-00800",
12007          "text": " If the <a href=\"#features-occlusionQueryPrecise\">precise occlusion queries</a> feature is not enabled, or the <code>queryType</code> used to create <code>queryPool</code> was not <code>VK_QUERY_TYPE_OCCLUSION</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_CONTROL_PRECISE_BIT</code>"
12008        },
12009        {
12010          "vuid": "VUID-vkCmdBeginQuery-query-00802",
12011          "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
12012        },
12013        {
12014          "vuid": "VUID-vkCmdBeginQuery-queryType-00803",
12015          "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_OCCLUSION</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
12016        },
12017        {
12018          "vuid": "VUID-vkCmdBeginQuery-queryType-00804",
12019          "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code> and any of the <code>pipelineStatistics</code> indicate graphics operations, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
12020        },
12021        {
12022          "vuid": "VUID-vkCmdBeginQuery-queryType-00805",
12023          "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code> and any of the <code>pipelineStatistics</code> indicate compute operations, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
12024        },
12025        {
12026          "vuid": "VUID-vkCmdBeginQuery-commandBuffer-parameter",
12027          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
12028        },
12029        {
12030          "vuid": "VUID-vkCmdBeginQuery-queryPool-parameter",
12031          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
12032        },
12033        {
12034          "vuid": "VUID-vkCmdBeginQuery-flags-parameter",
12035          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryControlFlagBits\">VkQueryControlFlagBits</a> values"
12036        },
12037        {
12038          "vuid": "VUID-vkCmdBeginQuery-commandBuffer-recording",
12039          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
12040        },
12041        {
12042          "vuid": "VUID-vkCmdBeginQuery-commandBuffer-cmdpool",
12043          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
12044        },
12045        {
12046          "vuid": "VUID-vkCmdBeginQuery-commonparent",
12047          "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
12048        }
12049      ],
12050      "(VK_VERSION_1_1)": [
12051        {
12052          "vuid": "VUID-vkCmdBeginQuery-commandBuffer-01885",
12053          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
12054        }
12055      ],
12056      "(VK_VERSION_1_1,VK_KHR_multiview)": [
12057        {
12058          "vuid": "VUID-vkCmdBeginQuery-query-00808",
12059          "text": " If <code>vkCmdBeginQuery</code> is called within a render pass instance, the sum of <code>query</code> and the number of bits set in the current subpass&#8217;s view mask <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>"
12060        }
12061      ],
12062      "(VK_EXT_transform_feedback)": [
12063        {
12064          "vuid": "VUID-vkCmdBeginQuery-queryType-02327",
12065          "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
12066        },
12067        {
12068          "vuid": "VUID-vkCmdBeginQuery-queryType-02328",
12069          "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> then <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>transformFeedbackQueries</code> <strong class=\"purple\">must</strong> be supported"
12070        }
12071      ]
12072    },
12073    "vkCmdBeginQueryIndexedEXT": {
12074      "(VK_EXT_transform_feedback)": [
12075        {
12076          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-02329",
12077          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> that differs from that of any queries that are <a href=\"#queries-operation-active\">active</a> within <code>commandBuffer</code>"
12078        },
12079        {
12080          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-None-02330",
12081          "text": " All queries used by the command <strong class=\"purple\">must</strong> be unavailable"
12082        },
12083        {
12084          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02331",
12085          "text": " If the <a href=\"#features-occlusionQueryPrecise\">precise occlusion queries</a> feature is not enabled, or the <code>queryType</code> used to create <code>queryPool</code> was not <code>VK_QUERY_TYPE_OCCLUSION</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_CONTROL_PRECISE_BIT</code>"
12086        },
12087        {
12088          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-query-02332",
12089          "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
12090        },
12091        {
12092          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02333",
12093          "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_OCCLUSION</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
12094        },
12095        {
12096          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02334",
12097          "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code> and any of the <code>pipelineStatistics</code> indicate graphics operations, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
12098        },
12099        {
12100          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02335",
12101          "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code> and any of the <code>pipelineStatistics</code> indicate compute operations, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
12102        },
12103        {
12104          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02338",
12105          "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
12106        },
12107        {
12108          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02339",
12109          "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> the <code>index</code> parameter <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackStreams</code>"
12110        },
12111        {
12112          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02340",
12113          "text": " If the <code>queryType</code> used to create <code>queryPool</code> was not <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> the <code>index</code> <strong class=\"purple\">must</strong> be zero"
12114        },
12115        {
12116          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02341",
12117          "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> then <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>transformFeedbackQueries</code> <strong class=\"purple\">must</strong> be supported"
12118        },
12119        {
12120          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-parameter",
12121          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
12122        },
12123        {
12124          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-parameter",
12125          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
12126        },
12127        {
12128          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-flags-parameter",
12129          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryControlFlagBits\">VkQueryControlFlagBits</a> values"
12130        },
12131        {
12132          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-recording",
12133          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
12134        },
12135        {
12136          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-cmdpool",
12137          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
12138        },
12139        {
12140          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commonparent",
12141          "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
12142        }
12143      ],
12144      "(VK_EXT_transform_feedback)+(VK_VERSION_1_1)": [
12145        {
12146          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-02336",
12147          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
12148        }
12149      ],
12150      "(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [
12151        {
12152          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-query-02337",
12153          "text": " If <code>vkCmdBeginQuery</code> is called within a render pass instance, the sum of <code>query</code> and the number of bits set in the current subpass&#8217;s view mask <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>"
12154        }
12155      ]
12156    },
12157    "vkCmdEndQuery": {
12158      "core": [
12159        {
12160          "vuid": "VUID-vkCmdEndQuery-None-01923",
12161          "text": " All queries used by the command <strong class=\"purple\">must</strong> be <a href=\"#queries-operation-active\">active</a>"
12162        },
12163        {
12164          "vuid": "VUID-vkCmdEndQuery-query-00810",
12165          "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
12166        },
12167        {
12168          "vuid": "VUID-vkCmdEndQuery-commandBuffer-parameter",
12169          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
12170        },
12171        {
12172          "vuid": "VUID-vkCmdEndQuery-queryPool-parameter",
12173          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
12174        },
12175        {
12176          "vuid": "VUID-vkCmdEndQuery-commandBuffer-recording",
12177          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
12178        },
12179        {
12180          "vuid": "VUID-vkCmdEndQuery-commandBuffer-cmdpool",
12181          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
12182        },
12183        {
12184          "vuid": "VUID-vkCmdEndQuery-commonparent",
12185          "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
12186        }
12187      ],
12188      "(VK_VERSION_1_1)": [
12189        {
12190          "vuid": "VUID-vkCmdEndQuery-commandBuffer-01886",
12191          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
12192        }
12193      ],
12194      "(VK_VERSION_1_1,VK_KHR_multiview)": [
12195        {
12196          "vuid": "VUID-vkCmdEndQuery-query-00812",
12197          "text": " If <code>vkCmdEndQuery</code> is called within a render pass instance, the sum of <code>query</code> and the number of bits set in the current subpass&#8217;s view mask <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>"
12198        }
12199      ]
12200    },
12201    "vkCmdEndQueryIndexedEXT": {
12202      "(VK_EXT_transform_feedback)": [
12203        {
12204          "vuid": "VUID-vkCmdEndQueryIndexedEXT-None-02342",
12205          "text": " All queries used by the command <strong class=\"purple\">must</strong> be <a href=\"#queries-operation-active\">active</a>"
12206        },
12207        {
12208          "vuid": "VUID-vkCmdEndQueryIndexedEXT-query-02343",
12209          "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
12210        },
12211        {
12212          "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-02346",
12213          "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> the <code>index</code> parameter <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackStreams</code>"
12214        },
12215        {
12216          "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-02347",
12217          "text": " If the <code>queryType</code> used to create <code>queryPool</code> was not <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> the <code>index</code> <strong class=\"purple\">must</strong> be zero"
12218        },
12219        {
12220          "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-parameter",
12221          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
12222        },
12223        {
12224          "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryPool-parameter",
12225          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
12226        },
12227        {
12228          "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-recording",
12229          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
12230        },
12231        {
12232          "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-cmdpool",
12233          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
12234        },
12235        {
12236          "vuid": "VUID-vkCmdEndQueryIndexedEXT-commonparent",
12237          "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
12238        }
12239      ],
12240      "(VK_EXT_transform_feedback)+(VK_VERSION_1_1)": [
12241        {
12242          "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-02344",
12243          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
12244        }
12245      ],
12246      "(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [
12247        {
12248          "vuid": "VUID-vkCmdEndQueryIndexedEXT-query-02345",
12249          "text": " If <code>vkCmdEndQuery</code> is called within a render pass instance, the sum of <code>query</code> and the number of bits set in the current subpass&#8217;s view mask <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>"
12250        }
12251      ]
12252    },
12253    "vkGetQueryPoolResults": {
12254      "core": [
12255        {
12256          "vuid": "VUID-vkGetQueryPoolResults-firstQuery-00813",
12257          "text": " <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
12258        },
12259        {
12260          "vuid": "VUID-vkGetQueryPoolResults-flags-00814",
12261          "text": " If <code>VK_QUERY_RESULT_64_BIT</code> is not set in <code>flags</code> then <code>pData</code> and <code>stride</code> <strong class=\"purple\">must</strong> be multiples of <code>4</code>"
12262        },
12263        {
12264          "vuid": "VUID-vkGetQueryPoolResults-flags-00815",
12265          "text": " If <code>VK_QUERY_RESULT_64_BIT</code> is set in <code>flags</code> then <code>pData</code> and <code>stride</code> <strong class=\"purple\">must</strong> be multiples of <code>8</code>"
12266        },
12267        {
12268          "vuid": "VUID-vkGetQueryPoolResults-firstQuery-00816",
12269          "text": " The sum of <code>firstQuery</code> and <code>queryCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>"
12270        },
12271        {
12272          "vuid": "VUID-vkGetQueryPoolResults-dataSize-00817",
12273          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be large enough to contain the result of each query, as described <a href=\"#queries-operation-memorylayout\">here</a>"
12274        },
12275        {
12276          "vuid": "VUID-vkGetQueryPoolResults-queryType-00818",
12277          "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TIMESTAMP</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_RESULT_PARTIAL_BIT</code>"
12278        },
12279        {
12280          "vuid": "VUID-vkGetQueryPoolResults-device-parameter",
12281          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
12282        },
12283        {
12284          "vuid": "VUID-vkGetQueryPoolResults-queryPool-parameter",
12285          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
12286        },
12287        {
12288          "vuid": "VUID-vkGetQueryPoolResults-pData-parameter",
12289          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
12290        },
12291        {
12292          "vuid": "VUID-vkGetQueryPoolResults-flags-parameter",
12293          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryResultFlagBits\">VkQueryResultFlagBits</a> values"
12294        },
12295        {
12296          "vuid": "VUID-vkGetQueryPoolResults-dataSize-arraylength",
12297          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
12298        },
12299        {
12300          "vuid": "VUID-vkGetQueryPoolResults-queryPool-parent",
12301          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
12302        }
12303      ]
12304    },
12305    "vkCmdCopyQueryPoolResults": {
12306      "core": [
12307        {
12308          "vuid": "VUID-vkCmdCopyQueryPoolResults-dstOffset-00819",
12309          "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>"
12310        },
12311        {
12312          "vuid": "VUID-vkCmdCopyQueryPoolResults-firstQuery-00820",
12313          "text": " <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
12314        },
12315        {
12316          "vuid": "VUID-vkCmdCopyQueryPoolResults-firstQuery-00821",
12317          "text": " The sum of <code>firstQuery</code> and <code>queryCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>"
12318        },
12319        {
12320          "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-00822",
12321          "text": " If <code>VK_QUERY_RESULT_64_BIT</code> is not set in <code>flags</code> then <code>dstOffset</code> and <code>stride</code> <strong class=\"purple\">must</strong> be multiples of <code>4</code>"
12322        },
12323        {
12324          "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-00823",
12325          "text": " If <code>VK_QUERY_RESULT_64_BIT</code> is set in <code>flags</code> then <code>dstOffset</code> and <code>stride</code> <strong class=\"purple\">must</strong> be multiples of <code>8</code>"
12326        },
12327        {
12328          "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00824",
12329          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have enough storage, from <code>dstOffset</code>, to contain the result of each query, as described <a href=\"#queries-operation-memorylayout\">here</a>"
12330        },
12331        {
12332          "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00825",
12333          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
12334        },
12335        {
12336          "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00826",
12337          "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
12338        },
12339        {
12340          "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-00827",
12341          "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TIMESTAMP</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_RESULT_PARTIAL_BIT</code>"
12342        },
12343        {
12344          "vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-parameter",
12345          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
12346        },
12347        {
12348          "vuid": "VUID-vkCmdCopyQueryPoolResults-queryPool-parameter",
12349          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
12350        },
12351        {
12352          "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-parameter",
12353          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
12354        },
12355        {
12356          "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-parameter",
12357          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryResultFlagBits\">VkQueryResultFlagBits</a> values"
12358        },
12359        {
12360          "vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-recording",
12361          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
12362        },
12363        {
12364          "vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-cmdpool",
12365          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
12366        },
12367        {
12368          "vuid": "VUID-vkCmdCopyQueryPoolResults-renderpass",
12369          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
12370        },
12371        {
12372          "vuid": "VUID-vkCmdCopyQueryPoolResults-commonparent",
12373          "text": " Each of <code>commandBuffer</code>, <code>dstBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
12374        }
12375      ]
12376    },
12377    "vkCmdWriteTimestamp": {
12378      "core": [
12379        {
12380          "vuid": "VUID-vkCmdWriteTimestamp-queryPool-01416",
12381          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> of <code>VK_QUERY_TYPE_TIMESTAMP</code>"
12382        },
12383        {
12384          "vuid": "VUID-vkCmdWriteTimestamp-queryPool-00828",
12385          "text": " The query identified by <code>queryPool</code> and <code>query</code> <strong class=\"purple\">must</strong> be <em>unavailable</em>"
12386        },
12387        {
12388          "vuid": "VUID-vkCmdWriteTimestamp-timestampValidBits-00829",
12389          "text": " The command pool&#8217;s queue family <strong class=\"purple\">must</strong> support a non-zero <code>timestampValidBits</code>"
12390        },
12391        {
12392          "vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-parameter",
12393          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
12394        },
12395        {
12396          "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-parameter",
12397          "text": " <code>pipelineStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> value"
12398        },
12399        {
12400          "vuid": "VUID-vkCmdWriteTimestamp-queryPool-parameter",
12401          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
12402        },
12403        {
12404          "vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-recording",
12405          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
12406        },
12407        {
12408          "vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-cmdpool",
12409          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
12410        },
12411        {
12412          "vuid": "VUID-vkCmdWriteTimestamp-commonparent",
12413          "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
12414        }
12415      ],
12416      "(VK_VERSION_1_1,VK_KHR_multiview)": [
12417        {
12418          "vuid": "VUID-vkCmdWriteTimestamp-None-00830",
12419          "text": " All queries used by the command <strong class=\"purple\">must</strong> be unavailable"
12420        },
12421        {
12422          "vuid": "VUID-vkCmdWriteTimestamp-query-00831",
12423          "text": " If <code>vkCmdWriteTimestamp</code> is called within a render pass instance, the sum of <code>query</code> and the number of bits set in the current subpass&#8217;s view mask <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>"
12424        }
12425      ]
12426    },
12427    "vkCmdClearColorImage": {
12428      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
12429        {
12430          "vuid": "VUID-vkCmdClearColorImage-image-01993",
12431          "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>image</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_DST_BIT</code>."
12432        }
12433      ],
12434      "core": [
12435        {
12436          "vuid": "VUID-vkCmdClearColorImage-image-00002",
12437          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
12438        },
12439        {
12440          "vuid": "VUID-vkCmdClearColorImage-image-00003",
12441          "text": " If <code>image</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
12442        },
12443        {
12444          "vuid": "VUID-vkCmdClearColorImage-imageLayout-00004",
12445          "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresource ranges of <code>image</code> specified in <code>pRanges</code> at the time this command is executed on a <code>VkDevice</code>"
12446        },
12447        {
12448          "vuid": "VUID-vkCmdClearColorImage-aspectMask-02498",
12449          "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>aspectMask</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each only include <code>VK_IMAGE_ASPECT_COLOR_BIT</code>"
12450        },
12451        {
12452          "vuid": "VUID-vkCmdClearColorImage-baseMipLevel-01470",
12453          "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>baseMipLevel</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
12454        },
12455        {
12456          "vuid": "VUID-vkCmdClearColorImage-pRanges-01692",
12457          "text": " For each <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> element of <code>pRanges</code>, if the <code>levelCount</code> member is not <code>VK_REMAINING_MIP_LEVELS</code>, then <span class=\"eq\"><code>baseMipLevel</code> &#43; <code>levelCount</code></span> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
12458        },
12459        {
12460          "vuid": "VUID-vkCmdClearColorImage-baseArrayLayer-01472",
12461          "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>baseArrayLayer</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
12462        },
12463        {
12464          "vuid": "VUID-vkCmdClearColorImage-pRanges-01693",
12465          "text": " For each <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> element of <code>pRanges</code>, if the <code>layerCount</code> member is not <code>VK_REMAINING_ARRAY_LAYERS</code>, then <span class=\"eq\"><code>baseArrayLayer</code> &#43; <code>layerCount</code></span> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
12466        },
12467        {
12468          "vuid": "VUID-vkCmdClearColorImage-image-00007",
12469          "text": " <code>image</code> <strong class=\"purple\">must</strong> not have a compressed or depth/stencil format"
12470        },
12471        {
12472          "vuid": "VUID-vkCmdClearColorImage-commandBuffer-parameter",
12473          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
12474        },
12475        {
12476          "vuid": "VUID-vkCmdClearColorImage-image-parameter",
12477          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
12478        },
12479        {
12480          "vuid": "VUID-vkCmdClearColorImage-imageLayout-parameter",
12481          "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
12482        },
12483        {
12484          "vuid": "VUID-vkCmdClearColorImage-pColor-parameter",
12485          "text": " <code>pColor</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkClearColorValue</code> union"
12486        },
12487        {
12488          "vuid": "VUID-vkCmdClearColorImage-pRanges-parameter",
12489          "text": " <code>pRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rangeCount</code> valid <code>VkImageSubresourceRange</code> structures"
12490        },
12491        {
12492          "vuid": "VUID-vkCmdClearColorImage-commandBuffer-recording",
12493          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
12494        },
12495        {
12496          "vuid": "VUID-vkCmdClearColorImage-commandBuffer-cmdpool",
12497          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
12498        },
12499        {
12500          "vuid": "VUID-vkCmdClearColorImage-renderpass",
12501          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
12502        },
12503        {
12504          "vuid": "VUID-vkCmdClearColorImage-rangeCount-arraylength",
12505          "text": " <code>rangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
12506        },
12507        {
12508          "vuid": "VUID-vkCmdClearColorImage-commonparent",
12509          "text": " Both of <code>commandBuffer</code>, and <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
12510        }
12511      ],
12512      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
12513        {
12514          "vuid": "VUID-vkCmdClearColorImage-image-01545",
12515          "text": " <code>image</code> <strong class=\"purple\">must</strong> not use a format listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>"
12516        }
12517      ],
12518      "!(VK_KHR_shared_presentable_image)": [
12519        {
12520          "vuid": "VUID-vkCmdClearColorImage-imageLayout-00005",
12521          "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
12522        }
12523      ],
12524      "(VK_KHR_shared_presentable_image)": [
12525        {
12526          "vuid": "VUID-vkCmdClearColorImage-imageLayout-01394",
12527          "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_GENERAL</code>, or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>"
12528        }
12529      ],
12530      "(VK_VERSION_1_1)": [
12531        {
12532          "vuid": "VUID-vkCmdClearColorImage-commandBuffer-01805",
12533          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be a protected image"
12534        },
12535        {
12536          "vuid": "VUID-vkCmdClearColorImage-commandBuffer-01806",
12537          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be an unprotected image"
12538        }
12539      ]
12540    },
12541    "vkCmdClearDepthStencilImage": {
12542      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
12543        {
12544          "vuid": "VUID-vkCmdClearDepthStencilImage-image-01994",
12545          "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>image</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_DST_BIT</code>."
12546        }
12547      ],
12548      "core": [
12549        {
12550          "vuid": "VUID-vkCmdClearDepthStencilImage-image-00009",
12551          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
12552        },
12553        {
12554          "vuid": "VUID-vkCmdClearDepthStencilImage-image-00010",
12555          "text": " If <code>image</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
12556        },
12557        {
12558          "vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-00011",
12559          "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresource ranges of <code>image</code> specified in <code>pRanges</code> at the time this command is executed on a <code>VkDevice</code>"
12560        },
12561        {
12562          "vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-00012",
12563          "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be either of <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
12564        },
12565        {
12566          "vuid": "VUID-vkCmdClearDepthStencilImage-aspectMask-02499",
12567          "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>aspectMask</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each only include <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> if the image format has a depth component"
12568        },
12569        {
12570          "vuid": "VUID-vkCmdClearDepthStencilImage-aspectMask-02500",
12571          "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>aspectMask</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each only include <code>VK_IMAGE_ASPECT_STENCIL_BIT</code> if the image format has a stencil component"
12572        },
12573        {
12574          "vuid": "VUID-vkCmdClearDepthStencilImage-baseMipLevel-01474",
12575          "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>baseMipLevel</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
12576        },
12577        {
12578          "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-01694",
12579          "text": " For each <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> element of <code>pRanges</code>, if the <code>levelCount</code> member is not <code>VK_REMAINING_MIP_LEVELS</code>, then <span class=\"eq\"><code>baseMipLevel</code> &#43; <code>levelCount</code></span> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
12580        },
12581        {
12582          "vuid": "VUID-vkCmdClearDepthStencilImage-baseArrayLayer-01476",
12583          "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>baseArrayLayer</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
12584        },
12585        {
12586          "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-01695",
12587          "text": " For each <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> element of <code>pRanges</code>, if the <code>layerCount</code> member is not <code>VK_REMAINING_ARRAY_LAYERS</code>, then <span class=\"eq\"><code>baseArrayLayer</code> &#43; <code>layerCount</code></span> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
12588        },
12589        {
12590          "vuid": "VUID-vkCmdClearDepthStencilImage-image-00014",
12591          "text": " <code>image</code> <strong class=\"purple\">must</strong> have a depth/stencil format"
12592        },
12593        {
12594          "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-parameter",
12595          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
12596        },
12597        {
12598          "vuid": "VUID-vkCmdClearDepthStencilImage-image-parameter",
12599          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
12600        },
12601        {
12602          "vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-parameter",
12603          "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
12604        },
12605        {
12606          "vuid": "VUID-vkCmdClearDepthStencilImage-pDepthStencil-parameter",
12607          "text": " <code>pDepthStencil</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkClearDepthStencilValue</code> structure"
12608        },
12609        {
12610          "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-parameter",
12611          "text": " <code>pRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rangeCount</code> valid <code>VkImageSubresourceRange</code> structures"
12612        },
12613        {
12614          "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-recording",
12615          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
12616        },
12617        {
12618          "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-cmdpool",
12619          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
12620        },
12621        {
12622          "vuid": "VUID-vkCmdClearDepthStencilImage-renderpass",
12623          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
12624        },
12625        {
12626          "vuid": "VUID-vkCmdClearDepthStencilImage-rangeCount-arraylength",
12627          "text": " <code>rangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
12628        },
12629        {
12630          "vuid": "VUID-vkCmdClearDepthStencilImage-commonparent",
12631          "text": " Both of <code>commandBuffer</code>, and <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
12632        }
12633      ],
12634      "(VK_VERSION_1_1)": [
12635        {
12636          "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-01807",
12637          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be a protected image"
12638        },
12639        {
12640          "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-01808",
12641          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be an unprotected image"
12642        }
12643      ]
12644    },
12645    "vkCmdClearAttachments": {
12646      "core": [
12647        {
12648          "vuid": "VUID-vkCmdClearAttachments-aspectMask-02501",
12649          "text": " If the <code>aspectMask</code> member of any element of <code>pAttachments</code> contains <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, then the <code>colorAttachment</code> member of that element <strong class=\"purple\">must</strong> either refer to a color attachment which is <code>VK_ATTACHMENT_UNUSED</code>, or <strong class=\"purple\">must</strong> be a valid color attachment."
12650        },
12651        {
12652          "vuid": "VUID-vkCmdClearAttachments-aspectMask-02502",
12653          "text": " If the <code>aspectMask</code> member of any element of <code>pAttachments</code> contains <code>VK_IMAGE_ASPECT_DEPTH_BIT</code>, then the current subpass' depth/stencil attachment <strong class=\"purple\">must</strong> either be <code>VK_ATTACHMENT_UNUSED</code>, or <strong class=\"purple\">must</strong> have a depth component"
12654        },
12655        {
12656          "vuid": "VUID-vkCmdClearAttachments-aspectMask-02503",
12657          "text": " If the <code>aspectMask</code> member of any element of <code>pAttachments</code> contains <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>, then the current subpass' depth/stencil attachment <strong class=\"purple\">must</strong> either be <code>VK_ATTACHMENT_UNUSED</code>, or <strong class=\"purple\">must</strong> have a stencil component"
12658        },
12659        {
12660          "vuid": "VUID-vkCmdClearAttachments-pRects-00016",
12661          "text": " The rectangular region specified by each element of <code>pRects</code> <strong class=\"purple\">must</strong> be contained within the render area of the current render pass instance"
12662        },
12663        {
12664          "vuid": "VUID-vkCmdClearAttachments-pRects-00017",
12665          "text": " The layers specified by each element of <code>pRects</code> <strong class=\"purple\">must</strong> be contained within every attachment that <code>pAttachments</code> refers to"
12666        },
12667        {
12668          "vuid": "VUID-vkCmdClearAttachments-layerCount-01934",
12669          "text": " The <code>layerCount</code> member of each element of <code>pRects</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
12670        },
12671        {
12672          "vuid": "VUID-vkCmdClearAttachments-commandBuffer-parameter",
12673          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
12674        },
12675        {
12676          "vuid": "VUID-vkCmdClearAttachments-pAttachments-parameter",
12677          "text": " <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <code>VkClearAttachment</code> structures"
12678        },
12679        {
12680          "vuid": "VUID-vkCmdClearAttachments-pRects-parameter",
12681          "text": " <code>pRects</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rectCount</code> <code>VkClearRect</code> structures"
12682        },
12683        {
12684          "vuid": "VUID-vkCmdClearAttachments-commandBuffer-recording",
12685          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
12686        },
12687        {
12688          "vuid": "VUID-vkCmdClearAttachments-commandBuffer-cmdpool",
12689          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
12690        },
12691        {
12692          "vuid": "VUID-vkCmdClearAttachments-renderpass",
12693          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
12694        },
12695        {
12696          "vuid": "VUID-vkCmdClearAttachments-attachmentCount-arraylength",
12697          "text": " <code>attachmentCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
12698        },
12699        {
12700          "vuid": "VUID-vkCmdClearAttachments-rectCount-arraylength",
12701          "text": " <code>rectCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
12702        }
12703      ],
12704      "(VK_VERSION_1_1)": [
12705        {
12706          "vuid": "VUID-vkCmdClearAttachments-commandBuffer-02504",
12707          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then each attachment to be cleared <strong class=\"purple\">must</strong> not be a protected image."
12708        },
12709        {
12710          "vuid": "VUID-vkCmdClearAttachments-commandBuffer-02505",
12711          "text": " If <code>commandBuffer</code> is a protected command buffer, then each attachment to be cleared <strong class=\"purple\">must</strong> not be an unprotected image."
12712        }
12713      ],
12714      "(VK_VERSION_1_1,VK_KHR_multiview)": [
12715        {
12716          "vuid": "VUID-vkCmdClearAttachments-baseArrayLayer-00018",
12717          "text": " If the render pass instance this is recorded in uses multiview, then <code>baseArrayLayer</code> <strong class=\"purple\">must</strong> be zero and <code>layerCount</code> <strong class=\"purple\">must</strong> be one."
12718        }
12719      ]
12720    },
12721    "VkClearAttachment": {
12722      "core": [
12723        {
12724          "vuid": "VUID-VkClearAttachment-aspectMask-00019",
12725          "text": " If <code>aspectMask</code> includes <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, it <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>"
12726        },
12727        {
12728          "vuid": "VUID-VkClearAttachment-aspectMask-00020",
12729          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_METADATA_BIT</code>"
12730        },
12731        {
12732          "vuid": "VUID-VkClearAttachment-clearValue-00021",
12733          "text": " <code>clearValue</code> <strong class=\"purple\">must</strong> be a valid <code>VkClearValue</code> union"
12734        },
12735        {
12736          "vuid": "VUID-VkClearAttachment-aspectMask-parameter",
12737          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
12738        },
12739        {
12740          "vuid": "VUID-VkClearAttachment-aspectMask-requiredbitmask",
12741          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
12742        }
12743      ],
12744      "(VK_EXT_image_drm_format_modifier)": [
12745        {
12746          "vuid": "VUID-VkClearAttachment-aspectMask-02246",
12747          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_MEMORY_PLANE</code><em>_i</em>_BIT_EXT for any index <em>i</em>."
12748        }
12749      ]
12750    },
12751    "VkClearDepthStencilValue": {
12752      "(VK_EXT_depth_range_unrestricted)": [
12753        {
12754          "vuid": "VUID-VkClearDepthStencilValue-depth-00022",
12755          "text": " Unless the <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is enabled <code>depth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
12756        }
12757      ],
12758      "!(VK_EXT_depth_range_unrestricted)": [
12759        {
12760          "vuid": "VUID-VkClearDepthStencilValue-depth-02506",
12761          "text": " <code>depth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
12762        }
12763      ]
12764    },
12765    "vkCmdFillBuffer": {
12766      "core": [
12767        {
12768          "vuid": "VUID-vkCmdFillBuffer-dstOffset-00024",
12769          "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>"
12770        },
12771        {
12772          "vuid": "VUID-vkCmdFillBuffer-dstOffset-00025",
12773          "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
12774        },
12775        {
12776          "vuid": "VUID-vkCmdFillBuffer-size-00026",
12777          "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
12778        },
12779        {
12780          "vuid": "VUID-vkCmdFillBuffer-size-00027",
12781          "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>dstBuffer</code> minus <code>dstOffset</code>"
12782        },
12783        {
12784          "vuid": "VUID-vkCmdFillBuffer-size-00028",
12785          "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
12786        },
12787        {
12788          "vuid": "VUID-vkCmdFillBuffer-dstBuffer-00029",
12789          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
12790        },
12791        {
12792          "vuid": "VUID-vkCmdFillBuffer-dstBuffer-00031",
12793          "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
12794        },
12795        {
12796          "vuid": "VUID-vkCmdFillBuffer-commandBuffer-parameter",
12797          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
12798        },
12799        {
12800          "vuid": "VUID-vkCmdFillBuffer-dstBuffer-parameter",
12801          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
12802        },
12803        {
12804          "vuid": "VUID-vkCmdFillBuffer-commandBuffer-recording",
12805          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
12806        },
12807        {
12808          "vuid": "VUID-vkCmdFillBuffer-commandBuffer-cmdpool",
12809          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics or compute operations"
12810        },
12811        {
12812          "vuid": "VUID-vkCmdFillBuffer-renderpass",
12813          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
12814        },
12815        {
12816          "vuid": "VUID-vkCmdFillBuffer-commonparent",
12817          "text": " Both of <code>commandBuffer</code>, and <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
12818        }
12819      ],
12820      "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
12821        {
12822          "vuid": "VUID-vkCmdFillBuffer-commandBuffer-00030",
12823          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics or compute operations"
12824        }
12825      ],
12826      "(VK_VERSION_1_1)": [
12827        {
12828          "vuid": "VUID-vkCmdFillBuffer-commandBuffer-01811",
12829          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
12830        },
12831        {
12832          "vuid": "VUID-vkCmdFillBuffer-commandBuffer-01812",
12833          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer"
12834        }
12835      ]
12836    },
12837    "vkCmdUpdateBuffer": {
12838      "core": [
12839        {
12840          "vuid": "VUID-vkCmdUpdateBuffer-dstOffset-00032",
12841          "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>"
12842        },
12843        {
12844          "vuid": "VUID-vkCmdUpdateBuffer-dataSize-00033",
12845          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>dstBuffer</code> minus <code>dstOffset</code>"
12846        },
12847        {
12848          "vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-00034",
12849          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
12850        },
12851        {
12852          "vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-00035",
12853          "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
12854        },
12855        {
12856          "vuid": "VUID-vkCmdUpdateBuffer-dstOffset-00036",
12857          "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
12858        },
12859        {
12860          "vuid": "VUID-vkCmdUpdateBuffer-dataSize-00037",
12861          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be less than or equal to <code>65536</code>"
12862        },
12863        {
12864          "vuid": "VUID-vkCmdUpdateBuffer-dataSize-00038",
12865          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
12866        },
12867        {
12868          "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-parameter",
12869          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
12870        },
12871        {
12872          "vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-parameter",
12873          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
12874        },
12875        {
12876          "vuid": "VUID-vkCmdUpdateBuffer-pData-parameter",
12877          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
12878        },
12879        {
12880          "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-recording",
12881          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
12882        },
12883        {
12884          "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-cmdpool",
12885          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
12886        },
12887        {
12888          "vuid": "VUID-vkCmdUpdateBuffer-renderpass",
12889          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
12890        },
12891        {
12892          "vuid": "VUID-vkCmdUpdateBuffer-dataSize-arraylength",
12893          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
12894        },
12895        {
12896          "vuid": "VUID-vkCmdUpdateBuffer-commonparent",
12897          "text": " Both of <code>commandBuffer</code>, and <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
12898        }
12899      ],
12900      "(VK_VERSION_1_1)": [
12901        {
12902          "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-01813",
12903          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
12904        },
12905        {
12906          "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-01814",
12907          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer"
12908        }
12909      ]
12910    },
12911    "vkCmdCopyBuffer": {
12912      "core": [
12913        {
12914          "vuid": "VUID-vkCmdCopyBuffer-srcOffset-00113",
12915          "text": " The <code>srcOffset</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the size of <code>srcBuffer</code>"
12916        },
12917        {
12918          "vuid": "VUID-vkCmdCopyBuffer-dstOffset-00114",
12919          "text": " The <code>dstOffset</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>"
12920        },
12921        {
12922          "vuid": "VUID-vkCmdCopyBuffer-size-00115",
12923          "text": " The <code>size</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>srcBuffer</code> minus <code>srcOffset</code>"
12924        },
12925        {
12926          "vuid": "VUID-vkCmdCopyBuffer-size-00116",
12927          "text": " The <code>size</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>dstBuffer</code> minus <code>dstOffset</code>"
12928        },
12929        {
12930          "vuid": "VUID-vkCmdCopyBuffer-pRegions-00117",
12931          "text": " The union of the source regions, and the union of the destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory"
12932        },
12933        {
12934          "vuid": "VUID-vkCmdCopyBuffer-srcBuffer-00118",
12935          "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_SRC_BIT</code> usage flag"
12936        },
12937        {
12938          "vuid": "VUID-vkCmdCopyBuffer-srcBuffer-00119",
12939          "text": " If <code>srcBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
12940        },
12941        {
12942          "vuid": "VUID-vkCmdCopyBuffer-dstBuffer-00120",
12943          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
12944        },
12945        {
12946          "vuid": "VUID-vkCmdCopyBuffer-dstBuffer-00121",
12947          "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
12948        },
12949        {
12950          "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-parameter",
12951          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
12952        },
12953        {
12954          "vuid": "VUID-vkCmdCopyBuffer-srcBuffer-parameter",
12955          "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
12956        },
12957        {
12958          "vuid": "VUID-vkCmdCopyBuffer-dstBuffer-parameter",
12959          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
12960        },
12961        {
12962          "vuid": "VUID-vkCmdCopyBuffer-pRegions-parameter",
12963          "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkBufferCopy</code> structures"
12964        },
12965        {
12966          "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-recording",
12967          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
12968        },
12969        {
12970          "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-cmdpool",
12971          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
12972        },
12973        {
12974          "vuid": "VUID-vkCmdCopyBuffer-renderpass",
12975          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
12976        },
12977        {
12978          "vuid": "VUID-vkCmdCopyBuffer-regionCount-arraylength",
12979          "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
12980        },
12981        {
12982          "vuid": "VUID-vkCmdCopyBuffer-commonparent",
12983          "text": " Each of <code>commandBuffer</code>, <code>dstBuffer</code>, and <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
12984        }
12985      ],
12986      "(VK_VERSION_1_1)": [
12987        {
12988          "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01822",
12989          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
12990        },
12991        {
12992          "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01823",
12993          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
12994        },
12995        {
12996          "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01824",
12997          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer"
12998        }
12999      ]
13000    },
13001    "VkBufferCopy": {
13002      "core": [
13003        {
13004          "vuid": "VUID-VkBufferCopy-size-01988",
13005          "text": " The <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
13006        }
13007      ]
13008    },
13009    "vkCmdCopyImage": {
13010      "core": [
13011        {
13012          "vuid": "VUID-vkCmdCopyImage-pRegions-00122",
13013          "text": " The source region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>srcImage</code>"
13014        },
13015        {
13016          "vuid": "VUID-vkCmdCopyImage-pRegions-00123",
13017          "text": " The destination region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>dstImage</code>"
13018        },
13019        {
13020          "vuid": "VUID-vkCmdCopyImage-pRegions-00124",
13021          "text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory"
13022        },
13023        {
13024          "vuid": "VUID-vkCmdCopyImage-srcImage-00126",
13025          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag"
13026        },
13027        {
13028          "vuid": "VUID-vkCmdCopyImage-srcImageLayout-00128",
13029          "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>srcImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>"
13030        },
13031        {
13032          "vuid": "VUID-vkCmdCopyImage-dstImage-00131",
13033          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
13034        },
13035        {
13036          "vuid": "VUID-vkCmdCopyImage-dstImageLayout-00133",
13037          "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>dstImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>"
13038        },
13039        {
13040          "vuid": "VUID-vkCmdCopyImage-srcImage-00136",
13041          "text": " The sample count of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> match"
13042        },
13043        {
13044          "vuid": "VUID-vkCmdCopyImage-srcSubresource-01696",
13045          "text": " The <code>srcSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created"
13046        },
13047        {
13048          "vuid": "VUID-vkCmdCopyImage-dstSubresource-01697",
13049          "text": " The <code>dstSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created"
13050        },
13051        {
13052          "vuid": "VUID-vkCmdCopyImage-srcSubresource-01698",
13053          "text": " The <span class=\"eq\"><code>srcSubresource.baseArrayLayer</code> &#43; <code>srcSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created"
13054        },
13055        {
13056          "vuid": "VUID-vkCmdCopyImage-dstSubresource-01699",
13057          "text": " The <span class=\"eq\"><code>dstSubresource.baseArrayLayer</code> &#43; <code>dstSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created"
13058        },
13059        {
13060          "vuid": "VUID-vkCmdCopyImage-srcOffset-01783",
13061          "text": " The <code>srcOffset</code> and <code>extent</code> members of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>&#8217;s command pool&#8217;s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>"
13062        },
13063        {
13064          "vuid": "VUID-vkCmdCopyImage-dstOffset-01784",
13065          "text": " The <code>dstOffset</code> and <code>extent</code> members of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>&#8217;s command pool&#8217;s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>"
13066        },
13067        {
13068          "vuid": "VUID-vkCmdCopyImage-commandBuffer-parameter",
13069          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
13070        },
13071        {
13072          "vuid": "VUID-vkCmdCopyImage-srcImage-parameter",
13073          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
13074        },
13075        {
13076          "vuid": "VUID-vkCmdCopyImage-srcImageLayout-parameter",
13077          "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
13078        },
13079        {
13080          "vuid": "VUID-vkCmdCopyImage-dstImage-parameter",
13081          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
13082        },
13083        {
13084          "vuid": "VUID-vkCmdCopyImage-dstImageLayout-parameter",
13085          "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
13086        },
13087        {
13088          "vuid": "VUID-vkCmdCopyImage-pRegions-parameter",
13089          "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkImageCopy</code> structures"
13090        },
13091        {
13092          "vuid": "VUID-vkCmdCopyImage-commandBuffer-recording",
13093          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
13094        },
13095        {
13096          "vuid": "VUID-vkCmdCopyImage-commandBuffer-cmdpool",
13097          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
13098        },
13099        {
13100          "vuid": "VUID-vkCmdCopyImage-renderpass",
13101          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
13102        },
13103        {
13104          "vuid": "VUID-vkCmdCopyImage-regionCount-arraylength",
13105          "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
13106        },
13107        {
13108          "vuid": "VUID-vkCmdCopyImage-commonparent",
13109          "text": " Each of <code>commandBuffer</code>, <code>dstImage</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
13110        }
13111      ],
13112      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
13113        {
13114          "vuid": "VUID-vkCmdCopyImage-srcImage-01995",
13115          "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>srcImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_SRC_BIT</code>."
13116        },
13117        {
13118          "vuid": "VUID-vkCmdCopyImage-dstImage-01996",
13119          "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>dstImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_DST_BIT</code>."
13120        }
13121      ],
13122      "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
13123        {
13124          "vuid": "VUID-vkCmdCopyImage-srcImage-00127",
13125          "text": " If <code>srcImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
13126        },
13127        {
13128          "vuid": "VUID-vkCmdCopyImage-dstImage-00132",
13129          "text": " If <code>dstImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
13130        },
13131        {
13132          "vuid": "VUID-vkCmdCopyImage-srcImage-00135",
13133          "text": " The <a href=\"#VkFormat\">VkFormat</a> of each of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> be compatible, as defined <a href=\"#copies-images-format-compatibility\">above</a>"
13134        }
13135      ],
13136      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
13137        {
13138          "vuid": "VUID-vkCmdCopyImage-srcImage-01546",
13139          "text": " If <code>srcImage</code> is non-sparse then the image or <em>disjoint</em> plane to be copied <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
13140        },
13141        {
13142          "vuid": "VUID-vkCmdCopyImage-dstImage-01547",
13143          "text": " If <code>dstImage</code> is non-sparse then the image or <em>disjoint</em> plane that is the destination of the copy <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
13144        },
13145        {
13146          "vuid": "VUID-vkCmdCopyImage-srcImage-01548",
13147          "text": " If the <a href=\"#VkFormat\">VkFormat</a> of each of <code>srcImage</code> and <code>dstImage</code> is not a <a href=\"#formats-requiring-sampler-ycbcr-conversion\"><em>multi-planar format</em></a>, the <a href=\"#VkFormat\">VkFormat</a> of each of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> be compatible, as defined <a href=\"#copies-images-format-compatibility\">above</a>"
13148        },
13149        {
13150          "vuid": "VUID-vkCmdCopyImage-None-01549",
13151          "text": " In a copy to or from a plane of a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image</a>, the <a href=\"#VkFormat\">VkFormat</a> of the image and plane <strong class=\"purple\">must</strong> be compatible according to <a href=\"#formats-compatible-planes\">the description of compatible planes</a> for the plane being copied"
13152        },
13153        {
13154          "vuid": "VUID-vkCmdCopyImage-aspectMask-01550",
13155          "text": " When a copy is performed to or from an image with a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, the <code>aspectMask</code> of the <code>srcSubresource</code> and/or <code>dstSubresource</code> that refers to the multi-planar image <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> (with <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> valid only for a <a href=\"#VkFormat\">VkFormat</a> with three planes)"
13156        }
13157      ],
13158      "!(VK_KHR_shared_presentable_image)": [
13159        {
13160          "vuid": "VUID-vkCmdCopyImage-srcImageLayout-00129",
13161          "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
13162        },
13163        {
13164          "vuid": "VUID-vkCmdCopyImage-dstImageLayout-00134",
13165          "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
13166        }
13167      ],
13168      "(VK_KHR_shared_presentable_image)": [
13169        {
13170          "vuid": "VUID-vkCmdCopyImage-srcImageLayout-01917",
13171          "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_GENERAL</code>, or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>"
13172        },
13173        {
13174          "vuid": "VUID-vkCmdCopyImage-dstImageLayout-01395",
13175          "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_GENERAL</code>, or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>"
13176        }
13177      ],
13178      "(VK_VERSION_1_1)": [
13179        {
13180          "vuid": "VUID-vkCmdCopyImage-commandBuffer-01825",
13181          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image"
13182        },
13183        {
13184          "vuid": "VUID-vkCmdCopyImage-commandBuffer-01826",
13185          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image"
13186        },
13187        {
13188          "vuid": "VUID-vkCmdCopyImage-commandBuffer-01827",
13189          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image"
13190        }
13191      ],
13192      "(VK_EXT_fragment_density_map)": [
13193        {
13194          "vuid": "VUID-vkCmdCopyImage-dstImage-02542",
13195          "text": " <code>dstImage</code> and <code>srcImage</code> <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>"
13196        }
13197      ]
13198    },
13199    "VkImageCopy": {
13200      "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
13201        {
13202          "vuid": "VUID-VkImageCopy-aspectMask-00137",
13203          "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
13204        },
13205        {
13206          "vuid": "VUID-VkImageCopy-srcOffset-00157",
13207          "text": " If the calling command&#8217;s <code>srcImage</code> is a compressed image, all members of <code>srcOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
13208        },
13209        {
13210          "vuid": "VUID-VkImageCopy-extent-00158",
13211          "text": " If the calling command&#8217;s <code>srcImage</code> is a compressed image, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>extent.width</code> &#43; <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource width"
13212        },
13213        {
13214          "vuid": "VUID-VkImageCopy-extent-00159",
13215          "text": " If the calling command&#8217;s <code>srcImage</code> is a compressed image, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>extent.height</code> &#43; <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource height"
13216        },
13217        {
13218          "vuid": "VUID-VkImageCopy-extent-00160",
13219          "text": " If the calling command&#8217;s <code>srcImage</code> is a compressed image, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>extent.depth</code> &#43; <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource depth"
13220        },
13221        {
13222          "vuid": "VUID-VkImageCopy-dstOffset-00162",
13223          "text": " If the calling command&#8217;s <code>dstImage</code> is a compressed format image, all members of <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
13224        },
13225        {
13226          "vuid": "VUID-VkImageCopy-extent-00163",
13227          "text": " If the calling command&#8217;s <code>dstImage</code> is a compressed format image, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>extent.width</code> &#43; <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource width"
13228        },
13229        {
13230          "vuid": "VUID-VkImageCopy-extent-00164",
13231          "text": " If the calling command&#8217;s <code>dstImage</code> is a compressed format image, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>extent.height</code> &#43; <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource height"
13232        },
13233        {
13234          "vuid": "VUID-VkImageCopy-extent-00165",
13235          "text": " If the calling command&#8217;s <code>dstImage</code> is a compressed format image, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>extent.depth</code> &#43; <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource depth"
13236        }
13237      ],
13238      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
13239        {
13240          "vuid": "VUID-VkImageCopy-srcImage-01551",
13241          "text": " If neither the calling command&#8217;s <code>srcImage</code> nor the calling command&#8217;s <code>dstImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a> then the <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
13242        },
13243        {
13244          "vuid": "VUID-VkImageCopy-srcImage-01552",
13245          "text": " If the calling command&#8217;s <code>srcImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">two planes</a> then the <code>srcSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>"
13246        },
13247        {
13248          "vuid": "VUID-VkImageCopy-srcImage-01553",
13249          "text": " If the calling command&#8217;s <code>srcImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">three planes</a> then the <code>srcSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>"
13250        },
13251        {
13252          "vuid": "VUID-VkImageCopy-dstImage-01554",
13253          "text": " If the calling command&#8217;s <code>dstImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">two planes</a> then the <code>dstSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>"
13254        },
13255        {
13256          "vuid": "VUID-VkImageCopy-dstImage-01555",
13257          "text": " If the calling command&#8217;s <code>dstImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">three planes</a> then the <code>dstSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>"
13258        },
13259        {
13260          "vuid": "VUID-VkImageCopy-srcImage-01556",
13261          "text": " If the calling command&#8217;s <code>srcImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a> and the <code>dstImage</code> does not have a multi-planar image format, the <code>dstSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>"
13262        },
13263        {
13264          "vuid": "VUID-VkImageCopy-dstImage-01557",
13265          "text": " If the calling command&#8217;s <code>dstImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a> and the <code>srcImage</code> does not have a multi-planar image format, the <code>srcSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>"
13266        },
13267        {
13268          "vuid": "VUID-VkImageCopy-srcImage-01727",
13269          "text": " If the calling command&#8217;s <code>srcImage</code> is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, all members of <code>srcOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
13270        },
13271        {
13272          "vuid": "VUID-VkImageCopy-srcImage-01728",
13273          "text": " If the calling command&#8217;s <code>srcImage</code> is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>extent.width</code> &#43; <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource width"
13274        },
13275        {
13276          "vuid": "VUID-VkImageCopy-srcImage-01729",
13277          "text": " If the calling command&#8217;s <code>srcImage</code> is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>extent.height</code> &#43; <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource height"
13278        },
13279        {
13280          "vuid": "VUID-VkImageCopy-srcImage-01730",
13281          "text": " If the calling command&#8217;s <code>srcImage</code> is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>extent.depth</code> &#43; <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource depth"
13282        },
13283        {
13284          "vuid": "VUID-VkImageCopy-dstImage-01731",
13285          "text": " If the calling command&#8217;s <code>dstImage</code> is a compressed format image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, all members of <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
13286        },
13287        {
13288          "vuid": "VUID-VkImageCopy-dstImage-01732",
13289          "text": " If the calling command&#8217;s <code>dstImage</code> is a compressed format image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>extent.width</code> &#43; <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource width"
13290        },
13291        {
13292          "vuid": "VUID-VkImageCopy-dstImage-01733",
13293          "text": " If the calling command&#8217;s <code>dstImage</code> is a compressed format image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>extent.height</code> &#43; <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource height"
13294        },
13295        {
13296          "vuid": "VUID-VkImageCopy-dstImage-01734",
13297          "text": " If the calling command&#8217;s <code>dstImage</code> is a compressed format image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>extent.depth</code> &#43; <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource depth"
13298        }
13299      ],
13300      "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
13301        {
13302          "vuid": "VUID-VkImageCopy-layerCount-00138",
13303          "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
13304        },
13305        {
13306          "vuid": "VUID-VkImageCopy-srcImage-00139",
13307          "text": " If either of the calling command&#8217;s <code>srcImage</code> or <code>dstImage</code> parameters are of <a href=\"#VkImageType\">VkImageType</a> <code>VK_IMAGE_TYPE_3D</code>, the <code>baseArrayLayer</code> and <code>layerCount</code> members of both <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>1</code>, respectively"
13308        },
13309        {
13310          "vuid": "VUID-VkImageCopy-srcImage-01789",
13311          "text": " If the calling command&#8217;s <code>srcImage</code> or <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>."
13312        }
13313      ],
13314      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
13315        {
13316          "vuid": "VUID-VkImageCopy-extent-00140",
13317          "text": " The number of slices of the <code>extent</code> (for 3D) or layers of the <code>srcSubresource</code> (for non-3D) <strong class=\"purple\">must</strong> match the number of slices of the <code>extent</code> (for 3D) or layers of the <code>dstSubresource</code> (for non-3D)"
13318        },
13319        {
13320          "vuid": "VUID-VkImageCopy-srcImage-00141",
13321          "text": " If either of the calling command&#8217;s <code>srcImage</code> or <code>dstImage</code> parameters are of <a href=\"#VkImageType\">VkImageType</a> <code>VK_IMAGE_TYPE_3D</code>, the <code>baseArrayLayer</code> and <code>layerCount</code> members of the corresponding subresource <strong class=\"purple\">must</strong> be <code>0</code> and <code>1</code>, respectively"
13322        },
13323        {
13324          "vuid": "VUID-VkImageCopy-srcImage-01790",
13325          "text": " If both <code>srcImage</code> and <code>dstImage</code> are of type <code>VK_IMAGE_TYPE_2D</code> then <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>."
13326        },
13327        {
13328          "vuid": "VUID-VkImageCopy-srcImage-01791",
13329          "text": " If the calling command&#8217;s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, and the <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then <code>extent.depth</code> <strong class=\"purple\">must</strong> equal to the <code>layerCount</code> member of <code>srcSubresource</code>."
13330        },
13331        {
13332          "vuid": "VUID-VkImageCopy-dstImage-01792",
13333          "text": " If the calling command&#8217;s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, and the <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then <code>extent.depth</code> <strong class=\"purple\">must</strong> equal to the <code>layerCount</code> member of <code>dstSubresource</code>."
13334        }
13335      ],
13336      "core": [
13337        {
13338          "vuid": "VUID-VkImageCopy-aspectMask-00142",
13339          "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> <strong class=\"purple\">must</strong> specify aspects present in the calling command&#8217;s <code>srcImage</code>"
13340        },
13341        {
13342          "vuid": "VUID-VkImageCopy-aspectMask-00143",
13343          "text": " The <code>aspectMask</code> member of <code>dstSubresource</code> <strong class=\"purple\">must</strong> specify aspects present in the calling command&#8217;s <code>dstImage</code>"
13344        },
13345        {
13346          "vuid": "VUID-VkImageCopy-srcOffset-00144",
13347          "text": " <code>srcOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> &#43; <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource width"
13348        },
13349        {
13350          "vuid": "VUID-VkImageCopy-srcOffset-00145",
13351          "text": " <code>srcOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> &#43; <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource height"
13352        },
13353        {
13354          "vuid": "VUID-VkImageCopy-srcImage-00146",
13355          "text": " If the calling command&#8217;s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>srcOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>."
13356        },
13357        {
13358          "vuid": "VUID-VkImageCopy-srcOffset-00147",
13359          "text": " <code>srcOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> &#43; <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource depth"
13360        },
13361        {
13362          "vuid": "VUID-VkImageCopy-srcImage-01785",
13363          "text": " If the calling command&#8217;s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>."
13364        },
13365        {
13366          "vuid": "VUID-VkImageCopy-dstImage-01786",
13367          "text": " If the calling command&#8217;s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>."
13368        },
13369        {
13370          "vuid": "VUID-VkImageCopy-srcImage-01787",
13371          "text": " If the calling command&#8217;s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code>."
13372        },
13373        {
13374          "vuid": "VUID-VkImageCopy-dstImage-01788",
13375          "text": " If the calling command&#8217;s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code>."
13376        },
13377        {
13378          "vuid": "VUID-VkImageCopy-dstOffset-00150",
13379          "text": " <code>dstOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> &#43; <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource width"
13380        },
13381        {
13382          "vuid": "VUID-VkImageCopy-dstOffset-00151",
13383          "text": " <code>dstOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> &#43; <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource height"
13384        },
13385        {
13386          "vuid": "VUID-VkImageCopy-dstImage-00152",
13387          "text": " If the calling command&#8217;s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>dstOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>."
13388        },
13389        {
13390          "vuid": "VUID-VkImageCopy-dstOffset-00153",
13391          "text": " <code>dstOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> &#43; <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource depth"
13392        },
13393        {
13394          "vuid": "VUID-VkImageCopy-srcSubresource-parameter",
13395          "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure"
13396        },
13397        {
13398          "vuid": "VUID-VkImageCopy-dstSubresource-parameter",
13399          "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure"
13400        }
13401      ]
13402    },
13403    "VkImageSubresourceLayers": {
13404      "core": [
13405        {
13406          "vuid": "VUID-VkImageSubresourceLayers-aspectMask-00167",
13407          "text": " If <code>aspectMask</code> contains <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, it <strong class=\"purple\">must</strong> not contain either of <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>"
13408        },
13409        {
13410          "vuid": "VUID-VkImageSubresourceLayers-aspectMask-00168",
13411          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_ASPECT_METADATA_BIT</code>"
13412        },
13413        {
13414          "vuid": "VUID-VkImageSubresourceLayers-layerCount-01700",
13415          "text": " <code>layerCount</code> <strong class=\"purple\">must</strong> be greater than 0"
13416        },
13417        {
13418          "vuid": "VUID-VkImageSubresourceLayers-aspectMask-parameter",
13419          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
13420        },
13421        {
13422          "vuid": "VUID-VkImageSubresourceLayers-aspectMask-requiredbitmask",
13423          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
13424        }
13425      ],
13426      "(VK_EXT_image_drm_format_modifier)": [
13427        {
13428          "vuid": "VUID-VkImageSubresourceLayers-aspectMask-02247",
13429          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_MEMORY_PLANE</code><em>_i</em>_BIT_EXT for any index <em>i</em>."
13430        }
13431      ]
13432    },
13433    "vkCmdCopyBufferToImage": {
13434      "core": [
13435        {
13436          "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00171",
13437          "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be large enough to contain all buffer locations that are accessed according to <a href=\"#copies-buffers-images-addressing\">Buffer and Image Addressing</a>, for each element of <code>pRegions</code>"
13438        },
13439        {
13440          "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00172",
13441          "text": " The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>dstImage</code>"
13442        },
13443        {
13444          "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00173",
13445          "text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory"
13446        },
13447        {
13448          "vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-00174",
13449          "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_SRC_BIT</code> usage flag"
13450        },
13451        {
13452          "vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-00176",
13453          "text": " If <code>srcBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
13454        },
13455        {
13456          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00177",
13457          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
13458        },
13459        {
13460          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00178",
13461          "text": " If <code>dstImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
13462        },
13463        {
13464          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00179",
13465          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>"
13466        },
13467        {
13468          "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-00180",
13469          "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>dstImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>"
13470        },
13471        {
13472          "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-01701",
13473          "text": " The <code>imageSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created"
13474        },
13475        {
13476          "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-01702",
13477          "text": " The <span class=\"eq\"><code>imageSubresource.baseArrayLayer</code> &#43; <code>imageSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created"
13478        },
13479        {
13480          "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-01793",
13481          "text": " The <code>imageOffset</code> and <code>imageExtent</code> members of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>&#8217;s command pool&#8217;s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>"
13482        },
13483        {
13484          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-parameter",
13485          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
13486        },
13487        {
13488          "vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-parameter",
13489          "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
13490        },
13491        {
13492          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-parameter",
13493          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
13494        },
13495        {
13496          "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-parameter",
13497          "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
13498        },
13499        {
13500          "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-parameter",
13501          "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkBufferImageCopy</code> structures"
13502        },
13503        {
13504          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-recording",
13505          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
13506        },
13507        {
13508          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-cmdpool",
13509          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
13510        },
13511        {
13512          "vuid": "VUID-vkCmdCopyBufferToImage-renderpass",
13513          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
13514        },
13515        {
13516          "vuid": "VUID-vkCmdCopyBufferToImage-regionCount-arraylength",
13517          "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
13518        },
13519        {
13520          "vuid": "VUID-vkCmdCopyBufferToImage-commonparent",
13521          "text": " Each of <code>commandBuffer</code>, <code>dstImage</code>, and <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
13522        }
13523      ],
13524      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
13525        {
13526          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-01997",
13527          "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>dstImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_DST_BIT</code>."
13528        }
13529      ],
13530      "!(VK_KHR_shared_presentable_image)": [
13531        {
13532          "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-00181",
13533          "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
13534        }
13535      ],
13536      "(VK_KHR_shared_presentable_image)": [
13537        {
13538          "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-01396",
13539          "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_GENERAL</code>, or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>"
13540        }
13541      ],
13542      "(VK_VERSION_1_1)": [
13543        {
13544          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01828",
13545          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
13546        },
13547        {
13548          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01829",
13549          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image"
13550        },
13551        {
13552          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01830",
13553          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image"
13554        }
13555      ],
13556      "(VK_EXT_fragment_density_map)": [
13557        {
13558          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-02543",
13559          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>"
13560        }
13561      ]
13562    },
13563    "vkCmdCopyImageToBuffer": {
13564      "core": [
13565        {
13566          "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00182",
13567          "text": " The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>srcImage</code>"
13568        },
13569        {
13570          "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00183",
13571          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be large enough to contain all buffer locations that are accessed according to <a href=\"#copies-buffers-images-addressing\">Buffer and Image Addressing</a>, for each element of <code>pRegions</code>"
13572        },
13573        {
13574          "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00184",
13575          "text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory"
13576        },
13577        {
13578          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00186",
13579          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag"
13580        },
13581        {
13582          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00187",
13583          "text": " If <code>srcImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
13584        },
13585        {
13586          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00188",
13587          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>"
13588        },
13589        {
13590          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-00189",
13591          "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>srcImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>"
13592        },
13593        {
13594          "vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-00191",
13595          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
13596        },
13597        {
13598          "vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-00192",
13599          "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
13600        },
13601        {
13602          "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-01703",
13603          "text": " The <code>imageSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created"
13604        },
13605        {
13606          "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-01704",
13607          "text": " The <span class=\"eq\"><code>imageSubresource.baseArrayLayer</code> &#43; <code>imageSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created"
13608        },
13609        {
13610          "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-01794",
13611          "text": " The <code>imageOffset</code> and <code>imageExtent</code> members of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>&#8217;s command pool&#8217;s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>"
13612        },
13613        {
13614          "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-parameter",
13615          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
13616        },
13617        {
13618          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-parameter",
13619          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
13620        },
13621        {
13622          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-parameter",
13623          "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
13624        },
13625        {
13626          "vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-parameter",
13627          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
13628        },
13629        {
13630          "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-parameter",
13631          "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkBufferImageCopy</code> structures"
13632        },
13633        {
13634          "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-recording",
13635          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
13636        },
13637        {
13638          "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-cmdpool",
13639          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
13640        },
13641        {
13642          "vuid": "VUID-vkCmdCopyImageToBuffer-renderpass",
13643          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
13644        },
13645        {
13646          "vuid": "VUID-vkCmdCopyImageToBuffer-regionCount-arraylength",
13647          "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
13648        },
13649        {
13650          "vuid": "VUID-vkCmdCopyImageToBuffer-commonparent",
13651          "text": " Each of <code>commandBuffer</code>, <code>dstBuffer</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
13652        }
13653      ],
13654      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
13655        {
13656          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-01998",
13657          "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>srcImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_SRC_BIT</code>."
13658        }
13659      ],
13660      "!(VK_KHR_shared_presentable_image)": [
13661        {
13662          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-00190",
13663          "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
13664        }
13665      ],
13666      "(VK_KHR_shared_presentable_image)": [
13667        {
13668          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-01397",
13669          "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
13670        }
13671      ],
13672      "(VK_VERSION_1_1)": [
13673        {
13674          "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01831",
13675          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image"
13676        },
13677        {
13678          "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01832",
13679          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
13680        },
13681        {
13682          "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01833",
13683          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer"
13684        }
13685      ],
13686      "(VK_EXT_fragment_density_map)": [
13687        {
13688          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-02544",
13689          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>"
13690        }
13691      ]
13692    },
13693    "VkBufferImageCopy": {
13694      "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
13695        {
13696          "vuid": "VUID-VkBufferImageCopy-bufferOffset-00193",
13697          "text": " If the calling command&#8217;s <code>VkImage</code> parameter&#8217;s format is not a depth/stencil format, then <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format&#8217;s texel block size."
13698        },
13699        {
13700          "vuid": "VUID-VkBufferImageCopy-bufferRowLength-00203",
13701          "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width"
13702        },
13703        {
13704          "vuid": "VUID-VkBufferImageCopy-bufferImageHeight-00204",
13705          "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height"
13706        },
13707        {
13708          "vuid": "VUID-VkBufferImageCopy-imageOffset-00205",
13709          "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, all members of <code>imageOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
13710        },
13711        {
13712          "vuid": "VUID-VkBufferImageCopy-bufferOffset-00206",
13713          "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block size in bytes"
13714        },
13715        {
13716          "vuid": "VUID-VkBufferImageCopy-imageExtent-00207",
13717          "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, <code>imageExtent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>imageExtent.width</code> &#43; <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource width"
13718        },
13719        {
13720          "vuid": "VUID-VkBufferImageCopy-imageExtent-00208",
13721          "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>imageExtent.height</code> &#43; <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource height"
13722        },
13723        {
13724          "vuid": "VUID-VkBufferImageCopy-imageExtent-00209",
13725          "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>imageExtent.depth</code> &#43; <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource depth"
13726        }
13727      ],
13728      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
13729        {
13730          "vuid": "VUID-VkBufferImageCopy-bufferOffset-01558",
13731          "text": " If the calling command&#8217;s <code>VkImage</code> parameter&#8217;s format is not a depth/stencil format or a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format&#8217;s texel block size."
13732        },
13733        {
13734          "vuid": "VUID-VkBufferImageCopy-bufferOffset-01559",
13735          "text": " If the calling command&#8217;s <code>VkImage</code> parameter&#8217;s format is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of the compatible format for the format and the <code>aspectMask</code> of the <code>imageSubresource</code> as defined in <a href=\"#formats-compatible-planes\">Compatible formats of planes of multi-planar formats</a>"
13736        },
13737        {
13738          "vuid": "VUID-VkBufferImageCopy-None-01735",
13739          "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width"
13740        },
13741        {
13742          "vuid": "VUID-VkBufferImageCopy-None-01736",
13743          "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height"
13744        },
13745        {
13746          "vuid": "VUID-VkBufferImageCopy-None-01737",
13747          "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, all members of <code>imageOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
13748        },
13749        {
13750          "vuid": "VUID-VkBufferImageCopy-None-01738",
13751          "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block size in bytes"
13752        },
13753        {
13754          "vuid": "VUID-VkBufferImageCopy-None-01739",
13755          "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>imageExtent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>imageExtent.width</code> &#43; <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource width"
13756        },
13757        {
13758          "vuid": "VUID-VkBufferImageCopy-None-01740",
13759          "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>imageExtent.height</code> &#43; <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource height"
13760        },
13761        {
13762          "vuid": "VUID-VkBufferImageCopy-None-01741",
13763          "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>imageExtent.depth</code> &#43; <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource depth"
13764        },
13765        {
13766          "vuid": "VUID-VkBufferImageCopy-aspectMask-01560",
13767          "text": " If the calling command&#8217;s <code>VkImage</code> parameter&#8217;s format is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then the <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> (with <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> valid only for image formats with three planes)"
13768        }
13769      ],
13770      "core": [
13771        {
13772          "vuid": "VUID-VkBufferImageCopy-bufferOffset-00194",
13773          "text": " <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
13774        },
13775        {
13776          "vuid": "VUID-VkBufferImageCopy-bufferRowLength-00195",
13777          "text": " <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be <code>0</code>, or greater than or equal to the <code>width</code> member of <code>imageExtent</code>"
13778        },
13779        {
13780          "vuid": "VUID-VkBufferImageCopy-bufferImageHeight-00196",
13781          "text": " <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be <code>0</code>, or greater than or equal to the <code>height</code> member of <code>imageExtent</code>"
13782        },
13783        {
13784          "vuid": "VUID-VkBufferImageCopy-imageOffset-00197",
13785          "text": " <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> &#43; <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the image subresource width"
13786        },
13787        {
13788          "vuid": "VUID-VkBufferImageCopy-imageOffset-00198",
13789          "text": " <code>imageOffset.y</code> and <span class=\"eq\">(imageExtent.height &#43; <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the image subresource height"
13790        },
13791        {
13792          "vuid": "VUID-VkBufferImageCopy-srcImage-00199",
13793          "text": " If the calling command&#8217;s <code>srcImage</code> (<a href=\"#vkCmdCopyImageToBuffer\">vkCmdCopyImageToBuffer</a>) or <code>dstImage</code> (<a href=\"#vkCmdCopyBufferToImage\">vkCmdCopyBufferToImage</a>) is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>."
13794        },
13795        {
13796          "vuid": "VUID-VkBufferImageCopy-imageOffset-00200",
13797          "text": " <code>imageOffset.z</code> and <span class=\"eq\">(imageExtent.depth &#43; <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the image subresource depth"
13798        },
13799        {
13800          "vuid": "VUID-VkBufferImageCopy-srcImage-00201",
13801          "text": " If the calling command&#8217;s <code>srcImage</code> (<a href=\"#vkCmdCopyImageToBuffer\">vkCmdCopyImageToBuffer</a>) or <code>dstImage</code> (<a href=\"#vkCmdCopyBufferToImage\">vkCmdCopyBufferToImage</a>) is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>"
13802        },
13803        {
13804          "vuid": "VUID-VkBufferImageCopy-aspectMask-00211",
13805          "text": " The <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> specify aspects present in the calling command&#8217;s <code>VkImage</code> parameter"
13806        },
13807        {
13808          "vuid": "VUID-VkBufferImageCopy-aspectMask-00212",
13809          "text": " The <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> only have a single bit set"
13810        },
13811        {
13812          "vuid": "VUID-VkBufferImageCopy-baseArrayLayer-00213",
13813          "text": " If the calling command&#8217;s <code>VkImage</code> parameter is of <a href=\"#VkImageType\">VkImageType</a> <code>VK_IMAGE_TYPE_3D</code>, the <code>baseArrayLayer</code> and <code>layerCount</code> members of <code>imageSubresource</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>1</code>, respectively"
13814        },
13815        {
13816          "vuid": "VUID-VkBufferImageCopy-imageSubresource-parameter",
13817          "text": " <code>imageSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure"
13818        }
13819      ],
13820      "!(VK_EXT_depth_range_unrestricted)": [
13821        {
13822          "vuid": "VUID-VkBufferImageCopy-None-00214",
13823          "text": " When copying to the depth aspect of an image subresource, the data in the source buffer <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[0,1]</span>"
13824        }
13825      ]
13826    },
13827    "vkCmdBlitImage": {
13828      "core": [
13829        {
13830          "vuid": "VUID-vkCmdBlitImage-pRegions-00215",
13831          "text": " The source region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>srcImage</code>"
13832        },
13833        {
13834          "vuid": "VUID-vkCmdBlitImage-pRegions-00216",
13835          "text": " The destination region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>dstImage</code>"
13836        },
13837        {
13838          "vuid": "VUID-vkCmdBlitImage-pRegions-00217",
13839          "text": " The union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory with any texel that <strong class=\"purple\">may</strong> be sampled during the blit operation"
13840        },
13841        {
13842          "vuid": "VUID-vkCmdBlitImage-srcImage-01999",
13843          "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>srcImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_BLIT_SRC_BIT</code>."
13844        },
13845        {
13846          "vuid": "VUID-vkCmdBlitImage-srcImage-00219",
13847          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag"
13848        },
13849        {
13850          "vuid": "VUID-vkCmdBlitImage-srcImage-00220",
13851          "text": " If <code>srcImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
13852        },
13853        {
13854          "vuid": "VUID-vkCmdBlitImage-srcImageLayout-00221",
13855          "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>srcImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>"
13856        },
13857        {
13858          "vuid": "VUID-vkCmdBlitImage-dstImage-02000",
13859          "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>dstImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_BLIT_DST_BIT</code>."
13860        },
13861        {
13862          "vuid": "VUID-vkCmdBlitImage-dstImage-00224",
13863          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
13864        },
13865        {
13866          "vuid": "VUID-vkCmdBlitImage-dstImage-00225",
13867          "text": " If <code>dstImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
13868        },
13869        {
13870          "vuid": "VUID-vkCmdBlitImage-dstImageLayout-00226",
13871          "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>dstImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>"
13872        },
13873        {
13874          "vuid": "VUID-vkCmdBlitImage-srcImage-00228",
13875          "text": " The sample count of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> both be equal to <code>VK_SAMPLE_COUNT_1_BIT</code>"
13876        },
13877        {
13878          "vuid": "VUID-vkCmdBlitImage-srcImage-00229",
13879          "text": " If either of <code>srcImage</code> or <code>dstImage</code> was created with a signed integer <a href=\"#VkFormat\">VkFormat</a>, the other <strong class=\"purple\">must</strong> also have been created with a signed integer <a href=\"#VkFormat\">VkFormat</a>"
13880        },
13881        {
13882          "vuid": "VUID-vkCmdBlitImage-srcImage-00230",
13883          "text": " If either of <code>srcImage</code> or <code>dstImage</code> was created with an unsigned integer <a href=\"#VkFormat\">VkFormat</a>, the other <strong class=\"purple\">must</strong> also have been created with an unsigned integer <a href=\"#VkFormat\">VkFormat</a>"
13884        },
13885        {
13886          "vuid": "VUID-vkCmdBlitImage-srcImage-00231",
13887          "text": " If either of <code>srcImage</code> or <code>dstImage</code> was created with a depth/stencil format, the other <strong class=\"purple\">must</strong> have exactly the same format"
13888        },
13889        {
13890          "vuid": "VUID-vkCmdBlitImage-srcImage-00232",
13891          "text": " If <code>srcImage</code> was created with a depth/stencil format, <code>filter</code> <strong class=\"purple\">must</strong> be <code>VK_FILTER_NEAREST</code>"
13892        },
13893        {
13894          "vuid": "VUID-vkCmdBlitImage-srcImage-00233",
13895          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with a <code>samples</code> value of <code>VK_SAMPLE_COUNT_1_BIT</code>"
13896        },
13897        {
13898          "vuid": "VUID-vkCmdBlitImage-dstImage-00234",
13899          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with a <code>samples</code> value of <code>VK_SAMPLE_COUNT_1_BIT</code>"
13900        },
13901        {
13902          "vuid": "VUID-vkCmdBlitImage-filter-02001",
13903          "text": " If <code>filter</code> is <code>VK_FILTER_LINEAR</code>, then the <a href=\"#resources-image-format-features\">format features</a> of <code>srcImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>."
13904        },
13905        {
13906          "vuid": "VUID-vkCmdBlitImage-srcSubresource-01705",
13907          "text": " The <code>srcSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created"
13908        },
13909        {
13910          "vuid": "VUID-vkCmdBlitImage-dstSubresource-01706",
13911          "text": " The <code>dstSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created"
13912        },
13913        {
13914          "vuid": "VUID-vkCmdBlitImage-srcSubresource-01707",
13915          "text": " The <span class=\"eq\"><code>srcSubresource.baseArrayLayer</code> &#43; <code>srcSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created"
13916        },
13917        {
13918          "vuid": "VUID-vkCmdBlitImage-dstSubresource-01708",
13919          "text": " The <span class=\"eq\"><code>dstSubresource.baseArrayLayer</code> &#43; <code>dstSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created"
13920        },
13921        {
13922          "vuid": "VUID-vkCmdBlitImage-commandBuffer-parameter",
13923          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
13924        },
13925        {
13926          "vuid": "VUID-vkCmdBlitImage-srcImage-parameter",
13927          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
13928        },
13929        {
13930          "vuid": "VUID-vkCmdBlitImage-srcImageLayout-parameter",
13931          "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
13932        },
13933        {
13934          "vuid": "VUID-vkCmdBlitImage-dstImage-parameter",
13935          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
13936        },
13937        {
13938          "vuid": "VUID-vkCmdBlitImage-dstImageLayout-parameter",
13939          "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
13940        },
13941        {
13942          "vuid": "VUID-vkCmdBlitImage-pRegions-parameter",
13943          "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkImageBlit</code> structures"
13944        },
13945        {
13946          "vuid": "VUID-vkCmdBlitImage-filter-parameter",
13947          "text": " <code>filter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value"
13948        },
13949        {
13950          "vuid": "VUID-vkCmdBlitImage-commandBuffer-recording",
13951          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
13952        },
13953        {
13954          "vuid": "VUID-vkCmdBlitImage-commandBuffer-cmdpool",
13955          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
13956        },
13957        {
13958          "vuid": "VUID-vkCmdBlitImage-renderpass",
13959          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
13960        },
13961        {
13962          "vuid": "VUID-vkCmdBlitImage-regionCount-arraylength",
13963          "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
13964        },
13965        {
13966          "vuid": "VUID-vkCmdBlitImage-commonparent",
13967          "text": " Each of <code>commandBuffer</code>, <code>dstImage</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
13968        }
13969      ],
13970      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
13971        {
13972          "vuid": "VUID-vkCmdBlitImage-srcImage-01561",
13973          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> not use a format listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>"
13974        },
13975        {
13976          "vuid": "VUID-vkCmdBlitImage-dstImage-01562",
13977          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> not use a format listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>"
13978        }
13979      ],
13980      "!(VK_KHR_shared_presentable_image)": [
13981        {
13982          "vuid": "VUID-vkCmdBlitImage-srcImageLayout-00222",
13983          "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
13984        },
13985        {
13986          "vuid": "VUID-vkCmdBlitImage-dstImageLayout-00227",
13987          "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
13988        }
13989      ],
13990      "(VK_KHR_shared_presentable_image)": [
13991        {
13992          "vuid": "VUID-vkCmdBlitImage-srcImageLayout-01398",
13993          "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
13994        },
13995        {
13996          "vuid": "VUID-vkCmdBlitImage-dstImageLayout-01399",
13997          "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
13998        }
13999      ],
14000      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
14001        {
14002          "vuid": "VUID-vkCmdBlitImage-filter-02002",
14003          "text": " If <code>filter</code> is <code>VK_FILTER_CUBIC_EXT</code>, then the <a href=\"#resources-image-format-features\">format features</a> of <code>srcImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>."
14004        },
14005        {
14006          "vuid": "VUID-vkCmdBlitImage-filter-00237",
14007          "text": " If <code>filter</code> is <code>VK_FILTER_CUBIC_EXT</code>, <code>srcImage</code> <strong class=\"purple\">must</strong> have a <a href=\"#VkImageType\">VkImageType</a> of <code>VK_IMAGE_TYPE_2D</code>"
14008        }
14009      ],
14010      "(VK_VERSION_1_1)": [
14011        {
14012          "vuid": "VUID-vkCmdBlitImage-commandBuffer-01834",
14013          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image"
14014        },
14015        {
14016          "vuid": "VUID-vkCmdBlitImage-commandBuffer-01835",
14017          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image"
14018        },
14019        {
14020          "vuid": "VUID-vkCmdBlitImage-commandBuffer-01836",
14021          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image"
14022        }
14023      ],
14024      "(VK_EXT_fragment_density_map)": [
14025        {
14026          "vuid": "VUID-vkCmdBlitImage-dstImage-02545",
14027          "text": " <code>dstImage</code> and <code>srcImage</code> <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>"
14028        }
14029      ]
14030    },
14031    "VkImageBlit": {
14032      "core": [
14033        {
14034          "vuid": "VUID-VkImageBlit-aspectMask-00238",
14035          "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
14036        },
14037        {
14038          "vuid": "VUID-VkImageBlit-layerCount-00239",
14039          "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
14040        },
14041        {
14042          "vuid": "VUID-VkImageBlit-srcImage-00240",
14043          "text": " If either of the calling command&#8217;s <code>srcImage</code> or <code>dstImage</code> parameters are of <a href=\"#VkImageType\">VkImageType</a> <code>VK_IMAGE_TYPE_3D</code>, the <code>baseArrayLayer</code> and <code>layerCount</code> members of both <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>1</code>, respectively"
14044        },
14045        {
14046          "vuid": "VUID-VkImageBlit-aspectMask-00241",
14047          "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> <strong class=\"purple\">must</strong> specify aspects present in the calling command&#8217;s <code>srcImage</code>"
14048        },
14049        {
14050          "vuid": "VUID-VkImageBlit-aspectMask-00242",
14051          "text": " The <code>aspectMask</code> member of <code>dstSubresource</code> <strong class=\"purple\">must</strong> specify aspects present in the calling command&#8217;s <code>dstImage</code>"
14052        },
14053        {
14054          "vuid": "VUID-VkImageBlit-srcOffset-00243",
14055          "text": " <code>srcOffset</code>[0].<code>x</code> and <code>srcOffset</code>[1].<code>x</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource width"
14056        },
14057        {
14058          "vuid": "VUID-VkImageBlit-srcOffset-00244",
14059          "text": " <code>srcOffset</code>[0].<code>y</code> and <code>srcOffset</code>[1].<code>y</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource height"
14060        },
14061        {
14062          "vuid": "VUID-VkImageBlit-srcImage-00245",
14063          "text": " If the calling command&#8217;s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>srcOffset</code>[0].y <strong class=\"purple\">must</strong> be <code>0</code> and <code>srcOffset</code>[1].y <strong class=\"purple\">must</strong> be <code>1</code>."
14064        },
14065        {
14066          "vuid": "VUID-VkImageBlit-srcOffset-00246",
14067          "text": " <code>srcOffset</code>[0].<code>z</code> and <code>srcOffset</code>[1].<code>z</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource depth"
14068        },
14069        {
14070          "vuid": "VUID-VkImageBlit-srcImage-00247",
14071          "text": " If the calling command&#8217;s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then <code>srcOffset</code>[0].z <strong class=\"purple\">must</strong> be <code>0</code> and <code>srcOffset</code>[1].z <strong class=\"purple\">must</strong> be <code>1</code>."
14072        },
14073        {
14074          "vuid": "VUID-VkImageBlit-dstOffset-00248",
14075          "text": " <code>dstOffset</code>[0].<code>x</code> and <code>dstOffset</code>[1].<code>x</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource width"
14076        },
14077        {
14078          "vuid": "VUID-VkImageBlit-dstOffset-00249",
14079          "text": " <code>dstOffset</code>[0].<code>y</code> and <code>dstOffset</code>[1].<code>y</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource height"
14080        },
14081        {
14082          "vuid": "VUID-VkImageBlit-dstImage-00250",
14083          "text": " If the calling command&#8217;s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>dstOffset</code>[0].y <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstOffset</code>[1].y <strong class=\"purple\">must</strong> be <code>1</code>."
14084        },
14085        {
14086          "vuid": "VUID-VkImageBlit-dstOffset-00251",
14087          "text": " <code>dstOffset</code>[0].<code>z</code> and <code>dstOffset</code>[1].<code>z</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource depth"
14088        },
14089        {
14090          "vuid": "VUID-VkImageBlit-dstImage-00252",
14091          "text": " If the calling command&#8217;s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then <code>dstOffset</code>[0].z <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstOffset</code>[1].z <strong class=\"purple\">must</strong> be <code>1</code>."
14092        },
14093        {
14094          "vuid": "VUID-VkImageBlit-srcSubresource-parameter",
14095          "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure"
14096        },
14097        {
14098          "vuid": "VUID-VkImageBlit-dstSubresource-parameter",
14099          "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure"
14100        }
14101      ]
14102    },
14103    "vkCmdResolveImage": {
14104      "core": [
14105        {
14106          "vuid": "VUID-vkCmdResolveImage-pRegions-00253",
14107          "text": " The source region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>srcImage</code>"
14108        },
14109        {
14110          "vuid": "VUID-vkCmdResolveImage-pRegions-00254",
14111          "text": " The destination region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>dstImage</code>"
14112        },
14113        {
14114          "vuid": "VUID-vkCmdResolveImage-pRegions-00255",
14115          "text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory"
14116        },
14117        {
14118          "vuid": "VUID-vkCmdResolveImage-srcImage-00256",
14119          "text": " If <code>srcImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
14120        },
14121        {
14122          "vuid": "VUID-vkCmdResolveImage-srcImage-00257",
14123          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have a sample count equal to any valid sample count value other than <code>VK_SAMPLE_COUNT_1_BIT</code>"
14124        },
14125        {
14126          "vuid": "VUID-vkCmdResolveImage-dstImage-00258",
14127          "text": " If <code>dstImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
14128        },
14129        {
14130          "vuid": "VUID-vkCmdResolveImage-dstImage-00259",
14131          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>"
14132        },
14133        {
14134          "vuid": "VUID-vkCmdResolveImage-srcImageLayout-00260",
14135          "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>srcImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>"
14136        },
14137        {
14138          "vuid": "VUID-vkCmdResolveImage-dstImageLayout-00262",
14139          "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>dstImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>"
14140        },
14141        {
14142          "vuid": "VUID-vkCmdResolveImage-dstImage-02003",
14143          "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>dstImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>."
14144        },
14145        {
14146          "vuid": "VUID-vkCmdResolveImage-srcImage-01386",
14147          "text": " <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with the same image format"
14148        },
14149        {
14150          "vuid": "VUID-vkCmdResolveImage-srcSubresource-01709",
14151          "text": " The <code>srcSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created"
14152        },
14153        {
14154          "vuid": "VUID-vkCmdResolveImage-dstSubresource-01710",
14155          "text": " The <code>dstSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created"
14156        },
14157        {
14158          "vuid": "VUID-vkCmdResolveImage-srcSubresource-01711",
14159          "text": " The <span class=\"eq\"><code>srcSubresource.baseArrayLayer</code> &#43; <code>srcSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created"
14160        },
14161        {
14162          "vuid": "VUID-vkCmdResolveImage-dstSubresource-01712",
14163          "text": " The <span class=\"eq\"><code>dstSubresource.baseArrayLayer</code> &#43; <code>dstSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created"
14164        },
14165        {
14166          "vuid": "VUID-vkCmdResolveImage-commandBuffer-parameter",
14167          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
14168        },
14169        {
14170          "vuid": "VUID-vkCmdResolveImage-srcImage-parameter",
14171          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
14172        },
14173        {
14174          "vuid": "VUID-vkCmdResolveImage-srcImageLayout-parameter",
14175          "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
14176        },
14177        {
14178          "vuid": "VUID-vkCmdResolveImage-dstImage-parameter",
14179          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
14180        },
14181        {
14182          "vuid": "VUID-vkCmdResolveImage-dstImageLayout-parameter",
14183          "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
14184        },
14185        {
14186          "vuid": "VUID-vkCmdResolveImage-pRegions-parameter",
14187          "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkImageResolve</code> structures"
14188        },
14189        {
14190          "vuid": "VUID-vkCmdResolveImage-commandBuffer-recording",
14191          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
14192        },
14193        {
14194          "vuid": "VUID-vkCmdResolveImage-commandBuffer-cmdpool",
14195          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
14196        },
14197        {
14198          "vuid": "VUID-vkCmdResolveImage-renderpass",
14199          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
14200        },
14201        {
14202          "vuid": "VUID-vkCmdResolveImage-regionCount-arraylength",
14203          "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
14204        },
14205        {
14206          "vuid": "VUID-vkCmdResolveImage-commonparent",
14207          "text": " Each of <code>commandBuffer</code>, <code>dstImage</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
14208        }
14209      ],
14210      "!(VK_KHR_shared_presentable_image)": [
14211        {
14212          "vuid": "VUID-vkCmdResolveImage-srcImageLayout-00261",
14213          "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
14214        },
14215        {
14216          "vuid": "VUID-vkCmdResolveImage-dstImageLayout-00263",
14217          "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
14218        }
14219      ],
14220      "(VK_KHR_shared_presentable_image)": [
14221        {
14222          "vuid": "VUID-vkCmdResolveImage-srcImageLayout-01400",
14223          "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
14224        },
14225        {
14226          "vuid": "VUID-vkCmdResolveImage-dstImageLayout-01401",
14227          "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
14228        }
14229      ],
14230      "(VK_VERSION_1_1)": [
14231        {
14232          "vuid": "VUID-vkCmdResolveImage-commandBuffer-01837",
14233          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image"
14234        },
14235        {
14236          "vuid": "VUID-vkCmdResolveImage-commandBuffer-01838",
14237          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image"
14238        },
14239        {
14240          "vuid": "VUID-vkCmdResolveImage-commandBuffer-01839",
14241          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image"
14242        }
14243      ],
14244      "(VK_EXT_fragment_density_map)": [
14245        {
14246          "vuid": "VUID-vkCmdResolveImage-dstImage-02546",
14247          "text": " <code>dstImage</code> and <code>srcImage</code> <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>"
14248        }
14249      ]
14250    },
14251    "VkImageResolve": {
14252      "core": [
14253        {
14254          "vuid": "VUID-VkImageResolve-aspectMask-00266",
14255          "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> only contain <code>VK_IMAGE_ASPECT_COLOR_BIT</code>"
14256        },
14257        {
14258          "vuid": "VUID-VkImageResolve-layerCount-00267",
14259          "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
14260        },
14261        {
14262          "vuid": "VUID-VkImageResolve-srcImage-00268",
14263          "text": " If either of the calling command&#8217;s <code>srcImage</code> or <code>dstImage</code> parameters are of <a href=\"#VkImageType\">VkImageType</a> <code>VK_IMAGE_TYPE_3D</code>, the <code>baseArrayLayer</code> and <code>layerCount</code> members of both <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>1</code>, respectively"
14264        },
14265        {
14266          "vuid": "VUID-VkImageResolve-srcOffset-00269",
14267          "text": " <code>srcOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> &#43; <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource width"
14268        },
14269        {
14270          "vuid": "VUID-VkImageResolve-srcOffset-00270",
14271          "text": " <code>srcOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> &#43; <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource height"
14272        },
14273        {
14274          "vuid": "VUID-VkImageResolve-srcImage-00271",
14275          "text": " If the calling command&#8217;s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>srcOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>."
14276        },
14277        {
14278          "vuid": "VUID-VkImageResolve-srcOffset-00272",
14279          "text": " <code>srcOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> &#43; <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource depth"
14280        },
14281        {
14282          "vuid": "VUID-VkImageResolve-srcImage-00273",
14283          "text": " If the calling command&#8217;s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>."
14284        },
14285        {
14286          "vuid": "VUID-VkImageResolve-dstOffset-00274",
14287          "text": " <code>dstOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> &#43; <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource width"
14288        },
14289        {
14290          "vuid": "VUID-VkImageResolve-dstOffset-00275",
14291          "text": " <code>dstOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> &#43; <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource height"
14292        },
14293        {
14294          "vuid": "VUID-VkImageResolve-dstImage-00276",
14295          "text": " If the calling command&#8217;s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>dstOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>."
14296        },
14297        {
14298          "vuid": "VUID-VkImageResolve-dstOffset-00277",
14299          "text": " <code>dstOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> &#43; <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource depth"
14300        },
14301        {
14302          "vuid": "VUID-VkImageResolve-dstImage-00278",
14303          "text": " If the calling command&#8217;s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>."
14304        },
14305        {
14306          "vuid": "VUID-VkImageResolve-srcSubresource-parameter",
14307          "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure"
14308        },
14309        {
14310          "vuid": "VUID-VkImageResolve-dstSubresource-parameter",
14311          "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure"
14312        }
14313      ]
14314    },
14315    "vkCmdWriteBufferMarkerAMD": {
14316      "(VK_AMD_buffer_marker)": [
14317        {
14318          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01798",
14319          "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>dstBuffer</code> minus <code>4</code>."
14320        },
14321        {
14322          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-01799",
14323          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
14324        },
14325        {
14326          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-01800",
14327          "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
14328        },
14329        {
14330          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01801",
14331          "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
14332        },
14333        {
14334          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-parameter",
14335          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
14336        },
14337        {
14338          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-parameter",
14339          "text": " <code>pipelineStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> value"
14340        },
14341        {
14342          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-parameter",
14343          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
14344        },
14345        {
14346          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-recording",
14347          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
14348        },
14349        {
14350          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-cmdpool",
14351          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
14352        },
14353        {
14354          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commonparent",
14355          "text": " Both of <code>commandBuffer</code>, and <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
14356        }
14357      ]
14358    },
14359    "VkPipelineInputAssemblyStateCreateInfo": {
14360      "core": [
14361        {
14362          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00428",
14363          "text": " If <code>topology</code> is <code>VK_PRIMITIVE_TOPOLOGY_POINT_LIST</code>, <code>VK_PRIMITIVE_TOPOLOGY_LINE_LIST</code>, <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST</code>, <code>VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY</code>, <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY</code> or <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, <code>primitiveRestartEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
14364        },
14365        {
14366          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00429",
14367          "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>topology</code> <strong class=\"purple\">must</strong> not be any of <code>VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY</code>, <code>VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY</code>, <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY</code> or <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY</code>"
14368        },
14369        {
14370          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00430",
14371          "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>topology</code> <strong class=\"purple\">must</strong> not be <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>"
14372        },
14373        {
14374          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-sType-sType",
14375          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO</code>"
14376        },
14377        {
14378          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-pNext-pNext",
14379          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
14380        },
14381        {
14382          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-flags-zerobitmask",
14383          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
14384        },
14385        {
14386          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-parameter",
14387          "text": " <code>topology</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPrimitiveTopology\">VkPrimitiveTopology</a> value"
14388        }
14389      ]
14390    },
14391    "vkCmdBindIndexBuffer": {
14392      "core": [
14393        {
14394          "vuid": "VUID-vkCmdBindIndexBuffer-offset-00431",
14395          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
14396        },
14397        {
14398          "vuid": "VUID-vkCmdBindIndexBuffer-offset-00432",
14399          "text": " The sum of <code>offset</code> and the address of the range of <code>VkDeviceMemory</code> object that is backing <code>buffer</code>, <strong class=\"purple\">must</strong> be a multiple of the type indicated by <code>indexType</code>"
14400        },
14401        {
14402          "vuid": "VUID-vkCmdBindIndexBuffer-buffer-00433",
14403          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDEX_BUFFER_BIT</code> flag"
14404        },
14405        {
14406          "vuid": "VUID-vkCmdBindIndexBuffer-buffer-00434",
14407          "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
14408        },
14409        {
14410          "vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-parameter",
14411          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
14412        },
14413        {
14414          "vuid": "VUID-vkCmdBindIndexBuffer-buffer-parameter",
14415          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
14416        },
14417        {
14418          "vuid": "VUID-vkCmdBindIndexBuffer-indexType-parameter",
14419          "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value"
14420        },
14421        {
14422          "vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-recording",
14423          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
14424        },
14425        {
14426          "vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-cmdpool",
14427          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
14428        },
14429        {
14430          "vuid": "VUID-vkCmdBindIndexBuffer-commonparent",
14431          "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
14432        }
14433      ],
14434      "(VK_NV_ray_tracing)": [
14435        {
14436          "vuid": "VUID-vkCmdBindIndexBuffer-indexType-02507",
14437          "text": " <code>indexType</code> <strong class=\"purple\">must</strong> not be <code>VK_INDEX_TYPE_NONE_NV</code>."
14438        }
14439      ]
14440    },
14441    "vkCmdDraw": {
14442      "core": [
14443        {
14444          "vuid": "VUID-vkCmdDraw-renderPass-00435",
14445          "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
14446        },
14447        {
14448          "vuid": "VUID-vkCmdDraw-subpass-00436",
14449          "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
14450        },
14451        {
14452          "vuid": "VUID-vkCmdDraw-None-00437",
14453          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
14454        },
14455        {
14456          "vuid": "VUID-vkCmdDraw-None-00438",
14457          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
14458        },
14459        {
14460          "vuid": "VUID-vkCmdDraw-None-00439",
14461          "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
14462        },
14463        {
14464          "vuid": "VUID-vkCmdDraw-None-00440",
14465          "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have valid buffers bound"
14466        },
14467        {
14468          "vuid": "VUID-vkCmdDraw-None-00441",
14469          "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in <a href=\"#fxvertex-input\">Vertex Input Description</a>"
14470        },
14471        {
14472          "vuid": "VUID-vkCmdDraw-None-00442",
14473          "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
14474        },
14475        {
14476          "vuid": "VUID-vkCmdDraw-None-00443",
14477          "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
14478        },
14479        {
14480          "vuid": "VUID-vkCmdDraw-None-00444",
14481          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
14482        },
14483        {
14484          "vuid": "VUID-vkCmdDraw-None-00445",
14485          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
14486        },
14487        {
14488          "vuid": "VUID-vkCmdDraw-None-00446",
14489          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
14490        },
14491        {
14492          "vuid": "VUID-vkCmdDraw-None-00447",
14493          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
14494        },
14495        {
14496          "vuid": "VUID-vkCmdDraw-None-00448",
14497          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
14498        },
14499        {
14500          "vuid": "VUID-vkCmdDraw-None-00449",
14501          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
14502        },
14503        {
14504          "vuid": "VUID-vkCmdDraw-None-01499",
14505          "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command."
14506        },
14507        {
14508          "vuid": "VUID-vkCmdDraw-None-02009",
14509          "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>."
14510        },
14511        {
14512          "vuid": "VUID-vkCmdDraw-commandBuffer-parameter",
14513          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
14514        },
14515        {
14516          "vuid": "VUID-vkCmdDraw-commandBuffer-recording",
14517          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
14518        },
14519        {
14520          "vuid": "VUID-vkCmdDraw-commandBuffer-cmdpool",
14521          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
14522        },
14523        {
14524          "vuid": "VUID-vkCmdDraw-renderpass",
14525          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
14526        }
14527      ],
14528      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
14529        {
14530          "vuid": "VUID-vkCmdDraw-None-02010",
14531          "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>"
14532        }
14533      ],
14534      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
14535        {
14536          "vuid": "VUID-vkCmdDraw-None-00452",
14537          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
14538        }
14539      ],
14540      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
14541        {
14542          "vuid": "VUID-vkCmdDraw-filterCubic-02613",
14543          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
14544        },
14545        {
14546          "vuid": "VUID-vkCmdDraw-filterCubicMinmax-02614",
14547          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
14548        }
14549      ],
14550      "(VK_VERSION_1_1,VK_KHR_multiview)": [
14551        {
14552          "vuid": "VUID-vkCmdDraw-maxMultiviewInstanceIndex-00453",
14553          "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>."
14554        }
14555      ],
14556      "(VK_VERSION_1_1)": [
14557        {
14558          "vuid": "VUID-vkCmdDraw-commandBuffer-01850",
14559          "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
14560        },
14561        {
14562          "vuid": "VUID-vkCmdDraw-commandBuffer-01851",
14563          "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer."
14564        },
14565        {
14566          "vuid": "VUID-vkCmdDraw-commandBuffer-01852",
14567          "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
14568        }
14569      ],
14570      "(VK_EXT_sample_locations)": [
14571        {
14572          "vuid": "VUID-vkCmdDraw-sampleLocationsEnable-01512",
14573          "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
14574        }
14575      ],
14576      "(VK_NV_corner_sampled_image)": [
14577        {
14578          "vuid": "VUID-vkCmdDraw-flags-02042",
14579          "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>."
14580        }
14581      ]
14582    },
14583    "vkCmdDrawIndexed": {
14584      "core": [
14585        {
14586          "vuid": "VUID-vkCmdDrawIndexed-renderPass-00454",
14587          "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
14588        },
14589        {
14590          "vuid": "VUID-vkCmdDrawIndexed-subpass-00455",
14591          "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
14592        },
14593        {
14594          "vuid": "VUID-vkCmdDrawIndexed-None-00456",
14595          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
14596        },
14597        {
14598          "vuid": "VUID-vkCmdDrawIndexed-None-00457",
14599          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
14600        },
14601        {
14602          "vuid": "VUID-vkCmdDrawIndexed-None-00458",
14603          "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
14604        },
14605        {
14606          "vuid": "VUID-vkCmdDrawIndexed-None-00459",
14607          "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have valid buffers bound"
14608        },
14609        {
14610          "vuid": "VUID-vkCmdDrawIndexed-None-00460",
14611          "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in <a href=\"#fxvertex-input\">Vertex Input Description</a>"
14612        },
14613        {
14614          "vuid": "VUID-vkCmdDrawIndexed-None-00461",
14615          "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
14616        },
14617        {
14618          "vuid": "VUID-vkCmdDrawIndexed-None-00462",
14619          "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
14620        },
14621        {
14622          "vuid": "VUID-vkCmdDrawIndexed-indexSize-00463",
14623          "text": " <span class=\"eq\">(<code>indexSize</code> * (<code>firstIndex</code> &#43; <code>indexCount</code>) &#43; <code>offset</code>)</span> <strong class=\"purple\">must</strong> be less than or equal to the size of the bound index buffer, with <code>indexSize</code> being based on the type specified by <code>indexType</code>, where the index buffer, <code>indexType</code>, and <code>offset</code> are specified via <code>vkCmdBindIndexBuffer</code>"
14624        },
14625        {
14626          "vuid": "VUID-vkCmdDrawIndexed-None-00464",
14627          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
14628        },
14629        {
14630          "vuid": "VUID-vkCmdDrawIndexed-None-00465",
14631          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
14632        },
14633        {
14634          "vuid": "VUID-vkCmdDrawIndexed-None-00466",
14635          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
14636        },
14637        {
14638          "vuid": "VUID-vkCmdDrawIndexed-None-00467",
14639          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
14640        },
14641        {
14642          "vuid": "VUID-vkCmdDrawIndexed-None-00468",
14643          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
14644        },
14645        {
14646          "vuid": "VUID-vkCmdDrawIndexed-None-00469",
14647          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
14648        },
14649        {
14650          "vuid": "VUID-vkCmdDrawIndexed-None-02011",
14651          "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>."
14652        },
14653        {
14654          "vuid": "VUID-vkCmdDrawIndexed-None-01500",
14655          "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command."
14656        },
14657        {
14658          "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-parameter",
14659          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
14660        },
14661        {
14662          "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-recording",
14663          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
14664        },
14665        {
14666          "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-cmdpool",
14667          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
14668        },
14669        {
14670          "vuid": "VUID-vkCmdDrawIndexed-renderpass",
14671          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
14672        }
14673      ],
14674      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
14675        {
14676          "vuid": "VUID-vkCmdDrawIndexed-None-02012",
14677          "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>"
14678        }
14679      ],
14680      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
14681        {
14682          "vuid": "VUID-vkCmdDrawIndexed-None-00472",
14683          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
14684        }
14685      ],
14686      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
14687        {
14688          "vuid": "VUID-vkCmdDrawIndexed-filterCubic-02615",
14689          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
14690        },
14691        {
14692          "vuid": "VUID-vkCmdDrawIndexed-filterCubicMinmax-02616",
14693          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
14694        }
14695      ],
14696      "(VK_VERSION_1_1,VK_KHR_multiview)": [
14697        {
14698          "vuid": "VUID-vkCmdDrawIndexed-maxMultiviewInstanceIndex-00473",
14699          "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>."
14700        }
14701      ],
14702      "(VK_VERSION_1_1)": [
14703        {
14704          "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-01853",
14705          "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
14706        },
14707        {
14708          "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-01854",
14709          "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer."
14710        },
14711        {
14712          "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-01855",
14713          "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
14714        }
14715      ],
14716      "(VK_EXT_sample_locations)": [
14717        {
14718          "vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-01513",
14719          "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
14720        }
14721      ],
14722      "(VK_NV_corner_sampled_image)": [
14723        {
14724          "vuid": "VUID-vkCmdDrawIndexed-flags-02043",
14725          "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>."
14726        }
14727      ]
14728    },
14729    "vkCmdDrawIndirect": {
14730      "core": [
14731        {
14732          "vuid": "VUID-vkCmdDrawIndirect-buffer-00474",
14733          "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
14734        },
14735        {
14736          "vuid": "VUID-vkCmdDrawIndirect-buffer-01660",
14737          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
14738        },
14739        {
14740          "vuid": "VUID-vkCmdDrawIndirect-offset-00475",
14741          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
14742        },
14743        {
14744          "vuid": "VUID-vkCmdDrawIndirect-drawCount-00476",
14745          "text": " If <code>drawCount</code> is greater than <code>1</code>, <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to <code>sizeof</code>(<code>VkDrawIndirectCommand</code>)"
14746        },
14747        {
14748          "vuid": "VUID-vkCmdDrawIndirect-drawCount-00477",
14749          "text": " If the <a href=\"#features-multiDrawIndirect\">multi-draw indirect</a> feature is not enabled, <code>drawCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>"
14750        },
14751        {
14752          "vuid": "VUID-vkCmdDrawIndirect-firstInstance-00478",
14753          "text": " If the <a href=\"#features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, all the <code>firstInstance</code> members of the <code>VkDrawIndirectCommand</code> structures accessed by this command <strong class=\"purple\">must</strong> be <code>0</code>"
14754        },
14755        {
14756          "vuid": "VUID-vkCmdDrawIndirect-renderPass-00479",
14757          "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
14758        },
14759        {
14760          "vuid": "VUID-vkCmdDrawIndirect-subpass-00480",
14761          "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
14762        },
14763        {
14764          "vuid": "VUID-vkCmdDrawIndirect-None-00481",
14765          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
14766        },
14767        {
14768          "vuid": "VUID-vkCmdDrawIndirect-None-00482",
14769          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
14770        },
14771        {
14772          "vuid": "VUID-vkCmdDrawIndirect-None-00483",
14773          "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
14774        },
14775        {
14776          "vuid": "VUID-vkCmdDrawIndirect-None-00484",
14777          "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have valid buffers bound"
14778        },
14779        {
14780          "vuid": "VUID-vkCmdDrawIndirect-None-00485",
14781          "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
14782        },
14783        {
14784          "vuid": "VUID-vkCmdDrawIndirect-None-00486",
14785          "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
14786        },
14787        {
14788          "vuid": "VUID-vkCmdDrawIndirect-drawCount-00487",
14789          "text": " If <code>drawCount</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> &#43; <code>sizeof</code>(<a href=\"#VkDrawIndirectCommand\">VkDrawIndirectCommand</a>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
14790        },
14791        {
14792          "vuid": "VUID-vkCmdDrawIndirect-drawCount-00488",
14793          "text": " If <code>drawCount</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) &#43; <code>offset</code> &#43; <code>sizeof</code>(<a href=\"#VkDrawIndirectCommand\">VkDrawIndirectCommand</a>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
14794        },
14795        {
14796          "vuid": "VUID-vkCmdDrawIndirect-drawCount-00489",
14797          "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
14798        },
14799        {
14800          "vuid": "VUID-vkCmdDrawIndirect-None-00490",
14801          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
14802        },
14803        {
14804          "vuid": "VUID-vkCmdDrawIndirect-None-00491",
14805          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
14806        },
14807        {
14808          "vuid": "VUID-vkCmdDrawIndirect-None-00492",
14809          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
14810        },
14811        {
14812          "vuid": "VUID-vkCmdDrawIndirect-None-00493",
14813          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
14814        },
14815        {
14816          "vuid": "VUID-vkCmdDrawIndirect-None-00494",
14817          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
14818        },
14819        {
14820          "vuid": "VUID-vkCmdDrawIndirect-None-00495",
14821          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
14822        },
14823        {
14824          "vuid": "VUID-vkCmdDrawIndirect-None-02013",
14825          "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>."
14826        },
14827        {
14828          "vuid": "VUID-vkCmdDrawIndirect-None-01501",
14829          "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command."
14830        },
14831        {
14832          "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-parameter",
14833          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
14834        },
14835        {
14836          "vuid": "VUID-vkCmdDrawIndirect-buffer-parameter",
14837          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
14838        },
14839        {
14840          "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-recording",
14841          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
14842        },
14843        {
14844          "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-cmdpool",
14845          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
14846        },
14847        {
14848          "vuid": "VUID-vkCmdDrawIndirect-renderpass",
14849          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
14850        },
14851        {
14852          "vuid": "VUID-vkCmdDrawIndirect-commonparent",
14853          "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
14854        }
14855      ],
14856      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
14857        {
14858          "vuid": "VUID-vkCmdDrawIndirect-None-02014",
14859          "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>"
14860        }
14861      ],
14862      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
14863        {
14864          "vuid": "VUID-vkCmdDrawIndirect-None-00498",
14865          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
14866        }
14867      ],
14868      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
14869        {
14870          "vuid": "VUID-vkCmdDrawIndirect-filterCubic-02617",
14871          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
14872        },
14873        {
14874          "vuid": "VUID-vkCmdDrawIndirect-filterCubicMinmax-02618",
14875          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
14876        }
14877      ],
14878      "(VK_VERSION_1_1,VK_KHR_multiview)": [
14879        {
14880          "vuid": "VUID-vkCmdDrawIndirect-maxMultiviewInstanceIndex-00499",
14881          "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>."
14882        }
14883      ],
14884      "(VK_VERSION_1_1)": [
14885        {
14886          "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-02640",
14887          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
14888        },
14889        {
14890          "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-01856",
14891          "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
14892        }
14893      ],
14894      "(VK_EXT_sample_locations)": [
14895        {
14896          "vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-01514",
14897          "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
14898        }
14899      ],
14900      "(VK_NV_corner_sampled_image)": [
14901        {
14902          "vuid": "VUID-vkCmdDrawIndirect-flags-02044",
14903          "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>."
14904        }
14905      ]
14906    },
14907    "VkDrawIndirectCommand": {
14908      "core": [
14909        {
14910          "vuid": "VUID-VkDrawIndirectCommand-None-00500",
14911          "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in <a href=\"#fxvertex-input\">Vertex Input Description</a>"
14912        },
14913        {
14914          "vuid": "VUID-VkDrawIndirectCommand-firstInstance-00501",
14915          "text": " If the <a href=\"#features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, <code>firstInstance</code> <strong class=\"purple\">must</strong> be <code>0</code>"
14916        }
14917      ]
14918    },
14919    "vkCmdDrawIndirectCountKHR": {
14920      "(VK_KHR_draw_indirect_count)": [
14921        {
14922          "vuid": "VUID-vkCmdDrawIndirectCountKHR-buffer-03104",
14923          "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
14924        },
14925        {
14926          "vuid": "VUID-vkCmdDrawIndirectCountKHR-buffer-03105",
14927          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
14928        },
14929        {
14930          "vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-03106",
14931          "text": " If <code>countBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
14932        },
14933        {
14934          "vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-03107",
14935          "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
14936        },
14937        {
14938          "vuid": "VUID-vkCmdDrawIndirectCountKHR-offset-03108",
14939          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
14940        },
14941        {
14942          "vuid": "VUID-vkCmdDrawIndirectCountKHR-countBufferOffset-03109",
14943          "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
14944        },
14945        {
14946          "vuid": "VUID-vkCmdDrawIndirectCountKHR-stride-03110",
14947          "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to sizeof(<code>VkDrawIndirectCommand</code>)"
14948        },
14949        {
14950          "vuid": "VUID-vkCmdDrawIndirectCountKHR-maxDrawCount-03111",
14951          "text": " If <code>maxDrawCount</code> is greater than or equal to <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>maxDrawCount</code> - 1) &#43; <code>offset</code> &#43; sizeof(<code>VkDrawIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
14952        },
14953        {
14954          "vuid": "VUID-vkCmdDrawIndirectCountKHR-firstInstance-03112",
14955          "text": " If the <a href=\"#features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, all the <code>firstInstance</code> members of the <code>VkDrawIndirectCommand</code> structures accessed by this command <strong class=\"purple\">must</strong> be <code>0</code>"
14956        },
14957        {
14958          "vuid": "VUID-vkCmdDrawIndirectCountKHR-renderPass-03113",
14959          "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
14960        },
14961        {
14962          "vuid": "VUID-vkCmdDrawIndirectCountKHR-subpass-03114",
14963          "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
14964        },
14965        {
14966          "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03115",
14967          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
14968        },
14969        {
14970          "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03116",
14971          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
14972        },
14973        {
14974          "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03117",
14975          "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
14976        },
14977        {
14978          "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03118",
14979          "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have valid buffers bound"
14980        },
14981        {
14982          "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03119",
14983          "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
14984        },
14985        {
14986          "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03120",
14987          "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
14988        },
14989        {
14990          "vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-03121",
14991          "text": " If the count stored in <code>countBuffer</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> &#43; sizeof(<code>VkDrawIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
14992        },
14993        {
14994          "vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-03122",
14995          "text": " If the count stored in <code>countBuffer</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) &#43; <code>offset</code> &#43; sizeof(<code>VkDrawIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
14996        },
14997        {
14998          "vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-03123",
14999          "text": " The count stored in <code>countBuffer</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
15000        },
15001        {
15002          "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03124",
15003          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
15004        },
15005        {
15006          "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03125",
15007          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
15008        },
15009        {
15010          "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03126",
15011          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
15012        },
15013        {
15014          "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03127",
15015          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
15016        },
15017        {
15018          "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03128",
15019          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
15020        },
15021        {
15022          "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03129",
15023          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
15024        },
15025        {
15026          "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02015",
15027          "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>."
15028        },
15029        {
15030          "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03131",
15031          "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command."
15032        },
15033        {
15034          "vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-parameter",
15035          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
15036        },
15037        {
15038          "vuid": "VUID-vkCmdDrawIndirectCountKHR-buffer-parameter",
15039          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
15040        },
15041        {
15042          "vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-parameter",
15043          "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
15044        },
15045        {
15046          "vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-recording",
15047          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
15048        },
15049        {
15050          "vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-cmdpool",
15051          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
15052        },
15053        {
15054          "vuid": "VUID-vkCmdDrawIndirectCountKHR-renderpass",
15055          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
15056        },
15057        {
15058          "vuid": "VUID-vkCmdDrawIndirectCountKHR-commonparent",
15059          "text": " Each of <code>buffer</code>, <code>commandBuffer</code>, and <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
15060        }
15061      ],
15062      "(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
15063        {
15064          "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02016",
15065          "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>"
15066        }
15067      ],
15068      "(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
15069        {
15070          "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03170",
15071          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
15072        }
15073      ],
15074      "(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
15075        {
15076          "vuid": "VUID-vkCmdDrawIndirectCountKHR-filterCubic-02619",
15077          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
15078        },
15079        {
15080          "vuid": "VUID-vkCmdDrawIndirectCountKHR-filterCubicMinmax-02620",
15081          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
15082        }
15083      ],
15084      "(VK_KHR_draw_indirect_count)+(VK_VERSION_1_1,VK_KHR_multiview)": [
15085        {
15086          "vuid": "VUID-vkCmdDrawIndirectCountKHR-maxMultiviewInstanceIndex-03132",
15087          "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>."
15088        }
15089      ],
15090      "(VK_KHR_draw_indirect_count)+(VK_VERSION_1_1)": [
15091        {
15092          "vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-02641",
15093          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
15094        },
15095        {
15096          "vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-03133",
15097          "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
15098        }
15099      ],
15100      "(VK_KHR_draw_indirect_count)+(VK_EXT_sample_locations)": [
15101        {
15102          "vuid": "VUID-vkCmdDrawIndirectCountKHR-sampleLocationsEnable-03171",
15103          "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
15104        }
15105      ],
15106      "(VK_KHR_draw_indirect_count)+(VK_NV_corner_sampled_image)": [
15107        {
15108          "vuid": "VUID-vkCmdDrawIndirectCountKHR-flags-02045",
15109          "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>."
15110        }
15111      ]
15112    },
15113    "vkCmdDrawIndirectCountAMD": {
15114      "(VK_AMD_draw_indirect_count)": [
15115        {
15116          "vuid": "VUID-vkCmdDrawIndirectCountAMD-buffer-01661",
15117          "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
15118        },
15119        {
15120          "vuid": "VUID-vkCmdDrawIndirectCountAMD-buffer-01662",
15121          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
15122        },
15123        {
15124          "vuid": "VUID-vkCmdDrawIndirectCountAMD-countBuffer-01663",
15125          "text": " If <code>countBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
15126        },
15127        {
15128          "vuid": "VUID-vkCmdDrawIndirectCountAMD-countBuffer-01664",
15129          "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
15130        },
15131        {
15132          "vuid": "VUID-vkCmdDrawIndirectCountAMD-offset-00502",
15133          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
15134        },
15135        {
15136          "vuid": "VUID-vkCmdDrawIndirectCountAMD-countBufferOffset-00503",
15137          "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
15138        },
15139        {
15140          "vuid": "VUID-vkCmdDrawIndirectCountAMD-stride-00504",
15141          "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to <code>sizeof</code>(<code>VkDrawIndirectCommand</code>)"
15142        },
15143        {
15144          "vuid": "VUID-vkCmdDrawIndirectCountAMD-maxDrawCount-00505",
15145          "text": " If <code>maxDrawCount</code> is greater than or equal to <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>maxDrawCount</code> - 1) &#43; <code>offset</code> &#43; <code>sizeof</code>(<code>VkDrawIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
15146        },
15147        {
15148          "vuid": "VUID-vkCmdDrawIndirectCountAMD-firstInstance-00506",
15149          "text": " If the <a href=\"#features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, all the <code>firstInstance</code> members of the <code>VkDrawIndirectCommand</code> structures accessed by this command <strong class=\"purple\">must</strong> be <code>0</code>"
15150        },
15151        {
15152          "vuid": "VUID-vkCmdDrawIndirectCountAMD-renderPass-00507",
15153          "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
15154        },
15155        {
15156          "vuid": "VUID-vkCmdDrawIndirectCountAMD-subpass-00508",
15157          "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
15158        },
15159        {
15160          "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00509",
15161          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
15162        },
15163        {
15164          "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00510",
15165          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
15166        },
15167        {
15168          "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00511",
15169          "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
15170        },
15171        {
15172          "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00512",
15173          "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have valid buffers bound"
15174        },
15175        {
15176          "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00513",
15177          "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
15178        },
15179        {
15180          "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00514",
15181          "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
15182        },
15183        {
15184          "vuid": "VUID-vkCmdDrawIndirectCountAMD-countBuffer-00515",
15185          "text": " If the count stored in <code>countBuffer</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> &#43; <code>sizeof</code>(<code>VkDrawIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
15186        },
15187        {
15188          "vuid": "VUID-vkCmdDrawIndirectCountAMD-countBuffer-00516",
15189          "text": " If the count stored in <code>countBuffer</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) &#43; <code>offset</code> &#43; <code>sizeof</code>(<code>VkDrawIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
15190        },
15191        {
15192          "vuid": "VUID-vkCmdDrawIndirectCountAMD-countBuffer-00517",
15193          "text": " The count stored in <code>countBuffer</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
15194        },
15195        {
15196          "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00518",
15197          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
15198        },
15199        {
15200          "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00519",
15201          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
15202        },
15203        {
15204          "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00520",
15205          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
15206        },
15207        {
15208          "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00521",
15209          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
15210        },
15211        {
15212          "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00522",
15213          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
15214        },
15215        {
15216          "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00523",
15217          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
15218        },
15219        {
15220          "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-02017",
15221          "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>."
15222        },
15223        {
15224          "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-01502",
15225          "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command."
15226        },
15227        {
15228          "vuid": "VUID-vkCmdDrawIndirectCountAMD-commandBuffer-parameter",
15229          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
15230        },
15231        {
15232          "vuid": "VUID-vkCmdDrawIndirectCountAMD-buffer-parameter",
15233          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
15234        },
15235        {
15236          "vuid": "VUID-vkCmdDrawIndirectCountAMD-countBuffer-parameter",
15237          "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
15238        },
15239        {
15240          "vuid": "VUID-vkCmdDrawIndirectCountAMD-commandBuffer-recording",
15241          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
15242        },
15243        {
15244          "vuid": "VUID-vkCmdDrawIndirectCountAMD-commandBuffer-cmdpool",
15245          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
15246        },
15247        {
15248          "vuid": "VUID-vkCmdDrawIndirectCountAMD-renderpass",
15249          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
15250        },
15251        {
15252          "vuid": "VUID-vkCmdDrawIndirectCountAMD-commonparent",
15253          "text": " Each of <code>buffer</code>, <code>commandBuffer</code>, and <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
15254        }
15255      ],
15256      "(VK_AMD_draw_indirect_count)+(VK_VERSION_1_1,VK_KHR_multiview)": [
15257        {
15258          "vuid": "VUID-vkCmdDrawIndirectCountAMD-maxMultiviewInstanceIndex-00525",
15259          "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>."
15260        }
15261      ],
15262      "(VK_AMD_draw_indirect_count)+(VK_VERSION_1_1)": [
15263        {
15264          "vuid": "VUID-vkCmdDrawIndirectCountAMD-commandBuffer-02642",
15265          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
15266        },
15267        {
15268          "vuid": "VUID-vkCmdDrawIndirectCountAMD-commandBuffer-01859",
15269          "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
15270        }
15271      ],
15272      "(VK_AMD_draw_indirect_count)+(VK_EXT_sample_locations)": [
15273        {
15274          "vuid": "VUID-vkCmdDrawIndirectCountAMD-sampleLocationsEnable-01515",
15275          "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
15276        }
15277      ],
15278      "(VK_AMD_draw_indirect_count)+(VK_NV_corner_sampled_image)": [
15279        {
15280          "vuid": "VUID-vkCmdDrawIndirectCountAMD-flags-02046",
15281          "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>."
15282        }
15283      ]
15284    },
15285    "vkCmdDrawIndexedIndirect": {
15286      "core": [
15287        {
15288          "vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-00526",
15289          "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
15290        },
15291        {
15292          "vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-01665",
15293          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
15294        },
15295        {
15296          "vuid": "VUID-vkCmdDrawIndexedIndirect-offset-00527",
15297          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
15298        },
15299        {
15300          "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00528",
15301          "text": " If <code>drawCount</code> is greater than <code>1</code>, <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>)"
15302        },
15303        {
15304          "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00529",
15305          "text": " If the <a href=\"#features-multiDrawIndirect\">multi-draw indirect</a> feature is not enabled, <code>drawCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>"
15306        },
15307        {
15308          "vuid": "VUID-vkCmdDrawIndexedIndirect-firstInstance-00530",
15309          "text": " If the <a href=\"#features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, all the <code>firstInstance</code> members of the <code>VkDrawIndexedIndirectCommand</code> structures accessed by this command <strong class=\"purple\">must</strong> be <code>0</code>"
15310        },
15311        {
15312          "vuid": "VUID-vkCmdDrawIndexedIndirect-renderPass-00531",
15313          "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
15314        },
15315        {
15316          "vuid": "VUID-vkCmdDrawIndexedIndirect-subpass-00532",
15317          "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
15318        },
15319        {
15320          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00533",
15321          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
15322        },
15323        {
15324          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00534",
15325          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
15326        },
15327        {
15328          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00535",
15329          "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
15330        },
15331        {
15332          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00536",
15333          "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have valid buffers bound"
15334        },
15335        {
15336          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00537",
15337          "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
15338        },
15339        {
15340          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00538",
15341          "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
15342        },
15343        {
15344          "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00539",
15345          "text": " If <code>drawCount</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> &#43; <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
15346        },
15347        {
15348          "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00540",
15349          "text": " If <code>drawCount</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) &#43; <code>offset</code> &#43; <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
15350        },
15351        {
15352          "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00541",
15353          "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
15354        },
15355        {
15356          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00542",
15357          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
15358        },
15359        {
15360          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00543",
15361          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
15362        },
15363        {
15364          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00544",
15365          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
15366        },
15367        {
15368          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00545",
15369          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
15370        },
15371        {
15372          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00546",
15373          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
15374        },
15375        {
15376          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00547",
15377          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
15378        },
15379        {
15380          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02018",
15381          "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>."
15382        },
15383        {
15384          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-01503",
15385          "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command."
15386        },
15387        {
15388          "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-parameter",
15389          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
15390        },
15391        {
15392          "vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-parameter",
15393          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
15394        },
15395        {
15396          "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-recording",
15397          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
15398        },
15399        {
15400          "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-cmdpool",
15401          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
15402        },
15403        {
15404          "vuid": "VUID-vkCmdDrawIndexedIndirect-renderpass",
15405          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
15406        },
15407        {
15408          "vuid": "VUID-vkCmdDrawIndexedIndirect-commonparent",
15409          "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
15410        }
15411      ],
15412      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
15413        {
15414          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02019",
15415          "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>"
15416        }
15417      ],
15418      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
15419        {
15420          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00550",
15421          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
15422        }
15423      ],
15424      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
15425        {
15426          "vuid": "VUID-vkCmdDrawIndexedIndirect-filterCubic-02621",
15427          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
15428        },
15429        {
15430          "vuid": "VUID-vkCmdDrawIndexedIndirect-filterCubicMinmax-02622",
15431          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
15432        }
15433      ],
15434      "(VK_VERSION_1_1,VK_KHR_multiview)": [
15435        {
15436          "vuid": "VUID-vkCmdDrawIndexedIndirect-maxMultiviewInstanceIndex-00551",
15437          "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>."
15438        }
15439      ],
15440      "(VK_VERSION_1_1)": [
15441        {
15442          "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02643",
15443          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
15444        },
15445        {
15446          "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-01862",
15447          "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
15448        }
15449      ],
15450      "(VK_EXT_sample_locations)": [
15451        {
15452          "vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-01516",
15453          "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
15454        }
15455      ],
15456      "(VK_NV_corner_sampled_image)": [
15457        {
15458          "vuid": "VUID-vkCmdDrawIndexedIndirect-flags-02047",
15459          "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>."
15460        }
15461      ]
15462    },
15463    "VkDrawIndexedIndirectCommand": {
15464      "core": [
15465        {
15466          "vuid": "VUID-VkDrawIndexedIndirectCommand-None-00552",
15467          "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in <a href=\"#fxvertex-input\">Vertex Input Description</a>"
15468        },
15469        {
15470          "vuid": "VUID-VkDrawIndexedIndirectCommand-indexSize-00553",
15471          "text": " <span class=\"eq\">(<code>indexSize</code> * (<code>firstIndex</code> &#43; <code>indexCount</code>) &#43; <code>offset</code>)</span> <strong class=\"purple\">must</strong> be less than or equal to the size of the bound index buffer, with <code>indexSize</code> being based on the type specified by <code>indexType</code>, where the index buffer, <code>indexType</code>, and <code>offset</code> are specified via <code>vkCmdBindIndexBuffer</code>"
15472        },
15473        {
15474          "vuid": "VUID-VkDrawIndexedIndirectCommand-firstInstance-00554",
15475          "text": " If the <a href=\"#features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, <code>firstInstance</code> <strong class=\"purple\">must</strong> be <code>0</code>"
15476        }
15477      ]
15478    },
15479    "vkCmdDrawIndexedIndirectCountKHR": {
15480      "(VK_KHR_draw_indirect_count)": [
15481        {
15482          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-buffer-03136",
15483          "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
15484        },
15485        {
15486          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-buffer-03137",
15487          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
15488        },
15489        {
15490          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-03138",
15491          "text": " If <code>countBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
15492        },
15493        {
15494          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-03139",
15495          "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
15496        },
15497        {
15498          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-offset-03140",
15499          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
15500        },
15501        {
15502          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBufferOffset-03141",
15503          "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
15504        },
15505        {
15506          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-stride-03142",
15507          "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to sizeof(<code>VkDrawIndexedIndirectCommand</code>)"
15508        },
15509        {
15510          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-maxDrawCount-03143",
15511          "text": " If <code>maxDrawCount</code> is greater than or equal to <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>maxDrawCount</code> - 1) &#43; <code>offset</code> &#43; sizeof(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
15512        },
15513        {
15514          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-firstInstance-03144",
15515          "text": " If the <a href=\"#features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, all the <code>firstInstance</code> members of the <code>VkDrawIndexedIndirectCommand</code> structures accessed by this command <strong class=\"purple\">must</strong> be <code>0</code>"
15516        },
15517        {
15518          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-renderPass-03145",
15519          "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
15520        },
15521        {
15522          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-subpass-03146",
15523          "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
15524        },
15525        {
15526          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03147",
15527          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
15528        },
15529        {
15530          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03148",
15531          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
15532        },
15533        {
15534          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03149",
15535          "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
15536        },
15537        {
15538          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03150",
15539          "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have valid buffers bound"
15540        },
15541        {
15542          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03151",
15543          "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
15544        },
15545        {
15546          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03152",
15547          "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
15548        },
15549        {
15550          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-03153",
15551          "text": " If count stored in <code>countBuffer</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> &#43; sizeof(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
15552        },
15553        {
15554          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-03154",
15555          "text": " If count stored in <code>countBuffer</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) &#43; <code>offset</code> &#43; sizeof(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
15556        },
15557        {
15558          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-drawCount-03155",
15559          "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
15560        },
15561        {
15562          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03156",
15563          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
15564        },
15565        {
15566          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03157",
15567          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
15568        },
15569        {
15570          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03158",
15571          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
15572        },
15573        {
15574          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03159",
15575          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
15576        },
15577        {
15578          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03160",
15579          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
15580        },
15581        {
15582          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03161",
15583          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
15584        },
15585        {
15586          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02020",
15587          "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>."
15588        },
15589        {
15590          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03163",
15591          "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command."
15592        },
15593        {
15594          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-parameter",
15595          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
15596        },
15597        {
15598          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-buffer-parameter",
15599          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
15600        },
15601        {
15602          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-parameter",
15603          "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
15604        },
15605        {
15606          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-recording",
15607          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
15608        },
15609        {
15610          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-cmdpool",
15611          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
15612        },
15613        {
15614          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-renderpass",
15615          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
15616        },
15617        {
15618          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commonparent",
15619          "text": " Each of <code>buffer</code>, <code>commandBuffer</code>, and <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
15620        }
15621      ],
15622      "(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
15623        {
15624          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02021",
15625          "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>"
15626        }
15627      ],
15628      "(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
15629        {
15630          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03173",
15631          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
15632        }
15633      ],
15634      "(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
15635        {
15636          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-filterCubic-02623",
15637          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
15638        },
15639        {
15640          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-filterCubicMinmax-02624",
15641          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
15642        }
15643      ],
15644      "(VK_KHR_draw_indirect_count)+(VK_VERSION_1_1,VK_KHR_multiview)": [
15645        {
15646          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-maxMultiviewInstanceIndex-03164",
15647          "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>."
15648        }
15649      ],
15650      "(VK_KHR_draw_indirect_count)+(VK_VERSION_1_1)": [
15651        {
15652          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-02644",
15653          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
15654        },
15655        {
15656          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-03165",
15657          "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
15658        }
15659      ],
15660      "(VK_KHR_draw_indirect_count)+(VK_EXT_sample_locations)": [
15661        {
15662          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-sampleLocationsEnable-03174",
15663          "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
15664        }
15665      ],
15666      "(VK_KHR_draw_indirect_count)+(VK_NV_corner_sampled_image)": [
15667        {
15668          "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-flags-02048",
15669          "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>."
15670        }
15671      ]
15672    },
15673    "vkCmdDrawIndexedIndirectCountAMD": {
15674      "(VK_AMD_draw_indirect_count)": [
15675        {
15676          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-buffer-01666",
15677          "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
15678        },
15679        {
15680          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-buffer-01667",
15681          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
15682        },
15683        {
15684          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-01668",
15685          "text": " If <code>countBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
15686        },
15687        {
15688          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-01669",
15689          "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
15690        },
15691        {
15692          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-offset-00555",
15693          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
15694        },
15695        {
15696          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBufferOffset-00556",
15697          "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
15698        },
15699        {
15700          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-stride-00557",
15701          "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>)"
15702        },
15703        {
15704          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-maxDrawCount-00558",
15705          "text": " If <code>maxDrawCount</code> is greater than or equal to <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>maxDrawCount</code> - 1) &#43; <code>offset</code> &#43; <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
15706        },
15707        {
15708          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-firstInstance-00559",
15709          "text": " If the <a href=\"#features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, all the <code>firstInstance</code> members of the <code>VkDrawIndexedIndirectCommand</code> structures accessed by this command <strong class=\"purple\">must</strong> be <code>0</code>"
15710        },
15711        {
15712          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-renderPass-00560",
15713          "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
15714        },
15715        {
15716          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-subpass-00561",
15717          "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
15718        },
15719        {
15720          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00562",
15721          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
15722        },
15723        {
15724          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00563",
15725          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
15726        },
15727        {
15728          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00564",
15729          "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
15730        },
15731        {
15732          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00565",
15733          "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have valid buffers bound"
15734        },
15735        {
15736          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00566",
15737          "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
15738        },
15739        {
15740          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00567",
15741          "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
15742        },
15743        {
15744          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-00568",
15745          "text": " If count stored in <code>countBuffer</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> &#43; <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
15746        },
15747        {
15748          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-00569",
15749          "text": " If count stored in <code>countBuffer</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) &#43; <code>offset</code> &#43; <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
15750        },
15751        {
15752          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-drawCount-00570",
15753          "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
15754        },
15755        {
15756          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00571",
15757          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
15758        },
15759        {
15760          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00572",
15761          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
15762        },
15763        {
15764          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00573",
15765          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
15766        },
15767        {
15768          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00574",
15769          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
15770        },
15771        {
15772          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00575",
15773          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
15774        },
15775        {
15776          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00576",
15777          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
15778        },
15779        {
15780          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-02022",
15781          "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>."
15782        },
15783        {
15784          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-01504",
15785          "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command."
15786        },
15787        {
15788          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-parameter",
15789          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
15790        },
15791        {
15792          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-buffer-parameter",
15793          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
15794        },
15795        {
15796          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-parameter",
15797          "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
15798        },
15799        {
15800          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-recording",
15801          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
15802        },
15803        {
15804          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-cmdpool",
15805          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
15806        },
15807        {
15808          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-renderpass",
15809          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
15810        },
15811        {
15812          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commonparent",
15813          "text": " Each of <code>buffer</code>, <code>commandBuffer</code>, and <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
15814        }
15815      ],
15816      "(VK_AMD_draw_indirect_count)+(VK_VERSION_1_1,VK_KHR_multiview)": [
15817        {
15818          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-maxMultiviewInstanceIndex-00578",
15819          "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>."
15820        }
15821      ],
15822      "(VK_AMD_draw_indirect_count)+(VK_VERSION_1_1)": [
15823        {
15824          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-02645",
15825          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
15826        },
15827        {
15828          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-01865",
15829          "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
15830        }
15831      ],
15832      "(VK_AMD_draw_indirect_count)+(VK_EXT_sample_locations)": [
15833        {
15834          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-sampleLocationsEnable-01517",
15835          "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
15836        }
15837      ],
15838      "(VK_AMD_draw_indirect_count)+(VK_NV_corner_sampled_image)": [
15839        {
15840          "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-flags-02049",
15841          "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>."
15842        }
15843      ]
15844    },
15845    "vkCmdDrawIndirectByteCountEXT": {
15846      "(VK_EXT_transform_feedback)": [
15847        {
15848          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-transformFeedback-02287",
15849          "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled"
15850        },
15851        {
15852          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-transformFeedbackDraw-02288",
15853          "text": " The implementation <strong class=\"purple\">must</strong> support <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>transformFeedbackDraw</code>"
15854        },
15855        {
15856          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-vertexStride-02289",
15857          "text": " <code>vertexStride</code> <strong class=\"purple\">must</strong> be greater than 0 and less than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxTransformFeedbackBufferDataStride</code>"
15858        },
15859        {
15860          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-02290",
15861          "text": " <code>counterBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
15862        },
15863        {
15864          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-renderPass-02291",
15865          "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
15866        },
15867        {
15868          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-subpass-02292",
15869          "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
15870        },
15871        {
15872          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02293",
15873          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
15874        },
15875        {
15876          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02294",
15877          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
15878        },
15879        {
15880          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02295",
15881          "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
15882        },
15883        {
15884          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02296",
15885          "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have valid buffers bound"
15886        },
15887        {
15888          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02297",
15889          "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in <a href=\"#fxvertex-input\">Vertex Input Description</a>"
15890        },
15891        {
15892          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02298",
15893          "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
15894        },
15895        {
15896          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02299",
15897          "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
15898        },
15899        {
15900          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02300",
15901          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
15902        },
15903        {
15904          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02301",
15905          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
15906        },
15907        {
15908          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02302",
15909          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
15910        },
15911        {
15912          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02303",
15913          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
15914        },
15915        {
15916          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02304",
15917          "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command"
15918        },
15919        {
15920          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02305",
15921          "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>"
15922        },
15923        {
15924          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-parameter",
15925          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
15926        },
15927        {
15928          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-parameter",
15929          "text": " <code>counterBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
15930        },
15931        {
15932          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-recording",
15933          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
15934        },
15935        {
15936          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-cmdpool",
15937          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
15938        },
15939        {
15940          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-renderpass",
15941          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
15942        },
15943        {
15944          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commonparent",
15945          "text": " Both of <code>commandBuffer</code>, and <code>counterBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
15946        }
15947      ],
15948      "(VK_EXT_transform_feedback)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
15949        {
15950          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02306",
15951          "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>"
15952        }
15953      ],
15954      "(VK_EXT_transform_feedback)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
15955        {
15956          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02307",
15957          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
15958        }
15959      ],
15960      "(VK_EXT_transform_feedback)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
15961        {
15962          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-filterCubic-02625",
15963          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
15964        },
15965        {
15966          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-filterCubicMinmax-02626",
15967          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
15968        }
15969      ],
15970      "(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [
15971        {
15972          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-maxMultiviewInstanceIndex-02308",
15973          "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>"
15974        }
15975      ],
15976      "(VK_EXT_transform_feedback)+(VK_VERSION_1_1)": [
15977        {
15978          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02646",
15979          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
15980        },
15981        {
15982          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02309",
15983          "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer"
15984        }
15985      ],
15986      "(VK_EXT_transform_feedback)+(VK_EXT_sample_locations)": [
15987        {
15988          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-02312",
15989          "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
15990        }
15991      ]
15992    },
15993    "vkCmdBeginConditionalRenderingEXT": {
15994      "(VK_EXT_conditional_rendering)": [
15995        {
15996          "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-None-01980",
15997          "text": " Conditional rendering <strong class=\"purple\">must</strong> not already be <a href=\"#active-conditional-rendering\">active</a>"
15998        },
15999        {
16000          "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-parameter",
16001          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
16002        },
16003        {
16004          "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-pConditionalRenderingBegin-parameter",
16005          "text": " <code>pConditionalRenderingBegin</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkConditionalRenderingBeginInfoEXT</code> structure"
16006        },
16007        {
16008          "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-recording",
16009          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
16010        },
16011        {
16012          "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-cmdpool",
16013          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
16014        }
16015      ]
16016    },
16017    "VkConditionalRenderingBeginInfoEXT": {
16018      "(VK_EXT_conditional_rendering)": [
16019        {
16020          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-01981",
16021          "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
16022        },
16023        {
16024          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-01982",
16025          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT</code> bit set"
16026        },
16027        {
16028          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-offset-01983",
16029          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code> by at least 32 bits."
16030        },
16031        {
16032          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-offset-01984",
16033          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of 4"
16034        },
16035        {
16036          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-sType-sType",
16037          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT</code>"
16038        },
16039        {
16040          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-pNext-pNext",
16041          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
16042        },
16043        {
16044          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-parameter",
16045          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
16046        },
16047        {
16048          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-flags-parameter",
16049          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkConditionalRenderingFlagBitsEXT\">VkConditionalRenderingFlagBitsEXT</a> values"
16050        }
16051      ]
16052    },
16053    "vkCmdEndConditionalRenderingEXT": {
16054      "(VK_EXT_conditional_rendering)": [
16055        {
16056          "vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01985",
16057          "text": " Conditional rendering <strong class=\"purple\">must</strong> be <a href=\"#active-conditional-rendering\">active</a>"
16058        },
16059        {
16060          "vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01986",
16061          "text": " If conditional rendering was made <a href=\"#active-conditional-rendering\">active</a> outside of a render pass instance, it must not be ended inside a render pass instance"
16062        },
16063        {
16064          "vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01987",
16065          "text": " If conditional rendering was made <a href=\"#active-conditional-rendering\">active</a> within a subpass it must be ended in the same subpass"
16066        },
16067        {
16068          "vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-parameter",
16069          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
16070        },
16071        {
16072          "vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-recording",
16073          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
16074        },
16075        {
16076          "vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-cmdpool",
16077          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
16078        }
16079      ]
16080    },
16081    "vkCmdDrawMeshTasksNV": {
16082      "(VK_NV_mesh_shader)": [
16083        {
16084          "vuid": "VUID-vkCmdDrawMeshTasksNV-taskCount-02119",
16085          "text": " <code>taskCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesNV</code>::<code>maxDrawMeshTasksCount</code>"
16086        },
16087        {
16088          "vuid": "VUID-vkCmdDrawMeshTasksNV-renderPass-02120",
16089          "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
16090        },
16091        {
16092          "vuid": "VUID-vkCmdDrawMeshTasksNV-subpass-02121",
16093          "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
16094        },
16095        {
16096          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02122",
16097          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
16098        },
16099        {
16100          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02123",
16101          "text": " For each push constant that is statically used by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
16102        },
16103        {
16104          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02124",
16105          "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the currently bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
16106        },
16107        {
16108          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02125",
16109          "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
16110        },
16111        {
16112          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02126",
16113          "text": " If the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
16114        },
16115        {
16116          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02127",
16117          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
16118        },
16119        {
16120          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02128",
16121          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
16122        },
16123        {
16124          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02129",
16125          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
16126        },
16127        {
16128          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02130",
16129          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
16130        },
16131        {
16132          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02131",
16133          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the currently bound descriptor set"
16134        },
16135        {
16136          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02132",
16137          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the currently bound descriptor set"
16138        },
16139        {
16140          "vuid": "VUID-vkCmdDrawMeshTasksNV-linearTilingFeatures-02133",
16141          "text": " Any <code>VkImageView</code> being sampled with <code>VK_FILTER_LINEAR</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports linear filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
16142        },
16143        {
16144          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02134",
16145          "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command."
16146        },
16147        {
16148          "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-parameter",
16149          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
16150        },
16151        {
16152          "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-recording",
16153          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
16154        },
16155        {
16156          "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-cmdpool",
16157          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
16158        },
16159        {
16160          "vuid": "VUID-vkCmdDrawMeshTasksNV-renderpass",
16161          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
16162        }
16163      ],
16164      "(VK_NV_mesh_shader)+(VK_IMG_filter_cubic)": [
16165        {
16166          "vuid": "VUID-vkCmdDrawMeshTasksNV-linearTilingFeatures-02135",
16167          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports cubic filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
16168        },
16169        {
16170          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02136",
16171          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
16172        }
16173      ],
16174      "(VK_NV_mesh_shader)+(VK_KHR_multiview)": [
16175        {
16176          "vuid": "VUID-vkCmdDrawMeshTasksNV-maxMultiviewInstanceIndex-02137",
16177          "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>."
16178        }
16179      ],
16180      "(VK_NV_mesh_shader)+(VK_VERSION_1_1)": [
16181        {
16182          "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-02138",
16183          "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
16184        },
16185        {
16186          "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-02139",
16187          "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer."
16188        },
16189        {
16190          "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-02140",
16191          "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
16192        }
16193      ],
16194      "(VK_NV_mesh_shader)+(VK_EXT_sample_locations)": [
16195        {
16196          "vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-02141",
16197          "text": " If the currently bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
16198        }
16199      ],
16200      "(VK_NV_mesh_shader)+(VK_NV_corner_sampled_image)": [
16201        {
16202          "vuid": "VUID-vkCmdDrawMeshTasksNV-flags-02142",
16203          "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>."
16204        }
16205      ]
16206    },
16207    "vkCmdDrawMeshTasksIndirectNV": {
16208      "(VK_NV_mesh_shader)": [
16209        {
16210          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02143",
16211          "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
16212        },
16213        {
16214          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02144",
16215          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
16216        },
16217        {
16218          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-offset-02145",
16219          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
16220        },
16221        {
16222          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02146",
16223          "text": " If <code>drawCount</code> is greater than <code>1</code>, <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to <code>sizeof</code>(<code>VkDrawMeshTasksIndirectCommandNV</code>)"
16224        },
16225        {
16226          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02147",
16227          "text": " If the <a href=\"#features-multiDrawIndirect\">multi-draw indirect</a> feature is not enabled, <code>drawCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>"
16228        },
16229        {
16230          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-renderPass-02148",
16231          "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
16232        },
16233        {
16234          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-subpass-02149",
16235          "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
16236        },
16237        {
16238          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02150",
16239          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
16240        },
16241        {
16242          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02151",
16243          "text": " For each push constant that is statically used by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
16244        },
16245        {
16246          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02152",
16247          "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the currently bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
16248        },
16249        {
16250          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02153",
16251          "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have valid buffers bound"
16252        },
16253        {
16254          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02154",
16255          "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
16256        },
16257        {
16258          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02155",
16259          "text": " If the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
16260        },
16261        {
16262          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02156",
16263          "text": " If <code>drawCount</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> &#43; <code>sizeof</code>(<a href=\"#VkDrawMeshTasksIndirectCommandNV\">VkDrawMeshTasksIndirectCommandNV</a>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
16264        },
16265        {
16266          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02157",
16267          "text": " If <code>drawCount</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) &#43; <code>offset</code> &#43; <code>sizeof</code>(<a href=\"#VkDrawMeshTasksIndirectCommandNV\">VkDrawMeshTasksIndirectCommandNV</a>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
16268        },
16269        {
16270          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02158",
16271          "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
16272        },
16273        {
16274          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02159",
16275          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
16276        },
16277        {
16278          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02160",
16279          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
16280        },
16281        {
16282          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02161",
16283          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
16284        },
16285        {
16286          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02162",
16287          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
16288        },
16289        {
16290          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02163",
16291          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the currently bound descriptor set"
16292        },
16293        {
16294          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02164",
16295          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the currently bound descriptor set"
16296        },
16297        {
16298          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-linearTilingFeatures-02165",
16299          "text": " Any <code>VkImageView</code> being sampled with <code>VK_FILTER_LINEAR</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports linear filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
16300        },
16301        {
16302          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02166",
16303          "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command."
16304        },
16305        {
16306          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-parameter",
16307          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
16308        },
16309        {
16310          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-parameter",
16311          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
16312        },
16313        {
16314          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-recording",
16315          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
16316        },
16317        {
16318          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-cmdpool",
16319          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
16320        },
16321        {
16322          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-renderpass",
16323          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
16324        },
16325        {
16326          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commonparent",
16327          "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
16328        }
16329      ],
16330      "(VK_NV_mesh_shader)+(VK_IMG_filter_cubic)": [
16331        {
16332          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-linearTilingFeatures-02167",
16333          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports cubic filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
16334        },
16335        {
16336          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02168",
16337          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
16338        }
16339      ],
16340      "(VK_NV_mesh_shader)+(VK_KHR_multiview)": [
16341        {
16342          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-maxMultiviewInstanceIndex-02169",
16343          "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>."
16344        }
16345      ],
16346      "(VK_NV_mesh_shader)+(VK_VERSION_1_1)": [
16347        {
16348          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02170",
16349          "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
16350        },
16351        {
16352          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02171",
16353          "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer."
16354        },
16355        {
16356          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02172",
16357          "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
16358        }
16359      ],
16360      "(VK_NV_mesh_shader)+(VK_EXT_sample_locations)": [
16361        {
16362          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-02173",
16363          "text": " If the currently bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
16364        }
16365      ],
16366      "(VK_NV_mesh_shader)+(VK_NV_corner_sampled_image)": [
16367        {
16368          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-flags-02174",
16369          "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>."
16370        }
16371      ]
16372    },
16373    "VkDrawMeshTasksIndirectCommandNV": {
16374      "(VK_NV_mesh_shader)": [
16375        {
16376          "vuid": "VUID-VkDrawMeshTasksIndirectCommandNV-taskCount-02175",
16377          "text": " <code>taskCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesNV</code>::<code>maxDrawMeshTasksCount</code>"
16378        }
16379      ]
16380    },
16381    "vkCmdDrawMeshTasksIndirectCountNV": {
16382      "(VK_NV_mesh_shader)": [
16383        {
16384          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02176",
16385          "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
16386        },
16387        {
16388          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02177",
16389          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
16390        },
16391        {
16392          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02178",
16393          "text": " If <code>countBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
16394        },
16395        {
16396          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02179",
16397          "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
16398        },
16399        {
16400          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-offset-02180",
16401          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
16402        },
16403        {
16404          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBufferOffset-02181",
16405          "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
16406        },
16407        {
16408          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-stride-02182",
16409          "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to <code>sizeof</code>(<code>VkDrawMeshTasksIndirectCommandNV</code>)"
16410        },
16411        {
16412          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-maxDrawCount-02183",
16413          "text": " If <code>maxDrawCount</code> is greater than or equal to <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>maxDrawCount</code> - 1) &#43; <code>offset</code> &#43; <code>sizeof</code>(<code>VkDrawMeshTasksIndirectCommandNV</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
16414        },
16415        {
16416          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-renderPass-02184",
16417          "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
16418        },
16419        {
16420          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-subpass-02185",
16421          "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
16422        },
16423        {
16424          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02186",
16425          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
16426        },
16427        {
16428          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02187",
16429          "text": " For each push constant that is statically used by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
16430        },
16431        {
16432          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02188",
16433          "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the currently bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
16434        },
16435        {
16436          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02189",
16437          "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
16438        },
16439        {
16440          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02190",
16441          "text": " If the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
16442        },
16443        {
16444          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02191",
16445          "text": " If the count stored in <code>countBuffer</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> &#43; <code>sizeof</code>(<code>VkDrawMeshTasksIndirectCommandNV</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
16446        },
16447        {
16448          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02192",
16449          "text": " If the count stored in <code>countBuffer</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) &#43; <code>offset</code> &#43; <code>sizeof</code>(<code>VkDrawMeshTasksIndirectCommandNV</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
16450        },
16451        {
16452          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02193",
16453          "text": " The count stored in <code>countBuffer</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
16454        },
16455        {
16456          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02194",
16457          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
16458        },
16459        {
16460          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02195",
16461          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
16462        },
16463        {
16464          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02196",
16465          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
16466        },
16467        {
16468          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02197",
16469          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
16470        },
16471        {
16472          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02198",
16473          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the currently bound descriptor set"
16474        },
16475        {
16476          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02199",
16477          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the currently bound descriptor set"
16478        },
16479        {
16480          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-linearTilingFeatures-02200",
16481          "text": " Any <code>VkImageView</code> being sampled with <code>VK_FILTER_LINEAR</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports linear filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
16482        },
16483        {
16484          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02201",
16485          "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command."
16486        },
16487        {
16488          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-parameter",
16489          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
16490        },
16491        {
16492          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-parameter",
16493          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
16494        },
16495        {
16496          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-parameter",
16497          "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
16498        },
16499        {
16500          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-recording",
16501          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
16502        },
16503        {
16504          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-cmdpool",
16505          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
16506        },
16507        {
16508          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-renderpass",
16509          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
16510        },
16511        {
16512          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commonparent",
16513          "text": " Each of <code>buffer</code>, <code>commandBuffer</code>, and <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
16514        }
16515      ],
16516      "(VK_NV_mesh_shader)+(VK_KHR_multiview)": [
16517        {
16518          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-maxMultiviewInstanceIndex-02202",
16519          "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>."
16520        }
16521      ],
16522      "(VK_NV_mesh_shader)+(VK_VERSION_1_1)": [
16523        {
16524          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02203",
16525          "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
16526        },
16527        {
16528          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02204",
16529          "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer."
16530        },
16531        {
16532          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02205",
16533          "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
16534        }
16535      ],
16536      "(VK_NV_mesh_shader)+(VK_EXT_sample_locations)": [
16537        {
16538          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-02206",
16539          "text": " If the currently bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
16540        }
16541      ]
16542    },
16543    "VkPipelineVertexInputStateCreateInfo": {
16544      "core": [
16545        {
16546          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-vertexBindingDescriptionCount-00613",
16547          "text": " <code>vertexBindingDescriptionCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
16548        },
16549        {
16550          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-vertexAttributeDescriptionCount-00614",
16551          "text": " <code>vertexAttributeDescriptionCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributes</code>"
16552        },
16553        {
16554          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-binding-00615",
16555          "text": " For every <code>binding</code> specified by each element of <code>pVertexAttributeDescriptions</code>, a <code>VkVertexInputBindingDescription</code> <strong class=\"purple\">must</strong> exist in <code>pVertexBindingDescriptions</code> with the same value of <code>binding</code>"
16556        },
16557        {
16558          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-00616",
16559          "text": " All elements of <code>pVertexBindingDescriptions</code> <strong class=\"purple\">must</strong> describe distinct binding numbers"
16560        },
16561        {
16562          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-00617",
16563          "text": " All elements of <code>pVertexAttributeDescriptions</code> <strong class=\"purple\">must</strong> describe distinct attribute locations"
16564        },
16565        {
16566          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-sType-sType",
16567          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO</code>"
16568        },
16569        {
16570          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pNext-pNext",
16571          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineVertexInputDivisorStateCreateInfoEXT\">VkPipelineVertexInputDivisorStateCreateInfoEXT</a>"
16572        },
16573        {
16574          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-flags-zerobitmask",
16575          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
16576        },
16577        {
16578          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-parameter",
16579          "text": " If <code>vertexBindingDescriptionCount</code> is not <code>0</code>, <code>pVertexBindingDescriptions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>vertexBindingDescriptionCount</code> valid <code>VkVertexInputBindingDescription</code> structures"
16580        },
16581        {
16582          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-parameter",
16583          "text": " If <code>vertexAttributeDescriptionCount</code> is not <code>0</code>, <code>pVertexAttributeDescriptions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>vertexAttributeDescriptionCount</code> valid <code>VkVertexInputAttributeDescription</code> structures"
16584        }
16585      ]
16586    },
16587    "VkVertexInputBindingDescription": {
16588      "core": [
16589        {
16590          "vuid": "VUID-VkVertexInputBindingDescription-binding-00618",
16591          "text": " <code>binding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
16592        },
16593        {
16594          "vuid": "VUID-VkVertexInputBindingDescription-stride-00619",
16595          "text": " <code>stride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindingStride</code>"
16596        },
16597        {
16598          "vuid": "VUID-VkVertexInputBindingDescription-inputRate-parameter",
16599          "text": " <code>inputRate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVertexInputRate\">VkVertexInputRate</a> value"
16600        }
16601      ]
16602    },
16603    "VkVertexInputAttributeDescription": {
16604      "core": [
16605        {
16606          "vuid": "VUID-VkVertexInputAttributeDescription-location-00620",
16607          "text": " <code>location</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributes</code>"
16608        },
16609        {
16610          "vuid": "VUID-VkVertexInputAttributeDescription-binding-00621",
16611          "text": " <code>binding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
16612        },
16613        {
16614          "vuid": "VUID-VkVertexInputAttributeDescription-offset-00622",
16615          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributeOffset</code>"
16616        },
16617        {
16618          "vuid": "VUID-VkVertexInputAttributeDescription-format-00623",
16619          "text": " <code>format</code> <strong class=\"purple\">must</strong> be allowed as a vertex buffer format, as specified by the <code>VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT</code> flag in <code>VkFormatProperties</code>::<code>bufferFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
16620        },
16621        {
16622          "vuid": "VUID-VkVertexInputAttributeDescription-format-parameter",
16623          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
16624        }
16625      ]
16626    },
16627    "vkCmdBindVertexBuffers": {
16628      "core": [
16629        {
16630          "vuid": "VUID-vkCmdBindVertexBuffers-firstBinding-00624",
16631          "text": " <code>firstBinding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
16632        },
16633        {
16634          "vuid": "VUID-vkCmdBindVertexBuffers-firstBinding-00625",
16635          "text": " The sum of <code>firstBinding</code> and <code>bindingCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
16636        },
16637        {
16638          "vuid": "VUID-vkCmdBindVertexBuffers-pOffsets-00626",
16639          "text": " All elements of <code>pOffsets</code> <strong class=\"purple\">must</strong> be less than the size of the corresponding element in <code>pBuffers</code>"
16640        },
16641        {
16642          "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-00627",
16643          "text": " All elements of <code>pBuffers</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_VERTEX_BUFFER_BIT</code> flag"
16644        },
16645        {
16646          "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-00628",
16647          "text": " Each element of <code>pBuffers</code> that is non-sparse <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
16648        },
16649        {
16650          "vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-parameter",
16651          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
16652        },
16653        {
16654          "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-parameter",
16655          "text": " <code>pBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid <code>VkBuffer</code> handles"
16656        },
16657        {
16658          "vuid": "VUID-vkCmdBindVertexBuffers-pOffsets-parameter",
16659          "text": " <code>pOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> <code>VkDeviceSize</code> values"
16660        },
16661        {
16662          "vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-recording",
16663          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
16664        },
16665        {
16666          "vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-cmdpool",
16667          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
16668        },
16669        {
16670          "vuid": "VUID-vkCmdBindVertexBuffers-bindingCount-arraylength",
16671          "text": " <code>bindingCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
16672        },
16673        {
16674          "vuid": "VUID-vkCmdBindVertexBuffers-commonparent",
16675          "text": " Both of <code>commandBuffer</code>, and the elements of <code>pBuffers</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
16676        }
16677      ]
16678    },
16679    "VkPipelineVertexInputDivisorStateCreateInfoEXT": {
16680      "(VK_EXT_vertex_attribute_divisor)": [
16681        {
16682          "vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-sType-sType",
16683          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT</code>"
16684        },
16685        {
16686          "vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-pVertexBindingDivisors-parameter",
16687          "text": " <code>pVertexBindingDivisors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>vertexBindingDivisorCount</code> <code>VkVertexInputBindingDivisorDescriptionEXT</code> structures"
16688        },
16689        {
16690          "vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-vertexBindingDivisorCount-arraylength",
16691          "text": " <code>vertexBindingDivisorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
16692        }
16693      ]
16694    },
16695    "VkVertexInputBindingDivisorDescriptionEXT": {
16696      "(VK_EXT_vertex_attribute_divisor)": [
16697        {
16698          "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-binding-01869",
16699          "text": " <code>binding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
16700        },
16701        {
16702          "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-vertexAttributeInstanceRateZeroDivisor-02228",
16703          "text": " If the <code>vertexAttributeInstanceRateZeroDivisor</code> feature is not enabled, <code>divisor</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
16704        },
16705        {
16706          "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-vertexAttributeInstanceRateDivisor-02229",
16707          "text": " If the <code>vertexAttributeInstanceRateDivisor</code> feature is not enabled, <code>divisor</code> <strong class=\"purple\">must</strong> be <code>1</code>"
16708        },
16709        {
16710          "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-divisor-01870",
16711          "text": " <code>divisor</code> <strong class=\"purple\">must</strong> be a value between <code>0</code> and <code>VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT</code>::<code>maxVertexAttribDivisor</code>, inclusive."
16712        },
16713        {
16714          "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-inputRate-01871",
16715          "text": " <a href=\"#VkVertexInputBindingDescription\">VkVertexInputBindingDescription</a>::<code>inputRate</code> <strong class=\"purple\">must</strong> be of type <code>VK_VERTEX_INPUT_RATE_INSTANCE</code> for this <code>binding</code>."
16716        }
16717      ]
16718    },
16719    "VkPipelineTessellationStateCreateInfo": {
16720      "core": [
16721        {
16722          "vuid": "VUID-VkPipelineTessellationStateCreateInfo-patchControlPoints-01214",
16723          "text": " <code>patchControlPoints</code> <strong class=\"purple\">must</strong> be greater than zero and less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxTessellationPatchSize</code>"
16724        },
16725        {
16726          "vuid": "VUID-VkPipelineTessellationStateCreateInfo-sType-sType",
16727          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO</code>"
16728        },
16729        {
16730          "vuid": "VUID-VkPipelineTessellationStateCreateInfo-pNext-pNext",
16731          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineTessellationDomainOriginStateCreateInfo\">VkPipelineTessellationDomainOriginStateCreateInfo</a>"
16732        },
16733        {
16734          "vuid": "VUID-VkPipelineTessellationStateCreateInfo-flags-zerobitmask",
16735          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
16736        }
16737      ]
16738    },
16739    "VkPipelineTessellationDomainOriginStateCreateInfo": {
16740      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
16741        {
16742          "vuid": "VUID-VkPipelineTessellationDomainOriginStateCreateInfo-sType-sType",
16743          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO</code>"
16744        },
16745        {
16746          "vuid": "VUID-VkPipelineTessellationDomainOriginStateCreateInfo-domainOrigin-parameter",
16747          "text": " <code>domainOrigin</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkTessellationDomainOrigin\">VkTessellationDomainOrigin</a> value"
16748        }
16749      ]
16750    },
16751    "vkCmdBindTransformFeedbackBuffersEXT": {
16752      "(VK_EXT_transform_feedback)": [
16753        {
16754          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-transformFeedback-02355",
16755          "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled"
16756        },
16757        {
16758          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02356",
16759          "text": " <code>firstBinding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>"
16760        },
16761        {
16762          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02357",
16763          "text": " The sum of <code>firstBinding</code> and <code>bindingCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>"
16764        },
16765        {
16766          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02358",
16767          "text": " All elements of <code>pOffsets</code> <strong class=\"purple\">must</strong> be less than the size of the corresponding element in <code>pBuffers</code>"
16768        },
16769        {
16770          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02359",
16771          "text": " All elements of <code>pOffsets</code> <strong class=\"purple\">must</strong> be a multiple of 4"
16772        },
16773        {
16774          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02360",
16775          "text": " All elements of <code>pBuffers</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT</code> flag"
16776        },
16777        {
16778          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pSize-02361",
16779          "text": " If the optional <code>pSize</code> array is specified, each element of <code>pSizes</code> <strong class=\"purple\">must</strong> either be <code>VK_WHOLE_SIZE</code>, or be less than or equal to <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBufferSize</code>"
16780        },
16781        {
16782          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pSizes-02362",
16783          "text": " All elements of <code>pSizes</code> <strong class=\"purple\">must</strong> be less than or equal to the size of the corresponding buffer in <code>pBuffers</code>"
16784        },
16785        {
16786          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02363",
16787          "text": " All elements of <code>pOffsets</code> plus <code>pSizes</code>, where the <code>pSizes</code>, element is not <code>VK_WHOLE_SIZE</code>, <strong class=\"purple\">must</strong> be less than or equal to the size of the corresponding element in <code>pBuffers</code>"
16788        },
16789        {
16790          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02364",
16791          "text": " Each element of <code>pBuffers</code> that is non-sparse <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
16792        },
16793        {
16794          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-None-02365",
16795          "text": " Transform feedback <strong class=\"purple\">must</strong> not be active when the <code>vkCmdBindTransformFeedbackBuffersEXT</code> command is recorded"
16796        },
16797        {
16798          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-parameter",
16799          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
16800        },
16801        {
16802          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-parameter",
16803          "text": " <code>pBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid <code>VkBuffer</code> handles"
16804        },
16805        {
16806          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-parameter",
16807          "text": " <code>pOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> <code>VkDeviceSize</code> values"
16808        },
16809        {
16810          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pSizes-parameter",
16811          "text": " If <code>pSizes</code> is not <code>NULL</code>, <code>pSizes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> <code>VkDeviceSize</code> values"
16812        },
16813        {
16814          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-recording",
16815          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
16816        },
16817        {
16818          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-cmdpool",
16819          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
16820        },
16821        {
16822          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-bindingCount-arraylength",
16823          "text": " If <code>pSizes</code> is not <code>NULL</code>, <code>bindingCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
16824        },
16825        {
16826          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commonparent",
16827          "text": " Both of <code>commandBuffer</code>, and the elements of <code>pBuffers</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
16828        }
16829      ]
16830    },
16831    "vkCmdBeginTransformFeedbackEXT": {
16832      "(VK_EXT_transform_feedback)": [
16833        {
16834          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-transformFeedback-02366",
16835          "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled"
16836        },
16837        {
16838          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-None-02367",
16839          "text": " Transform feedback <strong class=\"purple\">must</strong> not be active"
16840        },
16841        {
16842          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-02368",
16843          "text": " <code>firstCounterBuffer</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>"
16844        },
16845        {
16846          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-02369",
16847          "text": " The sum of <code>firstCounterBuffer</code> and <code>counterBufferCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>"
16848        },
16849        {
16850          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-counterBufferCount-02607",
16851          "text": " If <code>counterBufferCount</code> is not <code>0</code>, and <code>pCounterBuffers</code> is not <code>NULL</code>, <code>pCounterBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>counterBufferCount</code> <code>VkBuffer</code> handles that are either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
16852        },
16853        {
16854          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-02370",
16855          "text": " For each buffer handle in the array, if it is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> reference a buffer large enough to hold 4 bytes at the corresponding offset from the <code>pCounterBufferOffsets</code> array"
16856        },
16857        {
16858          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffer-02371",
16859          "text": " If <code>pCounterBuffer</code> is <code>NULL</code>, then <code>pCounterBufferOffsets</code> <strong class=\"purple\">must</strong> also be <code>NULL</code>"
16860        },
16861        {
16862          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffers-02372",
16863          "text": " For each buffer handle in the <code>pCounterBuffers</code> array that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing <code>VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT</code>"
16864        },
16865        {
16866          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-parameter",
16867          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
16868        },
16869        {
16870          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-parameter",
16871          "text": " If <code>counterBufferCount</code> is not <code>0</code>, and <code>pCounterBufferOffsets</code> is not <code>NULL</code>, <code>pCounterBufferOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>counterBufferCount</code> <code>VkDeviceSize</code> values"
16872        },
16873        {
16874          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-recording",
16875          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
16876        },
16877        {
16878          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-cmdpool",
16879          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
16880        },
16881        {
16882          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-renderpass",
16883          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
16884        },
16885        {
16886          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commonparent",
16887          "text": " Both of <code>commandBuffer</code>, and the elements of <code>pCounterBuffers</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
16888        }
16889      ],
16890      "(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [
16891        {
16892          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-None-02373",
16893          "text": " Transform feedback <strong class=\"purple\">must</strong> not be made active in a render pass instance with multiview enabled"
16894        }
16895      ]
16896    },
16897    "vkCmdEndTransformFeedbackEXT": {
16898      "(VK_EXT_transform_feedback)": [
16899        {
16900          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-transformFeedback-02374",
16901          "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled"
16902        },
16903        {
16904          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-None-02375",
16905          "text": " Transform feedback <strong class=\"purple\">must</strong> be active"
16906        },
16907        {
16908          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02376",
16909          "text": " <code>firstCounterBuffer</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>"
16910        },
16911        {
16912          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02377",
16913          "text": " The sum of <code>firstCounterBuffer</code> and <code>counterBufferCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>"
16914        },
16915        {
16916          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-counterBufferCount-02608",
16917          "text": " If <code>counterBufferCount</code> is not <code>0</code>, and <code>pCounterBuffers</code> is not <code>NULL</code>, <code>pCounterBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>counterBufferCount</code> <code>VkBuffer</code> handles that are either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
16918        },
16919        {
16920          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-02378",
16921          "text": " For each buffer handle in the array, if it is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> reference a buffer large enough to hold 4 bytes at the corresponding offset from the <code>pCounterBufferOffsets</code> array"
16922        },
16923        {
16924          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffer-02379",
16925          "text": " If <code>pCounterBuffer</code> is <code>NULL</code>, then <code>pCounterBufferOffsets</code> <strong class=\"purple\">must</strong> also be <code>NULL</code>"
16926        },
16927        {
16928          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffers-02380",
16929          "text": " For each buffer handle in the <code>pCounterBuffers</code> array that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing <code>VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT</code>"
16930        },
16931        {
16932          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-parameter",
16933          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
16934        },
16935        {
16936          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-parameter",
16937          "text": " If <code>counterBufferCount</code> is not <code>0</code>, and <code>pCounterBufferOffsets</code> is not <code>NULL</code>, <code>pCounterBufferOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>counterBufferCount</code> <code>VkDeviceSize</code> values"
16938        },
16939        {
16940          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-recording",
16941          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
16942        },
16943        {
16944          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-cmdpool",
16945          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
16946        },
16947        {
16948          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-renderpass",
16949          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
16950        },
16951        {
16952          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commonparent",
16953          "text": " Both of <code>commandBuffer</code>, and the elements of <code>pCounterBuffers</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
16954        }
16955      ]
16956    },
16957    "VkPipelineViewportSwizzleStateCreateInfoNV": {
16958      "(VK_NV_viewport_swizzle)": [
16959        {
16960          "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-viewportCount-01215",
16961          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> match the <code>viewportCount</code> set in <code>VkPipelineViewportStateCreateInfo</code>"
16962        },
16963        {
16964          "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-sType-sType",
16965          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV</code>"
16966        },
16967        {
16968          "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-flags-zerobitmask",
16969          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
16970        },
16971        {
16972          "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-pViewportSwizzles-parameter",
16973          "text": " <code>pViewportSwizzles</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <code>VkViewportSwizzleNV</code> structures"
16974        },
16975        {
16976          "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-viewportCount-arraylength",
16977          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
16978        }
16979      ]
16980    },
16981    "VkViewportSwizzleNV": {
16982      "(VK_NV_viewport_swizzle)": [
16983        {
16984          "vuid": "VUID-VkViewportSwizzleNV-x-parameter",
16985          "text": " <code>x</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value"
16986        },
16987        {
16988          "vuid": "VUID-VkViewportSwizzleNV-y-parameter",
16989          "text": " <code>y</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value"
16990        },
16991        {
16992          "vuid": "VUID-VkViewportSwizzleNV-z-parameter",
16993          "text": " <code>z</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value"
16994        },
16995        {
16996          "vuid": "VUID-VkViewportSwizzleNV-w-parameter",
16997          "text": " <code>w</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value"
16998        }
16999      ]
17000    },
17001    "VkPipelineViewportWScalingStateCreateInfoNV": {
17002      "(VK_NV_clip_space_w_scaling)": [
17003        {
17004          "vuid": "VUID-VkPipelineViewportWScalingStateCreateInfoNV-sType-sType",
17005          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV</code>"
17006        },
17007        {
17008          "vuid": "VUID-VkPipelineViewportWScalingStateCreateInfoNV-viewportCount-arraylength",
17009          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
17010        }
17011      ]
17012    },
17013    "vkCmdSetViewportWScalingNV": {
17014      "(VK_NV_clip_space_w_scaling)": [
17015        {
17016          "vuid": "VUID-vkCmdSetViewportWScalingNV-None-01322",
17017          "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled"
17018        },
17019        {
17020          "vuid": "VUID-vkCmdSetViewportWScalingNV-firstViewport-01323",
17021          "text": " <code>firstViewport</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxViewports</code>"
17022        },
17023        {
17024          "vuid": "VUID-vkCmdSetViewportWScalingNV-firstViewport-01324",
17025          "text": " The sum of <code>firstViewport</code> and <code>viewportCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxViewports</code>, inclusive"
17026        },
17027        {
17028          "vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-parameter",
17029          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
17030        },
17031        {
17032          "vuid": "VUID-vkCmdSetViewportWScalingNV-pViewportWScalings-parameter",
17033          "text": " <code>pViewportWScalings</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> <code>VkViewportWScalingNV</code> structures"
17034        },
17035        {
17036          "vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-recording",
17037          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17038        },
17039        {
17040          "vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-cmdpool",
17041          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
17042        },
17043        {
17044          "vuid": "VUID-vkCmdSetViewportWScalingNV-viewportCount-arraylength",
17045          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
17046        }
17047      ]
17048    },
17049    "VkPipelineViewportStateCreateInfo": {
17050      "core": [
17051        {
17052          "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-01216",
17053          "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>viewportCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
17054        },
17055        {
17056          "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01217",
17057          "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>scissorCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
17058        },
17059        {
17060          "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-01218",
17061          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive"
17062        },
17063        {
17064          "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01219",
17065          "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive"
17066        },
17067        {
17068          "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01220",
17069          "text": " <code>scissorCount</code> and <code>viewportCount</code> <strong class=\"purple\">must</strong> be identical"
17070        },
17071        {
17072          "vuid": "VUID-VkPipelineViewportStateCreateInfo-sType-sType",
17073          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO</code>"
17074        },
17075        {
17076          "vuid": "VUID-VkPipelineViewportStateCreateInfo-pNext-pNext",
17077          "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineViewportCoarseSampleOrderStateCreateInfoNV\">VkPipelineViewportCoarseSampleOrderStateCreateInfoNV</a>, <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>, <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>, <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>, or <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>"
17078        },
17079        {
17080          "vuid": "VUID-VkPipelineViewportStateCreateInfo-sType-unique",
17081          "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
17082        },
17083        {
17084          "vuid": "VUID-VkPipelineViewportStateCreateInfo-flags-zerobitmask",
17085          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
17086        },
17087        {
17088          "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-arraylength",
17089          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
17090        },
17091        {
17092          "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-arraylength",
17093          "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
17094        }
17095      ],
17096      "(VK_NV_clip_space_w_scaling)": [
17097        {
17098          "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportWScalingEnable-01726",
17099          "text": " If the <code>viewportWScalingEnable</code> member of a <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> structure chained to the <code>pNext</code> chain is <code>VK_TRUE</code>, the <code>viewportCount</code> member of the <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> structure <strong class=\"purple\">must</strong> be equal to <code>viewportCount</code>"
17100        }
17101      ]
17102    },
17103    "vkCmdSetViewport": {
17104      "core": [
17105        {
17106          "vuid": "VUID-vkCmdSetViewport-None-01221",
17107          "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_VIEWPORT</code> dynamic state enabled"
17108        },
17109        {
17110          "vuid": "VUID-vkCmdSetViewport-firstViewport-01222",
17111          "text": " <code>firstViewport</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
17112        },
17113        {
17114          "vuid": "VUID-vkCmdSetViewport-firstViewport-01223",
17115          "text": " The sum of <code>firstViewport</code> and <code>viewportCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive"
17116        },
17117        {
17118          "vuid": "VUID-vkCmdSetViewport-firstViewport-01224",
17119          "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>firstViewport</code> <strong class=\"purple\">must</strong> be <code>0</code>"
17120        },
17121        {
17122          "vuid": "VUID-vkCmdSetViewport-viewportCount-01225",
17123          "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>viewportCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
17124        },
17125        {
17126          "vuid": "VUID-vkCmdSetViewport-commandBuffer-parameter",
17127          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
17128        },
17129        {
17130          "vuid": "VUID-vkCmdSetViewport-pViewports-parameter",
17131          "text": " <code>pViewports</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <code>VkViewport</code> structures"
17132        },
17133        {
17134          "vuid": "VUID-vkCmdSetViewport-commandBuffer-recording",
17135          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17136        },
17137        {
17138          "vuid": "VUID-vkCmdSetViewport-commandBuffer-cmdpool",
17139          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
17140        },
17141        {
17142          "vuid": "VUID-vkCmdSetViewport-viewportCount-arraylength",
17143          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
17144        }
17145      ]
17146    },
17147    "VkViewport": {
17148      "core": [
17149        {
17150          "vuid": "VUID-VkViewport-width-01770",
17151          "text": " <code>width</code> <strong class=\"purple\">must</strong> be greater than <code>0.0</code>"
17152        },
17153        {
17154          "vuid": "VUID-VkViewport-width-01771",
17155          "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewportDimensions</code>[0]"
17156        },
17157        {
17158          "vuid": "VUID-VkViewport-height-01773",
17159          "text": " The absolute value of <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewportDimensions</code>[1]"
17160        },
17161        {
17162          "vuid": "VUID-VkViewport-x-01774",
17163          "text": " <code>x</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>viewportBoundsRange</code>[0]"
17164        },
17165        {
17166          "vuid": "VUID-VkViewport-x-01232",
17167          "text": " <span class=\"eq\">(<code>x</code> &#43; <code>width</code>)</span> <strong class=\"purple\">must</strong> be less than or equal to <code>viewportBoundsRange</code>[1]"
17168        },
17169        {
17170          "vuid": "VUID-VkViewport-y-01775",
17171          "text": " <code>y</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>viewportBoundsRange</code>[0]"
17172        },
17173        {
17174          "vuid": "VUID-VkViewport-y-01233",
17175          "text": " <span class=\"eq\">(<code>y</code> &#43; <code>height</code>)</span> <strong class=\"purple\">must</strong> be less than or equal to <code>viewportBoundsRange</code>[1]"
17176        }
17177      ],
17178      "!(VK_VERSION_1_1,VK_KHR_maintenance1,VK_AMD_negative_viewport_height)": [
17179        {
17180          "vuid": "VUID-VkViewport-height-01772",
17181          "text": " <code>height</code> <strong class=\"purple\">must</strong> be greater than <code>0.0</code>"
17182        }
17183      ],
17184      "(VK_VERSION_1_1,VK_KHR_maintenance1,VK_AMD_negative_viewport_height)": [
17185        {
17186          "vuid": "VUID-VkViewport-y-01776",
17187          "text": " <code>y</code> <strong class=\"purple\">must</strong> be less than or equal to <code>viewportBoundsRange</code>[1]"
17188        },
17189        {
17190          "vuid": "VUID-VkViewport-y-01777",
17191          "text": " <span class=\"eq\">(<code>y</code> &#43; <code>height</code>)</span> <strong class=\"purple\">must</strong> be greater than or equal to <code>viewportBoundsRange</code>[0]"
17192        }
17193      ],
17194      "(VK_EXT_depth_range_unrestricted)": [
17195        {
17196          "vuid": "VUID-VkViewport-minDepth-01234",
17197          "text": " Unless <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is enabled <code>minDepth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
17198        },
17199        {
17200          "vuid": "VUID-VkViewport-maxDepth-01235",
17201          "text": " Unless <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is enabled <code>maxDepth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
17202        }
17203      ],
17204      "!(VK_EXT_depth_range_unrestricted)": [
17205        {
17206          "vuid": "VUID-VkViewport-minDepth-02540",
17207          "text": " <code>minDepth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
17208        },
17209        {
17210          "vuid": "VUID-VkViewport-maxDepth-02541",
17211          "text": " <code>maxDepth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
17212        }
17213      ]
17214    },
17215    "VkPipelineRasterizationStateCreateInfo": {
17216      "core": [
17217        {
17218          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-depthClampEnable-00782",
17219          "text": " If the <a href=\"#features-depthClamp\">depth clamping</a> feature is not enabled, <code>depthClampEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
17220        },
17221        {
17222          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-sType-sType",
17223          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO</code>"
17224        },
17225        {
17226          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-pNext-pNext",
17227          "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineRasterizationConservativeStateCreateInfoEXT\">VkPipelineRasterizationConservativeStateCreateInfoEXT</a>, <a href=\"#VkPipelineRasterizationDepthClipStateCreateInfoEXT\">VkPipelineRasterizationDepthClipStateCreateInfoEXT</a>, <a href=\"#VkPipelineRasterizationStateRasterizationOrderAMD\">VkPipelineRasterizationStateRasterizationOrderAMD</a>, or <a href=\"#VkPipelineRasterizationStateStreamCreateInfoEXT\">VkPipelineRasterizationStateStreamCreateInfoEXT</a>"
17228        },
17229        {
17230          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-sType-unique",
17231          "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
17232        },
17233        {
17234          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-flags-zerobitmask",
17235          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
17236        },
17237        {
17238          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-parameter",
17239          "text": " <code>polygonMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPolygonMode\">VkPolygonMode</a> value"
17240        },
17241        {
17242          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-cullMode-parameter",
17243          "text": " <code>cullMode</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCullModeFlagBits\">VkCullModeFlagBits</a> values"
17244        },
17245        {
17246          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-frontFace-parameter",
17247          "text": " <code>frontFace</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFrontFace\">VkFrontFace</a> value"
17248        }
17249      ],
17250      "!(VK_NV_fill_rectangle)": [
17251        {
17252          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01413",
17253          "text": " If the <a href=\"#features-fillModeNonSolid\">non-solid fill modes</a> feature is not enabled, <code>polygonMode</code> <strong class=\"purple\">must</strong> be <code>VK_POLYGON_MODE_FILL</code>"
17254        }
17255      ],
17256      "(VK_NV_fill_rectangle)": [
17257        {
17258          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01507",
17259          "text": " If the <a href=\"#features-fillModeNonSolid\">non-solid fill modes</a> feature is not enabled, <code>polygonMode</code> <strong class=\"purple\">must</strong> be <code>VK_POLYGON_MODE_FILL</code> or <code>VK_POLYGON_MODE_FILL_RECTANGLE_NV</code>"
17260        },
17261        {
17262          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01414",
17263          "text": " If the <code><a href=\"#VK_NV_fill_rectangle\">VK_NV_fill_rectangle</a></code> extension is not enabled, <code>polygonMode</code> <strong class=\"purple\">must</strong> not be <code>VK_POLYGON_MODE_FILL_RECTANGLE_NV</code>"
17264        }
17265      ]
17266    },
17267    "VkPipelineRasterizationDepthClipStateCreateInfoEXT": {
17268      "(VK_EXT_depth_clip_enable)": [
17269        {
17270          "vuid": "VUID-VkPipelineRasterizationDepthClipStateCreateInfoEXT-sType-sType",
17271          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT</code>"
17272        },
17273        {
17274          "vuid": "VUID-VkPipelineRasterizationDepthClipStateCreateInfoEXT-flags-zerobitmask",
17275          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
17276        }
17277      ]
17278    },
17279    "VkPipelineMultisampleStateCreateInfo": {
17280      "core": [
17281        {
17282          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sampleShadingEnable-00784",
17283          "text": " If the <a href=\"#features-sampleRateShading\">sample rate shading</a> feature is not enabled, <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
17284        },
17285        {
17286          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-alphaToOneEnable-00785",
17287          "text": " If the <a href=\"#features-alphaToOne\">alpha to one</a> feature is not enabled, <code>alphaToOneEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
17288        },
17289        {
17290          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-minSampleShading-00786",
17291          "text": " <code>minSampleShading</code> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[0,1]</span>"
17292        },
17293        {
17294          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sType-sType",
17295          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO</code>"
17296        },
17297        {
17298          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-pNext-pNext",
17299          "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineCoverageModulationStateCreateInfoNV\">VkPipelineCoverageModulationStateCreateInfoNV</a>, <a href=\"#VkPipelineCoverageToColorStateCreateInfoNV\">VkPipelineCoverageToColorStateCreateInfoNV</a>, or <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>"
17300        },
17301        {
17302          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sType-unique",
17303          "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
17304        },
17305        {
17306          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-flags-zerobitmask",
17307          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
17308        },
17309        {
17310          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-parameter",
17311          "text": " <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
17312        },
17313        {
17314          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-pSampleMask-parameter",
17315          "text": " If <code>pSampleMask</code> is not <code>NULL</code>, <code>pSampleMask</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of \\(\\lceil{\\mathit{rasterizationSamples} \\over 32}\\rceil\\) <code>VkSampleMask</code> values"
17316        }
17317      ],
17318      "(VK_NV_framebuffer_mixed_samples)": [
17319        {
17320          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-01415",
17321          "text": " If the <code>VK_NV_framebuffer_mixed_samples</code> extension is enabled, and if the subpass has any color attachments and <code>rasterizationSamples</code> is greater than the number of color samples, then <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
17322        }
17323      ]
17324    },
17325    "VkPipelineRasterizationStateStreamCreateInfoEXT": {
17326      "(VK_EXT_transform_feedback)": [
17327        {
17328          "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-geometryStreams-02324",
17329          "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>geometryStreams</code> <strong class=\"purple\">must</strong> be enabled"
17330        },
17331        {
17332          "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-rasterizationStream-02325",
17333          "text": " <code>rasterizationStream</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>::<code>maxTransformFeedbackStreams</code>"
17334        },
17335        {
17336          "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-rasterizationStream-02326",
17337          "text": " <code>rasterizationStream</code> <strong class=\"purple\">must</strong> be zero if <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>transformFeedbackRasterizationStreamSelect</code> is <code>VK_FALSE</code>"
17338        },
17339        {
17340          "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-sType-sType",
17341          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT</code>"
17342        },
17343        {
17344          "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-flags-zerobitmask",
17345          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
17346        }
17347      ]
17348    },
17349    "VkPipelineRasterizationStateRasterizationOrderAMD": {
17350      "(VK_AMD_rasterization_order)": [
17351        {
17352          "vuid": "VUID-VkPipelineRasterizationStateRasterizationOrderAMD-sType-sType",
17353          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD</code>"
17354        },
17355        {
17356          "vuid": "VUID-VkPipelineRasterizationStateRasterizationOrderAMD-rasterizationOrder-parameter",
17357          "text": " <code>rasterizationOrder</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRasterizationOrderAMD\">VkRasterizationOrderAMD</a> value"
17358        }
17359      ]
17360    },
17361    "VkPipelineSampleLocationsStateCreateInfoEXT": {
17362      "(VK_EXT_sample_locations)": [
17363        {
17364          "vuid": "VUID-VkPipelineSampleLocationsStateCreateInfoEXT-sType-sType",
17365          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT</code>"
17366        },
17367        {
17368          "vuid": "VUID-VkPipelineSampleLocationsStateCreateInfoEXT-sampleLocationsInfo-parameter",
17369          "text": " <code>sampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampleLocationsInfoEXT</code> structure"
17370        }
17371      ]
17372    },
17373    "VkSampleLocationsInfoEXT": {
17374      "(VK_EXT_sample_locations)": [
17375        {
17376          "vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsPerPixel-01526",
17377          "text": " <code>sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> be a bit value that is set in <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>::<code>sampleLocationSampleCounts</code>"
17378        },
17379        {
17380          "vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsCount-01527",
17381          "text": " <code>sampleLocationsCount</code> <strong class=\"purple\">must</strong> equal <span class=\"eq\"><code>sampleLocationsPerPixel</code> {times} <code>sampleLocationGridSize.width</code> {times} <code>sampleLocationGridSize.height</code></span>"
17382        },
17383        {
17384          "vuid": "VUID-VkSampleLocationsInfoEXT-sType-sType",
17385          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT</code>"
17386        },
17387        {
17388          "vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsPerPixel-parameter",
17389          "text": " If <code>sampleLocationsPerPixel</code> is not <code>0</code>, <code>sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
17390        },
17391        {
17392          "vuid": "VUID-VkSampleLocationsInfoEXT-pSampleLocations-parameter",
17393          "text": " If <code>sampleLocationsCount</code> is not <code>0</code>, <code>pSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>sampleLocationsCount</code> <code>VkSampleLocationEXT</code> structures"
17394        }
17395      ]
17396    },
17397    "vkCmdSetSampleLocationsEXT": {
17398      "(VK_EXT_sample_locations)": [
17399        {
17400          "vuid": "VUID-vkCmdSetSampleLocationsEXT-None-01528",
17401          "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> dynamic state enabled"
17402        },
17403        {
17404          "vuid": "VUID-vkCmdSetSampleLocationsEXT-sampleLocationsPerPixel-01529",
17405          "text": " The <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with"
17406        },
17407        {
17408          "vuid": "VUID-vkCmdSetSampleLocationsEXT-variableSampleLocations-01530",
17409          "text": " If <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>::<code>variableSampleLocations</code> is <code>VK_FALSE</code> then the current render pass <strong class=\"purple\">must</strong> have been begun by specifying a <a href=\"#VkRenderPassSampleLocationsBeginInfoEXT\">VkRenderPassSampleLocationsBeginInfoEXT</a> structure whose <code>pPostSubpassSampleLocations</code> member contains an element with a <code>subpassIndex</code> matching the current subpass index and the <code>sampleLocationsInfo</code> member of that element <strong class=\"purple\">must</strong> match the sample locations state pointed to by <code>pSampleLocationsInfo</code>"
17410        },
17411        {
17412          "vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-parameter",
17413          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
17414        },
17415        {
17416          "vuid": "VUID-vkCmdSetSampleLocationsEXT-pSampleLocationsInfo-parameter",
17417          "text": " <code>pSampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSampleLocationsInfoEXT</code> structure"
17418        },
17419        {
17420          "vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-recording",
17421          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17422        },
17423        {
17424          "vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-cmdpool",
17425          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
17426        }
17427      ]
17428    },
17429    "VkPipelineViewportShadingRateImageStateCreateInfoNV": {
17430      "(VK_NV_shading_rate_image)": [
17431        {
17432          "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02054",
17433          "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>viewportCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>"
17434        },
17435        {
17436          "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02055",
17437          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
17438        },
17439        {
17440          "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-shadingRateImageEnable-02056",
17441          "text": " If <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, <code>viewportCount</code> <strong class=\"purple\">must</strong> be equal to the <code>viewportCount</code> member of <code>VkPipelineViewportStateCreateInfo</code>"
17442        },
17443        {
17444          "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-pDynamicStates-02057",
17445          "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code>, <code>pShadingRatePalettes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> <code>VkShadingRatePaletteNV</code> structures"
17446        },
17447        {
17448          "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-sType-sType",
17449          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV</code>"
17450        },
17451        {
17452          "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-pShadingRatePalettes-parameter",
17453          "text": " If <code>viewportCount</code> is not <code>0</code>, and <code>pShadingRatePalettes</code> is not <code>NULL</code>, <code>pShadingRatePalettes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <code>VkShadingRatePaletteNV</code> structures"
17454        }
17455      ]
17456    },
17457    "vkCmdBindShadingRateImageNV": {
17458      "(VK_NV_shading_rate_image)": [
17459        {
17460          "vuid": "VUID-vkCmdBindShadingRateImageNV-None-02058",
17461          "text": " The <a href=\"#features-shadingRateImage\">shading rate image</a> feature <strong class=\"purple\">must</strong> be enabled."
17462        },
17463        {
17464          "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02059",
17465          "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageView\">VkImageView</a> handle of type <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>."
17466        },
17467        {
17468          "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02060",
17469          "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> have a format of <code>VK_FORMAT_R8_UINT</code>."
17470        },
17471        {
17472          "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02061",
17473          "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>"
17474        },
17475        {
17476          "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02062",
17477          "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageLayout</code> <strong class=\"purple\">must</strong> match the actual <a href=\"#VkImageLayout\">VkImageLayout</a> of each subresource accessible from <code>imageView</code> at the time the subresource is accessed."
17478        },
17479        {
17480          "vuid": "VUID-vkCmdBindShadingRateImageNV-imageLayout-02063",
17481          "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>."
17482        },
17483        {
17484          "vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-parameter",
17485          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
17486        },
17487        {
17488          "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-parameter",
17489          "text": " <code>imageView</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageView</code> handle"
17490        },
17491        {
17492          "vuid": "VUID-vkCmdBindShadingRateImageNV-imageLayout-parameter",
17493          "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
17494        },
17495        {
17496          "vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-recording",
17497          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17498        },
17499        {
17500          "vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-cmdpool",
17501          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
17502        },
17503        {
17504          "vuid": "VUID-vkCmdBindShadingRateImageNV-commonparent",
17505          "text": " Both of <code>commandBuffer</code>, and <code>imageView</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
17506        }
17507      ]
17508    },
17509    "vkCmdSetViewportShadingRatePaletteNV": {
17510      "(VK_NV_shading_rate_image)": [
17511        {
17512          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-None-02064",
17513          "text": " The <a href=\"#features-shadingRateImage\">shading rate image</a> feature <strong class=\"purple\">must</strong> be enabled."
17514        },
17515        {
17516          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-None-02065",
17517          "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled"
17518        },
17519        {
17520          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02066",
17521          "text": " <code>firstViewport</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
17522        },
17523        {
17524          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02067",
17525          "text": " The sum of <code>firstViewport</code> and <code>viewportCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive"
17526        },
17527        {
17528          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02068",
17529          "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>firstViewport</code> <strong class=\"purple\">must</strong> be <code>0</code>"
17530        },
17531        {
17532          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-viewportCount-02069",
17533          "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>viewportCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
17534        },
17535        {
17536          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-parameter",
17537          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
17538        },
17539        {
17540          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-pShadingRatePalettes-parameter",
17541          "text": " <code>pShadingRatePalettes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <code>VkShadingRatePaletteNV</code> structures"
17542        },
17543        {
17544          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-recording",
17545          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17546        },
17547        {
17548          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-cmdpool",
17549          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
17550        },
17551        {
17552          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-viewportCount-arraylength",
17553          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
17554        }
17555      ]
17556    },
17557    "VkShadingRatePaletteNV": {
17558      "(VK_NV_shading_rate_image)": [
17559        {
17560          "vuid": "VUID-VkShadingRatePaletteNV-shadingRatePaletteEntryCount-02071",
17561          "text": " <code>shadingRatePaletteEntryCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceShadingRateImagePropertiesNV</code>::<code>shadingRatePaletteSize</code>, inclusive"
17562        },
17563        {
17564          "vuid": "VUID-VkShadingRatePaletteNV-pShadingRatePaletteEntries-parameter",
17565          "text": " <code>pShadingRatePaletteEntries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>shadingRatePaletteEntryCount</code> valid <a href=\"#VkShadingRatePaletteEntryNV\">VkShadingRatePaletteEntryNV</a> values"
17566        },
17567        {
17568          "vuid": "VUID-VkShadingRatePaletteNV-shadingRatePaletteEntryCount-arraylength",
17569          "text": " <code>shadingRatePaletteEntryCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
17570        }
17571      ]
17572    },
17573    "VkPipelineViewportCoarseSampleOrderStateCreateInfoNV": {
17574      "(VK_NV_shading_rate_image)": [
17575        {
17576          "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sampleOrderType-02072",
17577          "text": " If <code>sampleOrderType</code> is not <code>VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV</code>, <code>customSamplerOrderCount</code> <strong class=\"purple\">must</strong> be <code>0</code>"
17578        },
17579        {
17580          "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-pCustomSampleOrders-02234",
17581          "text": " The array <code>pCustomSampleOrders</code> <strong class=\"purple\">must</strong> not contain two structures with matching values for both the <code>shadingRate</code> and <code>sampleCount</code> members."
17582        },
17583        {
17584          "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sType-sType",
17585          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV</code>"
17586        },
17587        {
17588          "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sampleOrderType-parameter",
17589          "text": " <code>sampleOrderType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoarseSampleOrderTypeNV\">VkCoarseSampleOrderTypeNV</a> value"
17590        },
17591        {
17592          "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-pCustomSampleOrders-parameter",
17593          "text": " If <code>customSampleOrderCount</code> is not <code>0</code>, <code>pCustomSampleOrders</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>customSampleOrderCount</code> valid <code>VkCoarseSampleOrderCustomNV</code> structures"
17594        }
17595      ]
17596    },
17597    "VkCoarseSampleOrderCustomNV": {
17598      "(VK_NV_shading_rate_image)": [
17599        {
17600          "vuid": "VUID-VkCoarseSampleOrderCustomNV-shadingRate-02073",
17601          "text": " <code>shadingRate</code> <strong class=\"purple\">must</strong> be a shading rate that generates fragments with more than one pixel."
17602        },
17603        {
17604          "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleCount-02074",
17605          "text": " <code>sampleCount</code> <strong class=\"purple\">must</strong> correspond to a sample count enumerated in <a href=\"#VkSampleCountFlags\">VkSampleCountFlags</a> whose corresponding bit is set in <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>framebufferNoAttachmentsSampleCounts</code>."
17606        },
17607        {
17608          "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-02075",
17609          "text": " <code>sampleLocationCount</code> <strong class=\"purple\">must</strong> be equal to the product of <code>sampleCount</code>, the fragment width for <code>shadingRate</code>, and the fragment height for <code>shadingRate</code>."
17610        },
17611        {
17612          "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-02076",
17613          "text": " <code>sampleLocationCount</code> <strong class=\"purple\">must</strong> be less than or equal to the value of <code>VkPhysicalDeviceShadingRateImagePropertiesNV</code>::<code>shadingRateMaxCoarseSamples</code>."
17614        },
17615        {
17616          "vuid": "VUID-VkCoarseSampleOrderCustomNV-pSampleLocations-02077",
17617          "text": " The array <code>pSampleLocations</code> <strong class=\"purple\">must</strong> contain exactly one entry for every combination of valid values for <code>pixelX</code>, <code>pixelY</code>, and <code>sample</code> in the structure <a href=\"#VkCoarseSampleOrderCustomNV\">VkCoarseSampleOrderCustomNV</a>."
17618        },
17619        {
17620          "vuid": "VUID-VkCoarseSampleOrderCustomNV-shadingRate-parameter",
17621          "text": " <code>shadingRate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShadingRatePaletteEntryNV\">VkShadingRatePaletteEntryNV</a> value"
17622        },
17623        {
17624          "vuid": "VUID-VkCoarseSampleOrderCustomNV-pSampleLocations-parameter",
17625          "text": " <code>pSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>sampleLocationCount</code> <code>VkCoarseSampleLocationNV</code> structures"
17626        },
17627        {
17628          "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-arraylength",
17629          "text": " <code>sampleLocationCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
17630        }
17631      ]
17632    },
17633    "VkCoarseSampleLocationNV": {
17634      "(VK_NV_shading_rate_image)": [
17635        {
17636          "vuid": "VUID-VkCoarseSampleLocationNV-pixelX-02078",
17637          "text": " <code>pixelX</code> <strong class=\"purple\">must</strong> be less than the width (in pixels) of the fragment."
17638        },
17639        {
17640          "vuid": "VUID-VkCoarseSampleLocationNV-pixelY-02079",
17641          "text": " <code>pixelY</code> <strong class=\"purple\">must</strong> be less than the height (in pixels) of the fragment."
17642        },
17643        {
17644          "vuid": "VUID-VkCoarseSampleLocationNV-sample-02080",
17645          "text": " <code>sample</code> <strong class=\"purple\">must</strong> be less than the number of coverage samples in each pixel belonging to the fragment."
17646        }
17647      ]
17648    },
17649    "vkCmdSetCoarseSampleOrderNV": {
17650      "(VK_NV_shading_rate_image)": [
17651        {
17652          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-sampleOrderType-02081",
17653          "text": " If <code>sampleOrderType</code> is not <code>VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV</code>, <code>customSamplerOrderCount</code> <strong class=\"purple\">must</strong> be <code>0</code>"
17654        },
17655        {
17656          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-pCustomSampleOrders-02235",
17657          "text": " The array <code>pCustomSampleOrders</code> <strong class=\"purple\">must</strong> not contain two structures with matching values for both the <code>shadingRate</code> and <code>sampleCount</code> members."
17658        },
17659        {
17660          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-parameter",
17661          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
17662        },
17663        {
17664          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-sampleOrderType-parameter",
17665          "text": " <code>sampleOrderType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoarseSampleOrderTypeNV\">VkCoarseSampleOrderTypeNV</a> value"
17666        },
17667        {
17668          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-pCustomSampleOrders-parameter",
17669          "text": " If <code>customSampleOrderCount</code> is not <code>0</code>, <code>pCustomSampleOrders</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>customSampleOrderCount</code> valid <code>VkCoarseSampleOrderCustomNV</code> structures"
17670        },
17671        {
17672          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-recording",
17673          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17674        },
17675        {
17676          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-cmdpool",
17677          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
17678        }
17679      ]
17680    },
17681    "vkCmdSetLineWidth": {
17682      "core": [
17683        {
17684          "vuid": "VUID-vkCmdSetLineWidth-None-00787",
17685          "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_LINE_WIDTH</code> dynamic state enabled"
17686        },
17687        {
17688          "vuid": "VUID-vkCmdSetLineWidth-lineWidth-00788",
17689          "text": " If the <a href=\"#features-wideLines\">wide lines</a> feature is not enabled, <code>lineWidth</code> <strong class=\"purple\">must</strong> be <code>1.0</code>"
17690        },
17691        {
17692          "vuid": "VUID-vkCmdSetLineWidth-commandBuffer-parameter",
17693          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
17694        },
17695        {
17696          "vuid": "VUID-vkCmdSetLineWidth-commandBuffer-recording",
17697          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17698        },
17699        {
17700          "vuid": "VUID-vkCmdSetLineWidth-commandBuffer-cmdpool",
17701          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
17702        }
17703      ]
17704    },
17705    "vkCmdSetDepthBias": {
17706      "core": [
17707        {
17708          "vuid": "VUID-vkCmdSetDepthBias-None-00789",
17709          "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code> dynamic state enabled"
17710        },
17711        {
17712          "vuid": "VUID-vkCmdSetDepthBias-depthBiasClamp-00790",
17713          "text": " If the <a href=\"#features-depthBiasClamp\">depth bias clamping</a> feature is not enabled, <code>depthBiasClamp</code> <strong class=\"purple\">must</strong> be <code>0.0</code>"
17714        },
17715        {
17716          "vuid": "VUID-vkCmdSetDepthBias-commandBuffer-parameter",
17717          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
17718        },
17719        {
17720          "vuid": "VUID-vkCmdSetDepthBias-commandBuffer-recording",
17721          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17722        },
17723        {
17724          "vuid": "VUID-vkCmdSetDepthBias-commandBuffer-cmdpool",
17725          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
17726        }
17727      ]
17728    },
17729    "VkPipelineRasterizationConservativeStateCreateInfoEXT": {
17730      "(VK_EXT_conservative_rasterization)": [
17731        {
17732          "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-extraPrimitiveOverestimationSize-01769",
17733          "text": " <code>extraPrimitiveOverestimationSize</code> <strong class=\"purple\">must</strong> be in the range of <code>0.0</code> to <code>VkPhysicalDeviceConservativeRasterizationPropertiesEXT</code>::<code>maxExtraPrimitiveOverestimationSize</code> inclusive"
17734        },
17735        {
17736          "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-sType-sType",
17737          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT</code>"
17738        },
17739        {
17740          "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-flags-zerobitmask",
17741          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
17742        },
17743        {
17744          "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-conservativeRasterizationMode-parameter",
17745          "text": " <code>conservativeRasterizationMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkConservativeRasterizationModeEXT\">VkConservativeRasterizationModeEXT</a> value"
17746        }
17747      ]
17748    },
17749    "VkPipelineDiscardRectangleStateCreateInfoEXT": {
17750      "(VK_EXT_discard_rectangles)": [
17751        {
17752          "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-discardRectangleCount-00582",
17753          "text": " <code>discardRectangleCount</code> <strong class=\"purple\">must</strong> be between <code>0</code> and <code>VkPhysicalDeviceDiscardRectanglePropertiesEXT</code>::<code>maxDiscardRectangles</code>, inclusive"
17754        },
17755        {
17756          "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-sType-sType",
17757          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT</code>"
17758        },
17759        {
17760          "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-flags-zerobitmask",
17761          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
17762        },
17763        {
17764          "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-discardRectangleMode-parameter",
17765          "text": " <code>discardRectangleMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDiscardRectangleModeEXT\">VkDiscardRectangleModeEXT</a> value"
17766        }
17767      ]
17768    },
17769    "vkCmdSetDiscardRectangleEXT": {
17770      "(VK_EXT_discard_rectangles)": [
17771        {
17772          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-None-00583",
17773          "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code> dynamic state enabled"
17774        },
17775        {
17776          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-firstDiscardRectangle-00585",
17777          "text": " The sum of <code>firstDiscardRectangle</code> and <code>discardRectangleCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceDiscardRectanglePropertiesEXT\">VkPhysicalDeviceDiscardRectanglePropertiesEXT</a>::<code>maxDiscardRectangles</code>"
17778        },
17779        {
17780          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-x-00587",
17781          "text": " The <code>x</code> and <code>y</code> member of <code>offset</code> in each <a href=\"#VkRect2D\">VkRect2D</a> element of <code>pDiscardRectangles</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>0</code>"
17782        },
17783        {
17784          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-offset-00588",
17785          "text": " Evaluation of <span class=\"eq\">(<code>offset.x</code> &#43; <code>extent.width</code>)</span> in each <a href=\"#VkRect2D\">VkRect2D</a> element of <code>pDiscardRectangles</code> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow"
17786        },
17787        {
17788          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-offset-00589",
17789          "text": " Evaluation of <span class=\"eq\">(<code>offset.y</code> &#43; <code>extent.height</code>)</span> in each <a href=\"#VkRect2D\">VkRect2D</a> element of <code>pDiscardRectangles</code> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow"
17790        },
17791        {
17792          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-parameter",
17793          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
17794        },
17795        {
17796          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-pDiscardRectangles-parameter",
17797          "text": " <code>pDiscardRectangles</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>discardRectangleCount</code> <code>VkRect2D</code> structures"
17798        },
17799        {
17800          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-recording",
17801          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17802        },
17803        {
17804          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-cmdpool",
17805          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
17806        },
17807        {
17808          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-discardRectangleCount-arraylength",
17809          "text": " <code>discardRectangleCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
17810        }
17811      ]
17812    },
17813    "vkCmdSetScissor": {
17814      "core": [
17815        {
17816          "vuid": "VUID-vkCmdSetScissor-None-00590",
17817          "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_SCISSOR</code> dynamic state enabled"
17818        },
17819        {
17820          "vuid": "VUID-vkCmdSetScissor-firstScissor-00591",
17821          "text": " <code>firstScissor</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
17822        },
17823        {
17824          "vuid": "VUID-vkCmdSetScissor-firstScissor-00592",
17825          "text": " The sum of <code>firstScissor</code> and <code>scissorCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive"
17826        },
17827        {
17828          "vuid": "VUID-vkCmdSetScissor-firstScissor-00593",
17829          "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>firstScissor</code> <strong class=\"purple\">must</strong> be <code>0</code>"
17830        },
17831        {
17832          "vuid": "VUID-vkCmdSetScissor-scissorCount-00594",
17833          "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>scissorCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
17834        },
17835        {
17836          "vuid": "VUID-vkCmdSetScissor-x-00595",
17837          "text": " The <code>x</code> and <code>y</code> members of <code>offset</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>0</code>"
17838        },
17839        {
17840          "vuid": "VUID-vkCmdSetScissor-offset-00596",
17841          "text": " Evaluation of <span class=\"eq\">(<code>offset.x</code> &#43; <code>extent.width</code>)</span> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow"
17842        },
17843        {
17844          "vuid": "VUID-vkCmdSetScissor-offset-00597",
17845          "text": " Evaluation of <span class=\"eq\">(<code>offset.y</code> &#43; <code>extent.height</code>)</span> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow"
17846        },
17847        {
17848          "vuid": "VUID-vkCmdSetScissor-commandBuffer-parameter",
17849          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
17850        },
17851        {
17852          "vuid": "VUID-vkCmdSetScissor-pScissors-parameter",
17853          "text": " <code>pScissors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>scissorCount</code> <code>VkRect2D</code> structures"
17854        },
17855        {
17856          "vuid": "VUID-vkCmdSetScissor-commandBuffer-recording",
17857          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17858        },
17859        {
17860          "vuid": "VUID-vkCmdSetScissor-commandBuffer-cmdpool",
17861          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
17862        },
17863        {
17864          "vuid": "VUID-vkCmdSetScissor-scissorCount-arraylength",
17865          "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
17866        }
17867      ]
17868    },
17869    "VkPipelineViewportExclusiveScissorStateCreateInfoNV": {
17870      "(VK_NV_scissor_exclusive)": [
17871        {
17872          "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02027",
17873          "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>"
17874        },
17875        {
17876          "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02028",
17877          "text": " <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
17878        },
17879        {
17880          "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02029",
17881          "text": " <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or identical to the <code>viewportCount</code> member of <code>VkPipelineViewportStateCreateInfo</code>"
17882        },
17883        {
17884          "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-pDynamicStates-02030",
17885          "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code> and <code>exclusiveScissorCount</code> is not <code>0</code>, <code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>exclusiveScissorCount</code> <code>VkRect2D</code> structures"
17886        },
17887        {
17888          "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-sType-sType",
17889          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV</code>"
17890        },
17891        {
17892          "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-pExclusiveScissors-parameter",
17893          "text": " If <code>exclusiveScissorCount</code> is not <code>0</code>, and <code>pExclusiveScissors</code> is not <code>NULL</code>, <code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>exclusiveScissorCount</code> <code>VkRect2D</code> structures"
17894        }
17895      ]
17896    },
17897    "vkCmdSetExclusiveScissorNV": {
17898      "(VK_NV_scissor_exclusive)": [
17899        {
17900          "vuid": "VUID-vkCmdSetExclusiveScissorNV-None-02031",
17901          "text": " The <a href=\"#features-exclusiveScissor\">exclusive scissor</a> feature <strong class=\"purple\">must</strong> be enabled."
17902        },
17903        {
17904          "vuid": "VUID-vkCmdSetExclusiveScissorNV-None-02032",
17905          "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code> dynamic state enabled"
17906        },
17907        {
17908          "vuid": "VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02033",
17909          "text": " <code>firstExclusiveScissor</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
17910        },
17911        {
17912          "vuid": "VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02034",
17913          "text": " The sum of <code>firstExclusiveScissor</code> and <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive"
17914        },
17915        {
17916          "vuid": "VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02035",
17917          "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>firstExclusiveScissor</code> <strong class=\"purple\">must</strong> be <code>0</code>"
17918        },
17919        {
17920          "vuid": "VUID-vkCmdSetExclusiveScissorNV-exclusiveScissorCount-02036",
17921          "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
17922        },
17923        {
17924          "vuid": "VUID-vkCmdSetExclusiveScissorNV-x-02037",
17925          "text": " The <code>x</code> and <code>y</code> members of <code>offset</code> in each member of <code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>0</code>"
17926        },
17927        {
17928          "vuid": "VUID-vkCmdSetExclusiveScissorNV-offset-02038",
17929          "text": " Evaluation of <span class=\"eq\">(<code>offset.x</code> &#43; <code>extent.width</code>)</span> for each member of <code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow"
17930        },
17931        {
17932          "vuid": "VUID-vkCmdSetExclusiveScissorNV-offset-02039",
17933          "text": " Evaluation of <span class=\"eq\">(<code>offset.y</code> &#43; <code>extent.height</code>)</span> for each member of <code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow"
17934        },
17935        {
17936          "vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-parameter",
17937          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
17938        },
17939        {
17940          "vuid": "VUID-vkCmdSetExclusiveScissorNV-pExclusiveScissors-parameter",
17941          "text": " <code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>exclusiveScissorCount</code> <code>VkRect2D</code> structures"
17942        },
17943        {
17944          "vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-recording",
17945          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17946        },
17947        {
17948          "vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-cmdpool",
17949          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
17950        },
17951        {
17952          "vuid": "VUID-vkCmdSetExclusiveScissorNV-exclusiveScissorCount-arraylength",
17953          "text": " <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
17954        }
17955      ]
17956    },
17957    "VkPipelineDepthStencilStateCreateInfo": {
17958      "core": [
17959        {
17960          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-depthBoundsTestEnable-00598",
17961          "text": " If the <a href=\"#features-depthBounds\">depth bounds testing</a> feature is not enabled, <code>depthBoundsTestEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
17962        },
17963        {
17964          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-sType-sType",
17965          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO</code>"
17966        },
17967        {
17968          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-pNext-pNext",
17969          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
17970        },
17971        {
17972          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-flags-zerobitmask",
17973          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
17974        },
17975        {
17976          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-depthCompareOp-parameter",
17977          "text": " <code>depthCompareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value"
17978        },
17979        {
17980          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-front-parameter",
17981          "text": " <code>front</code> <strong class=\"purple\">must</strong> be a valid <code>VkStencilOpState</code> structure"
17982        },
17983        {
17984          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-back-parameter",
17985          "text": " <code>back</code> <strong class=\"purple\">must</strong> be a valid <code>VkStencilOpState</code> structure"
17986        }
17987      ]
17988    },
17989    "vkCmdSetDepthBounds": {
17990      "core": [
17991        {
17992          "vuid": "VUID-vkCmdSetDepthBounds-None-00599",
17993          "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code> dynamic state enabled"
17994        },
17995        {
17996          "vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-parameter",
17997          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
17998        },
17999        {
18000          "vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-recording",
18001          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18002        },
18003        {
18004          "vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-cmdpool",
18005          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
18006        }
18007      ],
18008      "(VK_EXT_depth_range_unrestricted)": [
18009        {
18010          "vuid": "VUID-vkCmdSetDepthBounds-minDepthBounds-00600",
18011          "text": " Unless the <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is enabled <code>minDepthBounds</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
18012        },
18013        {
18014          "vuid": "VUID-vkCmdSetDepthBounds-maxDepthBounds-00601",
18015          "text": " Unless the <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is enabled <code>maxDepthBounds</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
18016        }
18017      ],
18018      "!(VK_EXT_depth_range_unrestricted)": [
18019        {
18020          "vuid": "VUID-vkCmdSetDepthBounds-minDepthBounds-02508",
18021          "text": " <code>minDepthBounds</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
18022        },
18023        {
18024          "vuid": "VUID-vkCmdSetDepthBounds-maxDepthBounds-02509",
18025          "text": " <code>maxDepthBounds</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
18026        }
18027      ]
18028    },
18029    "VkStencilOpState": {
18030      "core": [
18031        {
18032          "vuid": "VUID-VkStencilOpState-failOp-parameter",
18033          "text": " <code>failOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value"
18034        },
18035        {
18036          "vuid": "VUID-VkStencilOpState-passOp-parameter",
18037          "text": " <code>passOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value"
18038        },
18039        {
18040          "vuid": "VUID-VkStencilOpState-depthFailOp-parameter",
18041          "text": " <code>depthFailOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value"
18042        },
18043        {
18044          "vuid": "VUID-VkStencilOpState-compareOp-parameter",
18045          "text": " <code>compareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value"
18046        }
18047      ]
18048    },
18049    "vkCmdSetStencilCompareMask": {
18050      "core": [
18051        {
18052          "vuid": "VUID-vkCmdSetStencilCompareMask-None-00602",
18053          "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK</code> dynamic state enabled"
18054        },
18055        {
18056          "vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-parameter",
18057          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
18058        },
18059        {
18060          "vuid": "VUID-vkCmdSetStencilCompareMask-faceMask-parameter",
18061          "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values"
18062        },
18063        {
18064          "vuid": "VUID-vkCmdSetStencilCompareMask-faceMask-requiredbitmask",
18065          "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
18066        },
18067        {
18068          "vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-recording",
18069          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18070        },
18071        {
18072          "vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-cmdpool",
18073          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
18074        }
18075      ]
18076    },
18077    "vkCmdSetStencilWriteMask": {
18078      "core": [
18079        {
18080          "vuid": "VUID-vkCmdSetStencilWriteMask-None-00603",
18081          "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> dynamic state enabled"
18082        },
18083        {
18084          "vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-parameter",
18085          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
18086        },
18087        {
18088          "vuid": "VUID-vkCmdSetStencilWriteMask-faceMask-parameter",
18089          "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values"
18090        },
18091        {
18092          "vuid": "VUID-vkCmdSetStencilWriteMask-faceMask-requiredbitmask",
18093          "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
18094        },
18095        {
18096          "vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-recording",
18097          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18098        },
18099        {
18100          "vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-cmdpool",
18101          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
18102        }
18103      ]
18104    },
18105    "vkCmdSetStencilReference": {
18106      "core": [
18107        {
18108          "vuid": "VUID-vkCmdSetStencilReference-None-00604",
18109          "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_STENCIL_REFERENCE</code> dynamic state enabled"
18110        },
18111        {
18112          "vuid": "VUID-vkCmdSetStencilReference-commandBuffer-parameter",
18113          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
18114        },
18115        {
18116          "vuid": "VUID-vkCmdSetStencilReference-faceMask-parameter",
18117          "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values"
18118        },
18119        {
18120          "vuid": "VUID-vkCmdSetStencilReference-faceMask-requiredbitmask",
18121          "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
18122        },
18123        {
18124          "vuid": "VUID-vkCmdSetStencilReference-commandBuffer-recording",
18125          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18126        },
18127        {
18128          "vuid": "VUID-vkCmdSetStencilReference-commandBuffer-cmdpool",
18129          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
18130        }
18131      ]
18132    },
18133    "VkPipelineRepresentativeFragmentTestStateCreateInfoNV": {
18134      "(VK_NV_representative_fragment_test)": [
18135        {
18136          "vuid": "VUID-VkPipelineRepresentativeFragmentTestStateCreateInfoNV-sType-sType",
18137          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV</code>"
18138        }
18139      ]
18140    },
18141    "VkPipelineCoverageToColorStateCreateInfoNV": {
18142      "(VK_NV_fragment_coverage_to_color)": [
18143        {
18144          "vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-coverageToColorEnable-01404",
18145          "text": " If <code>coverageToColorEnable</code> is <code>VK_TRUE</code>, then the render pass subpass indicated by <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>renderPass</code> and <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>subpass</code> <strong class=\"purple\">must</strong> have a color attachment at the location selected by <code>coverageToColorLocation</code>, with a <a href=\"#VkFormat\">VkFormat</a> of <code>VK_FORMAT_R8_UINT</code>, <code>VK_FORMAT_R8_SINT</code>, <code>VK_FORMAT_R16_UINT</code>, <code>VK_FORMAT_R16_SINT</code>, <code>VK_FORMAT_R32_UINT</code>, or <code>VK_FORMAT_R32_SINT</code>"
18146        },
18147        {
18148          "vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-sType-sType",
18149          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV</code>"
18150        },
18151        {
18152          "vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-flags-zerobitmask",
18153          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
18154        }
18155      ]
18156    },
18157    "VkPipelineCoverageModulationStateCreateInfoNV": {
18158      "(VK_NV_framebuffer_mixed_samples)": [
18159        {
18160          "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationTableEnable-01405",
18161          "text": " If <code>coverageModulationTableEnable</code> is <code>VK_TRUE</code>, <code>coverageModulationTableCount</code> <strong class=\"purple\">must</strong> be equal to the number of rasterization samples divided by the number of color samples in the subpass."
18162        },
18163        {
18164          "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-sType-sType",
18165          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV</code>"
18166        },
18167        {
18168          "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-flags-zerobitmask",
18169          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
18170        },
18171        {
18172          "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationMode-parameter",
18173          "text": " <code>coverageModulationMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoverageModulationModeNV\">VkCoverageModulationModeNV</a> value"
18174        }
18175      ]
18176    },
18177    "VkPipelineColorBlendStateCreateInfo": {
18178      "core": [
18179        {
18180          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605",
18181          "text": " If the <a href=\"#features-independentBlend\">independent blending</a> feature is not enabled, all elements of <code>pAttachments</code> <strong class=\"purple\">must</strong> be identical"
18182        },
18183        {
18184          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00606",
18185          "text": " If the <a href=\"#features-logicOp\">logic operations</a> feature is not enabled, <code>logicOpEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
18186        },
18187        {
18188          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00607",
18189          "text": " If <code>logicOpEnable</code> is <code>VK_TRUE</code>, <code>logicOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkLogicOp\">VkLogicOp</a> value"
18190        },
18191        {
18192          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-sType-sType",
18193          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO</code>"
18194        },
18195        {
18196          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pNext-pNext",
18197          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineColorBlendAdvancedStateCreateInfoEXT\">VkPipelineColorBlendAdvancedStateCreateInfoEXT</a>"
18198        },
18199        {
18200          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-flags-zerobitmask",
18201          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
18202        },
18203        {
18204          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-parameter",
18205          "text": " If <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <code>VkPipelineColorBlendAttachmentState</code> structures"
18206        }
18207      ]
18208    },
18209    "VkPipelineColorBlendAttachmentState": {
18210      "core": [
18211        {
18212          "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-00608",
18213          "text": " If the <a href=\"#features-dualSrcBlend\">dual source blending</a> feature is not enabled, <code>srcColorBlendFactor</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_FACTOR_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_SRC1_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</code>"
18214        },
18215        {
18216          "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-00609",
18217          "text": " If the <a href=\"#features-dualSrcBlend\">dual source blending</a> feature is not enabled, <code>dstColorBlendFactor</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_FACTOR_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_SRC1_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</code>"
18218        },
18219        {
18220          "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-00610",
18221          "text": " If the <a href=\"#features-dualSrcBlend\">dual source blending</a> feature is not enabled, <code>srcAlphaBlendFactor</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_FACTOR_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_SRC1_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</code>"
18222        },
18223        {
18224          "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-00611",
18225          "text": " If the <a href=\"#features-dualSrcBlend\">dual source blending</a> feature is not enabled, <code>dstAlphaBlendFactor</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_FACTOR_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_SRC1_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</code>"
18226        },
18227        {
18228          "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-parameter",
18229          "text": " <code>srcColorBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value"
18230        },
18231        {
18232          "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-parameter",
18233          "text": " <code>dstColorBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value"
18234        },
18235        {
18236          "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-parameter",
18237          "text": " <code>colorBlendOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOp\">VkBlendOp</a> value"
18238        },
18239        {
18240          "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-parameter",
18241          "text": " <code>srcAlphaBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value"
18242        },
18243        {
18244          "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-parameter",
18245          "text": " <code>dstAlphaBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value"
18246        },
18247        {
18248          "vuid": "VUID-VkPipelineColorBlendAttachmentState-alphaBlendOp-parameter",
18249          "text": " <code>alphaBlendOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOp\">VkBlendOp</a> value"
18250        },
18251        {
18252          "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorWriteMask-parameter",
18253          "text": " <code>colorWriteMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkColorComponentFlagBits\">VkColorComponentFlagBits</a> values"
18254        }
18255      ],
18256      "(VK_EXT_blend_operation_advanced)": [
18257        {
18258          "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01406",
18259          "text": " If either of <code>colorBlendOp</code> or <code>alphaBlendOp</code> is an <a href=\"#framebuffer-blend-advanced\">advanced blend operation</a>, then <code>colorBlendOp</code> <strong class=\"purple\">must</strong> equal <code>alphaBlendOp</code>"
18260        },
18261        {
18262          "vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01407",
18263          "text": " If <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>::<code>advancedBlendIndependentBlend</code> is <code>VK_FALSE</code> and <code>colorBlendOp</code> is an <a href=\"#framebuffer-blend-advanced\">advanced blend operation</a>, then <code>colorBlendOp</code> <strong class=\"purple\">must</strong> be the same for all attachments."
18264        },
18265        {
18266          "vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01408",
18267          "text": " If <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>::<code>advancedBlendIndependentBlend</code> is <code>VK_FALSE</code> and <code>alphaBlendOp</code> is an <a href=\"#framebuffer-blend-advanced\">advanced blend operation</a>, then <code>alphaBlendOp</code> <strong class=\"purple\">must</strong> be the same for all attachments."
18268        },
18269        {
18270          "vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendAllOperations-01409",
18271          "text": " If <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>::<code>advancedBlendAllOperations</code> is <code>VK_FALSE</code>, then <code>colorBlendOp</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_OP_ZERO_EXT</code>, <code>VK_BLEND_OP_SRC_EXT</code>, <code>VK_BLEND_OP_DST_EXT</code>, <code>VK_BLEND_OP_SRC_OVER_EXT</code>, <code>VK_BLEND_OP_DST_OVER_EXT</code>, <code>VK_BLEND_OP_SRC_IN_EXT</code>, <code>VK_BLEND_OP_DST_IN_EXT</code>, <code>VK_BLEND_OP_SRC_OUT_EXT</code>, <code>VK_BLEND_OP_DST_OUT_EXT</code>, <code>VK_BLEND_OP_SRC_ATOP_EXT</code>, <code>VK_BLEND_OP_DST_ATOP_EXT</code>, <code>VK_BLEND_OP_XOR_EXT</code>, <code>VK_BLEND_OP_INVERT_EXT</code>, <code>VK_BLEND_OP_INVERT_RGB_EXT</code>, <code>VK_BLEND_OP_LINEARDODGE_EXT</code>, <code>VK_BLEND_OP_LINEARBURN_EXT</code>, <code>VK_BLEND_OP_VIVIDLIGHT_EXT</code>, <code>VK_BLEND_OP_LINEARLIGHT_EXT</code>, <code>VK_BLEND_OP_PINLIGHT_EXT</code>, <code>VK_BLEND_OP_HARDMIX_EXT</code>, <code>VK_BLEND_OP_PLUS_EXT</code>, <code>VK_BLEND_OP_PLUS_CLAMPED_EXT</code>, <code>VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT</code>, <code>VK_BLEND_OP_PLUS_DARKER_EXT</code>, <code>VK_BLEND_OP_MINUS_EXT</code>, <code>VK_BLEND_OP_MINUS_CLAMPED_EXT</code>, <code>VK_BLEND_OP_CONTRAST_EXT</code>, <code>VK_BLEND_OP_INVERT_OVG_EXT</code>, <code>VK_BLEND_OP_RED_EXT</code>, <code>VK_BLEND_OP_GREEN_EXT</code>, or <code>VK_BLEND_OP_BLUE_EXT</code>"
18272        },
18273        {
18274          "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01410",
18275          "text": " If <code>colorBlendOp</code> or <code>alphaBlendOp</code> is an <a href=\"#framebuffer-blend-advanced\">advanced blend operation</a>, then <a href=\"#VkSubpassDescription\">VkSubpassDescription</a>::<code>colorAttachmentCount</code> of the subpass this pipeline is compiled against <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>::advancedBlendMaxColorAttachments"
18276        }
18277      ]
18278    },
18279    "vkCmdSetBlendConstants": {
18280      "core": [
18281        {
18282          "vuid": "VUID-vkCmdSetBlendConstants-None-00612",
18283          "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_BLEND_CONSTANTS</code> dynamic state enabled"
18284        },
18285        {
18286          "vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-parameter",
18287          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
18288        },
18289        {
18290          "vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-recording",
18291          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18292        },
18293        {
18294          "vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-cmdpool",
18295          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
18296        }
18297      ]
18298    },
18299    "VkPipelineColorBlendAdvancedStateCreateInfoEXT": {
18300      "(VK_EXT_blend_operation_advanced)": [
18301        {
18302          "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-srcPremultiplied-01424",
18303          "text": " If the <a href=\"#limits-advancedBlendNonPremultipliedSrcColor\">non-premultiplied source color</a> property is not supported, <code>srcPremultiplied</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>"
18304        },
18305        {
18306          "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-dstPremultiplied-01425",
18307          "text": " If the <a href=\"#limits-advancedBlendNonPremultipliedDstColor\">non-premultiplied destination color</a> property is not supported, <code>dstPremultiplied</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>"
18308        },
18309        {
18310          "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-01426",
18311          "text": " If the <a href=\"#limits-advancedBlendCorrelatedOverlap\">correlated overlap</a> property is not supported, <code>blendOverlap</code> <strong class=\"purple\">must</strong> be <code>VK_BLEND_OVERLAP_UNCORRELATED_EXT</code>"
18312        },
18313        {
18314          "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-sType-sType",
18315          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT</code>"
18316        },
18317        {
18318          "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-parameter",
18319          "text": " <code>blendOverlap</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOverlapEXT\">VkBlendOverlapEXT</a> value"
18320        }
18321      ]
18322    },
18323    "vkCmdDispatch": {
18324      "core": [
18325        {
18326          "vuid": "VUID-vkCmdDispatch-groupCountX-00386",
18327          "text": " <code>groupCountX</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
18328        },
18329        {
18330          "vuid": "VUID-vkCmdDispatch-groupCountY-00387",
18331          "text": " <code>groupCountY</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
18332        },
18333        {
18334          "vuid": "VUID-vkCmdDispatch-groupCountZ-00388",
18335          "text": " <code>groupCountZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
18336        },
18337        {
18338          "vuid": "VUID-vkCmdDispatch-None-00389",
18339          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
18340        },
18341        {
18342          "vuid": "VUID-vkCmdDispatch-None-00390",
18343          "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
18344        },
18345        {
18346          "vuid": "VUID-vkCmdDispatch-None-00391",
18347          "text": " A valid compute pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>"
18348        },
18349        {
18350          "vuid": "VUID-vkCmdDispatch-None-00392",
18351          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants with the one used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
18352        },
18353        {
18354          "vuid": "VUID-vkCmdDispatch-None-00393",
18355          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
18356        },
18357        {
18358          "vuid": "VUID-vkCmdDispatch-None-00394",
18359          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
18360        },
18361        {
18362          "vuid": "VUID-vkCmdDispatch-None-00395",
18363          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
18364        },
18365        {
18366          "vuid": "VUID-vkCmdDispatch-None-00396",
18367          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
18368        },
18369        {
18370          "vuid": "VUID-vkCmdDispatch-None-00397",
18371          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
18372        },
18373        {
18374          "vuid": "VUID-vkCmdDispatch-None-02005",
18375          "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>."
18376        },
18377        {
18378          "vuid": "VUID-vkCmdDispatch-commandBuffer-parameter",
18379          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
18380        },
18381        {
18382          "vuid": "VUID-vkCmdDispatch-commandBuffer-recording",
18383          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18384        },
18385        {
18386          "vuid": "VUID-vkCmdDispatch-commandBuffer-cmdpool",
18387          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
18388        },
18389        {
18390          "vuid": "VUID-vkCmdDispatch-renderpass",
18391          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
18392        }
18393      ],
18394      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
18395        {
18396          "vuid": "VUID-vkCmdDispatch-None-02006",
18397          "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>."
18398        }
18399      ],
18400      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
18401        {
18402          "vuid": "VUID-vkCmdDispatch-None-00400",
18403          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
18404        }
18405      ],
18406      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
18407        {
18408          "vuid": "VUID-vkCmdDispatch-filterCubic-02609",
18409          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
18410        },
18411        {
18412          "vuid": "VUID-vkCmdDispatch-filterCubicMinmax-02610",
18413          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
18414        }
18415      ],
18416      "(VK_VERSION_1_1)": [
18417        {
18418          "vuid": "VUID-vkCmdDispatch-commandBuffer-01844",
18419          "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
18420        },
18421        {
18422          "vuid": "VUID-vkCmdDispatch-commandBuffer-01845",
18423          "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer."
18424        },
18425        {
18426          "vuid": "VUID-vkCmdDispatch-commandBuffer-01846",
18427          "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the compute pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> reads from any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
18428        }
18429      ],
18430      "(VK_NV_corner_sampled_image)": [
18431        {
18432          "vuid": "VUID-vkCmdDispatch-flags-02040",
18433          "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>."
18434        }
18435      ]
18436    },
18437    "vkCmdDispatchIndirect": {
18438      "core": [
18439        {
18440          "vuid": "VUID-vkCmdDispatchIndirect-buffer-00401",
18441          "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
18442        },
18443        {
18444          "vuid": "VUID-vkCmdDispatchIndirect-None-00402",
18445          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
18446        },
18447        {
18448          "vuid": "VUID-vkCmdDispatchIndirect-None-00403",
18449          "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
18450        },
18451        {
18452          "vuid": "VUID-vkCmdDispatchIndirect-None-00404",
18453          "text": " A valid compute pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>"
18454        },
18455        {
18456          "vuid": "VUID-vkCmdDispatchIndirect-buffer-00405",
18457          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
18458        },
18459        {
18460          "vuid": "VUID-vkCmdDispatchIndirect-offset-00406",
18461          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
18462        },
18463        {
18464          "vuid": "VUID-vkCmdDispatchIndirect-offset-00407",
18465          "text": " The sum of <code>offset</code> and the size of <code>VkDispatchIndirectCommand</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
18466        },
18467        {
18468          "vuid": "VUID-vkCmdDispatchIndirect-None-00408",
18469          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants with the one used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
18470        },
18471        {
18472          "vuid": "VUID-vkCmdDispatchIndirect-None-00409",
18473          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
18474        },
18475        {
18476          "vuid": "VUID-vkCmdDispatchIndirect-None-00410",
18477          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
18478        },
18479        {
18480          "vuid": "VUID-vkCmdDispatchIndirect-None-00411",
18481          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
18482        },
18483        {
18484          "vuid": "VUID-vkCmdDispatchIndirect-None-00412",
18485          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
18486        },
18487        {
18488          "vuid": "VUID-vkCmdDispatchIndirect-None-00413",
18489          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
18490        },
18491        {
18492          "vuid": "VUID-vkCmdDispatchIndirect-None-02007",
18493          "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>."
18494        },
18495        {
18496          "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-parameter",
18497          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
18498        },
18499        {
18500          "vuid": "VUID-vkCmdDispatchIndirect-buffer-parameter",
18501          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
18502        },
18503        {
18504          "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-recording",
18505          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18506        },
18507        {
18508          "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-cmdpool",
18509          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
18510        },
18511        {
18512          "vuid": "VUID-vkCmdDispatchIndirect-renderpass",
18513          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
18514        },
18515        {
18516          "vuid": "VUID-vkCmdDispatchIndirect-commonparent",
18517          "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
18518        }
18519      ],
18520      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
18521        {
18522          "vuid": "VUID-vkCmdDispatchIndirect-None-02008",
18523          "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>."
18524        }
18525      ],
18526      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
18527        {
18528          "vuid": "VUID-vkCmdDispatchIndirect-None-00416",
18529          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
18530        }
18531      ],
18532      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
18533        {
18534          "vuid": "VUID-vkCmdDispatchIndirect-filterCubic-02611",
18535          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
18536        },
18537        {
18538          "vuid": "VUID-vkCmdDispatchIndirect-filterCubicMinmax-02612",
18539          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
18540        }
18541      ],
18542      "(VK_VERSION_1_1)": [
18543        {
18544          "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-02639",
18545          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
18546        },
18547        {
18548          "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-01847",
18549          "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
18550        }
18551      ],
18552      "(VK_NV_corner_sampled_image)": [
18553        {
18554          "vuid": "VUID-vkCmdDispatchIndirect-flags-02041",
18555          "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>."
18556        }
18557      ]
18558    },
18559    "VkDispatchIndirectCommand": {
18560      "core": [
18561        {
18562          "vuid": "VUID-VkDispatchIndirectCommand-x-00417",
18563          "text": " <code>x</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
18564        },
18565        {
18566          "vuid": "VUID-VkDispatchIndirectCommand-y-00418",
18567          "text": " <code>y</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
18568        },
18569        {
18570          "vuid": "VUID-VkDispatchIndirectCommand-z-00419",
18571          "text": " <code>z</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
18572        }
18573      ]
18574    },
18575    "vkCmdDispatchBase": {
18576      "(VK_VERSION_1_1,VK_KHR_device_group)": [
18577        {
18578          "vuid": "VUID-vkCmdDispatchBase-None-00420",
18579          "text": " All valid usage rules from <a href=\"#vkCmdDispatch\">vkCmdDispatch</a> apply"
18580        },
18581        {
18582          "vuid": "VUID-vkCmdDispatchBase-baseGroupX-00421",
18583          "text": " <code>baseGroupX</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
18584        },
18585        {
18586          "vuid": "VUID-vkCmdDispatchBase-baseGroupX-00422",
18587          "text": " <code>baseGroupX</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
18588        },
18589        {
18590          "vuid": "VUID-vkCmdDispatchBase-baseGroupZ-00423",
18591          "text": " <code>baseGroupZ</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
18592        },
18593        {
18594          "vuid": "VUID-vkCmdDispatchBase-groupCountX-00424",
18595          "text": " <code>groupCountX</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0] minus <code>baseGroupX</code>"
18596        },
18597        {
18598          "vuid": "VUID-vkCmdDispatchBase-groupCountY-00425",
18599          "text": " <code>groupCountY</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1] minus <code>baseGroupY</code>"
18600        },
18601        {
18602          "vuid": "VUID-vkCmdDispatchBase-groupCountZ-00426",
18603          "text": " <code>groupCountZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2] minus <code>baseGroupZ</code>"
18604        },
18605        {
18606          "vuid": "VUID-vkCmdDispatchBase-baseGroupX-00427",
18607          "text": " If any of <code>baseGroupX</code>, <code>baseGroupY</code>, or <code>baseGroupZ</code> are not zero, then the bound compute pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_DISPATCH_BASE</code> flag."
18608        },
18609        {
18610          "vuid": "VUID-vkCmdDispatchBase-commandBuffer-parameter",
18611          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
18612        },
18613        {
18614          "vuid": "VUID-vkCmdDispatchBase-commandBuffer-recording",
18615          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18616        },
18617        {
18618          "vuid": "VUID-vkCmdDispatchBase-commandBuffer-cmdpool",
18619          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
18620        },
18621        {
18622          "vuid": "VUID-vkCmdDispatchBase-renderpass",
18623          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
18624        }
18625      ]
18626    },
18627    "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX": {
18628      "(VK_NVX_device_generated_commands)": [
18629        {
18630          "vuid": "VUID-vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX-physicalDevice-parameter",
18631          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
18632        },
18633        {
18634          "vuid": "VUID-vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX-pFeatures-parameter",
18635          "text": " <code>pFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceGeneratedCommandsFeaturesNVX</code> structure"
18636        },
18637        {
18638          "vuid": "VUID-vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX-pLimits-parameter",
18639          "text": " <code>pLimits</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceGeneratedCommandsLimitsNVX</code> structure"
18640        }
18641      ]
18642    },
18643    "VkDeviceGeneratedCommandsFeaturesNVX": {
18644      "(VK_NVX_device_generated_commands)": [
18645        {
18646          "vuid": "VUID-VkDeviceGeneratedCommandsFeaturesNVX-sType-sType",
18647          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX</code>"
18648        },
18649        {
18650          "vuid": "VUID-VkDeviceGeneratedCommandsFeaturesNVX-pNext-pNext",
18651          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
18652        }
18653      ]
18654    },
18655    "VkDeviceGeneratedCommandsLimitsNVX": {
18656      "(VK_NVX_device_generated_commands)": [
18657        {
18658          "vuid": "VUID-VkDeviceGeneratedCommandsLimitsNVX-sType-sType",
18659          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX</code>"
18660        },
18661        {
18662          "vuid": "VUID-VkDeviceGeneratedCommandsLimitsNVX-pNext-pNext",
18663          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
18664        }
18665      ]
18666    },
18667    "vkCreateObjectTableNVX": {
18668      "(VK_NVX_device_generated_commands)": [
18669        {
18670          "vuid": "VUID-vkCreateObjectTableNVX-device-parameter",
18671          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
18672        },
18673        {
18674          "vuid": "VUID-vkCreateObjectTableNVX-pCreateInfo-parameter",
18675          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkObjectTableCreateInfoNVX</code> structure"
18676        },
18677        {
18678          "vuid": "VUID-vkCreateObjectTableNVX-pAllocator-parameter",
18679          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
18680        },
18681        {
18682          "vuid": "VUID-vkCreateObjectTableNVX-pObjectTable-parameter",
18683          "text": " <code>pObjectTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkObjectTableNVX</code> handle"
18684        }
18685      ]
18686    },
18687    "VkObjectTableCreateInfoNVX": {
18688      "(VK_NVX_device_generated_commands)": [
18689        {
18690          "vuid": "VUID-VkObjectTableCreateInfoNVX-computeBindingPointSupport-01355",
18691          "text": " If the <code>VkDeviceGeneratedCommandsFeaturesNVX</code>::<code>computeBindingPointSupport</code> feature is not enabled, <code>pObjectEntryUsageFlags</code> <strong class=\"purple\">must</strong> not contain <code>VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX</code>"
18692        },
18693        {
18694          "vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryCounts-01356",
18695          "text": " Any value within <code>pObjectEntryCounts</code> <strong class=\"purple\">must</strong> not exceed <code>VkDeviceGeneratedCommandsLimitsNVX</code>::<code>maxObjectEntryCounts</code>"
18696        },
18697        {
18698          "vuid": "VUID-VkObjectTableCreateInfoNVX-maxUniformBuffersPerDescriptor-01357",
18699          "text": " <code>maxUniformBuffersPerDescriptor</code> <strong class=\"purple\">must</strong> be within the limits supported by the device."
18700        },
18701        {
18702          "vuid": "VUID-VkObjectTableCreateInfoNVX-maxStorageBuffersPerDescriptor-01358",
18703          "text": " <code>maxStorageBuffersPerDescriptor</code> <strong class=\"purple\">must</strong> be within the limits supported by the device."
18704        },
18705        {
18706          "vuid": "VUID-VkObjectTableCreateInfoNVX-maxStorageImagesPerDescriptor-01359",
18707          "text": " <code>maxStorageImagesPerDescriptor</code> <strong class=\"purple\">must</strong> be within the limits supported by the device."
18708        },
18709        {
18710          "vuid": "VUID-VkObjectTableCreateInfoNVX-maxSampledImagesPerDescriptor-01360",
18711          "text": " <code>maxSampledImagesPerDescriptor</code> <strong class=\"purple\">must</strong> be within the limits supported by the device."
18712        },
18713        {
18714          "vuid": "VUID-VkObjectTableCreateInfoNVX-sType-sType",
18715          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX</code>"
18716        },
18717        {
18718          "vuid": "VUID-VkObjectTableCreateInfoNVX-pNext-pNext",
18719          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
18720        },
18721        {
18722          "vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryTypes-parameter",
18723          "text": " <code>pObjectEntryTypes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> values"
18724        },
18725        {
18726          "vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryCounts-parameter",
18727          "text": " <code>pObjectEntryCounts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> <code>uint32_t</code> values"
18728        },
18729        {
18730          "vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryUsageFlags-parameter",
18731          "text": " <code>pObjectEntryUsageFlags</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> valid combinations of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values"
18732        },
18733        {
18734          "vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryUsageFlags-requiredbitmask",
18735          "text": " Each element of <code>pObjectEntryUsageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
18736        },
18737        {
18738          "vuid": "VUID-VkObjectTableCreateInfoNVX-objectCount-arraylength",
18739          "text": " <code>objectCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
18740        }
18741      ]
18742    },
18743    "vkDestroyObjectTableNVX": {
18744      "(VK_NVX_device_generated_commands)": [
18745        {
18746          "vuid": "VUID-vkDestroyObjectTableNVX-objectTable-01361",
18747          "text": " All submitted commands that refer to <code>objectTable</code> <strong class=\"purple\">must</strong> have completed execution."
18748        },
18749        {
18750          "vuid": "VUID-vkDestroyObjectTableNVX-objectTable-01362",
18751          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>objectTable</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here."
18752        },
18753        {
18754          "vuid": "VUID-vkDestroyObjectTableNVX-objectTable-01363",
18755          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>objectTable</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>."
18756        },
18757        {
18758          "vuid": "VUID-vkDestroyObjectTableNVX-device-parameter",
18759          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
18760        },
18761        {
18762          "vuid": "VUID-vkDestroyObjectTableNVX-objectTable-parameter",
18763          "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> be a valid <code>VkObjectTableNVX</code> handle"
18764        },
18765        {
18766          "vuid": "VUID-vkDestroyObjectTableNVX-pAllocator-parameter",
18767          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
18768        },
18769        {
18770          "vuid": "VUID-vkDestroyObjectTableNVX-objectTable-parent",
18771          "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
18772        }
18773      ]
18774    },
18775    "vkRegisterObjectsNVX": {
18776      "(VK_NVX_device_generated_commands)": [
18777        {
18778          "vuid": "VUID-vkRegisterObjectsNVX-pObjectTableEntry-01364",
18779          "text": " The contents of <code>pObjectTableEntry</code> <strong class=\"purple\">must</strong> yield plausible bindings supported by the device."
18780        },
18781        {
18782          "vuid": "VUID-vkRegisterObjectsNVX-pObjectIndices-01365",
18783          "text": " At any <code>pObjectIndices</code> there <strong class=\"purple\">must</strong> not be a registered resource already."
18784        },
18785        {
18786          "vuid": "VUID-vkRegisterObjectsNVX-pObjectIndices-01366",
18787          "text": " Any value inside <code>pObjectIndices</code> <strong class=\"purple\">must</strong> be below the appropriate <code>VkObjectTableCreateInfoNVX</code>::<code>pObjectEntryCounts</code> limits provided at <code>objectTable</code> creation time."
18788        },
18789        {
18790          "vuid": "VUID-vkRegisterObjectsNVX-device-parameter",
18791          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
18792        },
18793        {
18794          "vuid": "VUID-vkRegisterObjectsNVX-objectTable-parameter",
18795          "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> be a valid <code>VkObjectTableNVX</code> handle"
18796        },
18797        {
18798          "vuid": "VUID-vkRegisterObjectsNVX-ppObjectTableEntries-parameter",
18799          "text": " <code>ppObjectTableEntries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> valid <code>VkObjectTableEntryNVX</code> structures"
18800        },
18801        {
18802          "vuid": "VUID-vkRegisterObjectsNVX-pObjectIndices-parameter",
18803          "text": " <code>pObjectIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> <code>uint32_t</code> values"
18804        },
18805        {
18806          "vuid": "VUID-vkRegisterObjectsNVX-objectCount-arraylength",
18807          "text": " <code>objectCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
18808        },
18809        {
18810          "vuid": "VUID-vkRegisterObjectsNVX-objectTable-parent",
18811          "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
18812        }
18813      ]
18814    },
18815    "VkObjectTableEntryNVX": {
18816      "(VK_NVX_device_generated_commands)": [
18817        {
18818          "vuid": "VUID-VkObjectTableEntryNVX-computeBindingPointSupport-01367",
18819          "text": " If the <code>VkDeviceGeneratedCommandsFeaturesNVX</code>::<code>computeBindingPointSupport</code> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX</code>"
18820        },
18821        {
18822          "vuid": "VUID-VkObjectTableEntryNVX-type-parameter",
18823          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value"
18824        },
18825        {
18826          "vuid": "VUID-VkObjectTableEntryNVX-flags-parameter",
18827          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values"
18828        },
18829        {
18830          "vuid": "VUID-VkObjectTableEntryNVX-flags-requiredbitmask",
18831          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
18832        }
18833      ]
18834    },
18835    "VkObjectTablePipelineEntryNVX": {
18836      "(VK_NVX_device_generated_commands)": [
18837        {
18838          "vuid": "VUID-VkObjectTablePipelineEntryNVX-type-01368",
18839          "text": " <code>type</code> <strong class=\"purple\">must</strong> be <code>VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX</code>"
18840        },
18841        {
18842          "vuid": "VUID-VkObjectTablePipelineEntryNVX-type-parameter",
18843          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value"
18844        },
18845        {
18846          "vuid": "VUID-VkObjectTablePipelineEntryNVX-flags-parameter",
18847          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values"
18848        },
18849        {
18850          "vuid": "VUID-VkObjectTablePipelineEntryNVX-flags-requiredbitmask",
18851          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
18852        },
18853        {
18854          "vuid": "VUID-VkObjectTablePipelineEntryNVX-pipeline-parameter",
18855          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle"
18856        }
18857      ]
18858    },
18859    "VkObjectTableDescriptorSetEntryNVX": {
18860      "(VK_NVX_device_generated_commands)": [
18861        {
18862          "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-type-01369",
18863          "text": " <code>type</code> <strong class=\"purple\">must</strong> be <code>VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX</code>"
18864        },
18865        {
18866          "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-type-parameter",
18867          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value"
18868        },
18869        {
18870          "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-flags-parameter",
18871          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values"
18872        },
18873        {
18874          "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-flags-requiredbitmask",
18875          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
18876        },
18877        {
18878          "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-pipelineLayout-parameter",
18879          "text": " <code>pipelineLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
18880        },
18881        {
18882          "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-descriptorSet-parameter",
18883          "text": " <code>descriptorSet</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSet</code> handle"
18884        },
18885        {
18886          "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-commonparent",
18887          "text": " Both of <code>descriptorSet</code>, and <code>pipelineLayout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
18888        }
18889      ]
18890    },
18891    "VkObjectTableVertexBufferEntryNVX": {
18892      "(VK_NVX_device_generated_commands)": [
18893        {
18894          "vuid": "VUID-VkObjectTableVertexBufferEntryNVX-type-01370",
18895          "text": " <code>type</code> <strong class=\"purple\">must</strong> be <code>VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX</code>"
18896        },
18897        {
18898          "vuid": "VUID-VkObjectTableVertexBufferEntryNVX-type-parameter",
18899          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value"
18900        },
18901        {
18902          "vuid": "VUID-VkObjectTableVertexBufferEntryNVX-flags-parameter",
18903          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values"
18904        },
18905        {
18906          "vuid": "VUID-VkObjectTableVertexBufferEntryNVX-flags-requiredbitmask",
18907          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
18908        },
18909        {
18910          "vuid": "VUID-VkObjectTableVertexBufferEntryNVX-buffer-parameter",
18911          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
18912        }
18913      ]
18914    },
18915    "VkObjectTableIndexBufferEntryNVX": {
18916      "(VK_NVX_device_generated_commands)": [
18917        {
18918          "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-type-01371",
18919          "text": " <code>type</code> <strong class=\"purple\">must</strong> be <code>VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX</code>"
18920        },
18921        {
18922          "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-type-parameter",
18923          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value"
18924        },
18925        {
18926          "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-flags-parameter",
18927          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values"
18928        },
18929        {
18930          "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-flags-requiredbitmask",
18931          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
18932        },
18933        {
18934          "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-buffer-parameter",
18935          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
18936        },
18937        {
18938          "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-indexType-parameter",
18939          "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value"
18940        }
18941      ]
18942    },
18943    "VkObjectTablePushConstantEntryNVX": {
18944      "(VK_NVX_device_generated_commands)": [
18945        {
18946          "vuid": "VUID-VkObjectTablePushConstantEntryNVX-type-01372",
18947          "text": " <code>type</code> <strong class=\"purple\">must</strong> be <code>VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX</code>"
18948        },
18949        {
18950          "vuid": "VUID-VkObjectTablePushConstantEntryNVX-type-parameter",
18951          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value"
18952        },
18953        {
18954          "vuid": "VUID-VkObjectTablePushConstantEntryNVX-flags-parameter",
18955          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values"
18956        },
18957        {
18958          "vuid": "VUID-VkObjectTablePushConstantEntryNVX-flags-requiredbitmask",
18959          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
18960        },
18961        {
18962          "vuid": "VUID-VkObjectTablePushConstantEntryNVX-pipelineLayout-parameter",
18963          "text": " <code>pipelineLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
18964        },
18965        {
18966          "vuid": "VUID-VkObjectTablePushConstantEntryNVX-stageFlags-parameter",
18967          "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values"
18968        },
18969        {
18970          "vuid": "VUID-VkObjectTablePushConstantEntryNVX-stageFlags-requiredbitmask",
18971          "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
18972        }
18973      ]
18974    },
18975    "vkUnregisterObjectsNVX": {
18976      "(VK_NVX_device_generated_commands)": [
18977        {
18978          "vuid": "VUID-vkUnregisterObjectsNVX-pObjectIndices-01373",
18979          "text": " At any <code>pObjectIndices</code> there <strong class=\"purple\">must</strong> be a registered resource already."
18980        },
18981        {
18982          "vuid": "VUID-vkUnregisterObjectsNVX-pObjectEntryTypes-01374",
18983          "text": " The <code>pObjectEntryTypes</code> of the resource at <code>pObjectIndices</code> <strong class=\"purple\">must</strong> match."
18984        },
18985        {
18986          "vuid": "VUID-vkUnregisterObjectsNVX-None-01375",
18987          "text": " All operations on the device using the registered resource <strong class=\"purple\">must</strong> have been completed."
18988        },
18989        {
18990          "vuid": "VUID-vkUnregisterObjectsNVX-device-parameter",
18991          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
18992        },
18993        {
18994          "vuid": "VUID-vkUnregisterObjectsNVX-objectTable-parameter",
18995          "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> be a valid <code>VkObjectTableNVX</code> handle"
18996        },
18997        {
18998          "vuid": "VUID-vkUnregisterObjectsNVX-pObjectEntryTypes-parameter",
18999          "text": " <code>pObjectEntryTypes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> values"
19000        },
19001        {
19002          "vuid": "VUID-vkUnregisterObjectsNVX-pObjectIndices-parameter",
19003          "text": " <code>pObjectIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> <code>uint32_t</code> values"
19004        },
19005        {
19006          "vuid": "VUID-vkUnregisterObjectsNVX-objectCount-arraylength",
19007          "text": " <code>objectCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
19008        },
19009        {
19010          "vuid": "VUID-vkUnregisterObjectsNVX-objectTable-parent",
19011          "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
19012        }
19013      ]
19014    },
19015    "VkIndirectCommandsLayoutTokenNVX": {
19016      "(VK_NVX_device_generated_commands)": [
19017        {
19018          "vuid": "VUID-VkIndirectCommandsLayoutTokenNVX-bindingUnit-01342",
19019          "text": " <code>bindingUnit</code> <strong class=\"purple\">must</strong> stay within device supported limits for the appropriate commands."
19020        },
19021        {
19022          "vuid": "VUID-VkIndirectCommandsLayoutTokenNVX-dynamicCount-01343",
19023          "text": " <code>dynamicCount</code> <strong class=\"purple\">must</strong> stay within device supported limits for the appropriate commands."
19024        },
19025        {
19026          "vuid": "VUID-VkIndirectCommandsLayoutTokenNVX-divisor-01344",
19027          "text": " <code>divisor</code> <strong class=\"purple\">must</strong> be greater than <code>0</code> and a power of two."
19028        },
19029        {
19030          "vuid": "VUID-VkIndirectCommandsLayoutTokenNVX-tokenType-parameter",
19031          "text": " <code>tokenType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsTokenTypeNVX\">VkIndirectCommandsTokenTypeNVX</a> value"
19032        }
19033      ]
19034    },
19035    "VkIndirectCommandsTokenNVX": {
19036      "(VK_NVX_device_generated_commands)": [
19037        {
19038          "vuid": "VUID-VkIndirectCommandsTokenNVX-buffer-01345",
19039          "text": " The <code>buffer</code>&#8217;s usage flag <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set."
19040        },
19041        {
19042          "vuid": "VUID-VkIndirectCommandsTokenNVX-offset-01346",
19043          "text": " The <code>offset</code> <strong class=\"purple\">must</strong> be aligned to <code>VkDeviceGeneratedCommandsLimitsNVX</code>::<code>minCommandsTokenBufferOffsetAlignment</code>."
19044        },
19045        {
19046          "vuid": "VUID-VkIndirectCommandsTokenNVX-tokenType-parameter",
19047          "text": " <code>tokenType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsTokenTypeNVX\">VkIndirectCommandsTokenTypeNVX</a> value"
19048        },
19049        {
19050          "vuid": "VUID-VkIndirectCommandsTokenNVX-buffer-parameter",
19051          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
19052        }
19053      ]
19054    },
19055    "vkCreateIndirectCommandsLayoutNVX": {
19056      "(VK_NVX_device_generated_commands)": [
19057        {
19058          "vuid": "VUID-vkCreateIndirectCommandsLayoutNVX-device-parameter",
19059          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
19060        },
19061        {
19062          "vuid": "VUID-vkCreateIndirectCommandsLayoutNVX-pCreateInfo-parameter",
19063          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkIndirectCommandsLayoutCreateInfoNVX</code> structure"
19064        },
19065        {
19066          "vuid": "VUID-vkCreateIndirectCommandsLayoutNVX-pAllocator-parameter",
19067          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
19068        },
19069        {
19070          "vuid": "VUID-vkCreateIndirectCommandsLayoutNVX-pIndirectCommandsLayout-parameter",
19071          "text": " <code>pIndirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkIndirectCommandsLayoutNVX</code> handle"
19072        }
19073      ]
19074    },
19075    "VkIndirectCommandsLayoutCreateInfoNVX": {
19076      "(VK_NVX_device_generated_commands)": [
19077        {
19078          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-tokenCount-01347",
19079          "text": " <code>tokenCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code> and below <code>VkDeviceGeneratedCommandsLimitsNVX</code>::<code>maxIndirectCommandsLayoutTokenCount</code>"
19080        },
19081        {
19082          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-computeBindingPointSupport-01348",
19083          "text": " If the <code>VkDeviceGeneratedCommandsFeaturesNVX</code>::<code>computeBindingPointSupport</code> feature is not enabled, then <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>"
19084        },
19085        {
19086          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pTokens-01349",
19087          "text": " If <code>pTokens</code> contains an entry of <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX</code> it <strong class=\"purple\">must</strong> be the first element of the array and there <strong class=\"purple\">must</strong> be only a single element of such token type."
19088        },
19089        {
19090          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pTokens-01350",
19091          "text": " All state binding tokens in <code>pTokens</code> <strong class=\"purple\">must</strong> occur prior work provoking tokens (<code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX</code>)."
19092        },
19093        {
19094          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pTokens-01351",
19095          "text": " The content of <code>pTokens</code> <strong class=\"purple\">must</strong> include one single work provoking token that is compatible with the <code>pipelineBindPoint</code>."
19096        },
19097        {
19098          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-sType-sType",
19099          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX</code>"
19100        },
19101        {
19102          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pNext-pNext",
19103          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
19104        },
19105        {
19106          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pipelineBindPoint-parameter",
19107          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
19108        },
19109        {
19110          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-flags-parameter",
19111          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkIndirectCommandsLayoutUsageFlagBitsNVX\">VkIndirectCommandsLayoutUsageFlagBitsNVX</a> values"
19112        },
19113        {
19114          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-flags-requiredbitmask",
19115          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
19116        },
19117        {
19118          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pTokens-parameter",
19119          "text": " <code>pTokens</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tokenCount</code> valid <code>VkIndirectCommandsLayoutTokenNVX</code> structures"
19120        },
19121        {
19122          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-tokenCount-arraylength",
19123          "text": " <code>tokenCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
19124        }
19125      ]
19126    },
19127    "vkDestroyIndirectCommandsLayoutNVX": {
19128      "(VK_NVX_device_generated_commands)": [
19129        {
19130          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-indirectCommandsLayout-01352",
19131          "text": " All submitted commands that refer to <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> have completed execution"
19132        },
19133        {
19134          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-objectTable-01353",
19135          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>objectTable</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
19136        },
19137        {
19138          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-objectTable-01354",
19139          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>objectTable</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
19140        },
19141        {
19142          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-device-parameter",
19143          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
19144        },
19145        {
19146          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-indirectCommandsLayout-parameter",
19147          "text": " <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkIndirectCommandsLayoutNVX</code> handle"
19148        },
19149        {
19150          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-pAllocator-parameter",
19151          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
19152        },
19153        {
19154          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-indirectCommandsLayout-parent",
19155          "text": " <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
19156        }
19157      ]
19158    },
19159    "vkCmdReserveSpaceForCommandsNVX": {
19160      "(VK_NVX_device_generated_commands)": [
19161        {
19162          "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-01329",
19163          "text": " The provided <code>commandBuffer</code> <strong class=\"purple\">must</strong> not have had a prior space reservation since its creation or the last reset."
19164        },
19165        {
19166          "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-01330",
19167          "text": " The state of the <code>commandBuffer</code> <strong class=\"purple\">must</strong> be legal to execute all commands within the sequence provided by the <code>indirectCommandsLayout</code> member of <code>pProcessCommandsInfo</code>."
19168        },
19169        {
19170          "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-parameter",
19171          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
19172        },
19173        {
19174          "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-pReserveSpaceInfo-parameter",
19175          "text": " <code>pReserveSpaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkCmdReserveSpaceForCommandsInfoNVX</code> structure"
19176        },
19177        {
19178          "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-recording",
19179          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
19180        },
19181        {
19182          "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-cmdpool",
19183          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
19184        },
19185        {
19186          "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-renderpass",
19187          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
19188        },
19189        {
19190          "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-bufferlevel",
19191          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a secondary <code>VkCommandBuffer</code>"
19192        }
19193      ]
19194    },
19195    "VkCmdReserveSpaceForCommandsInfoNVX": {
19196      "(VK_NVX_device_generated_commands)": [
19197        {
19198          "vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-sType-sType",
19199          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX</code>"
19200        },
19201        {
19202          "vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-pNext-pNext",
19203          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
19204        },
19205        {
19206          "vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-objectTable-parameter",
19207          "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> be a valid <code>VkObjectTableNVX</code> handle"
19208        },
19209        {
19210          "vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-indirectCommandsLayout-parameter",
19211          "text": " <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkIndirectCommandsLayoutNVX</code> handle"
19212        },
19213        {
19214          "vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-commonparent",
19215          "text": " Both of <code>indirectCommandsLayout</code>, and <code>objectTable</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
19216        }
19217      ]
19218    },
19219    "vkCmdProcessCommandsNVX": {
19220      "(VK_NVX_device_generated_commands)": [
19221        {
19222          "vuid": "VUID-vkCmdProcessCommandsNVX-commandBuffer-parameter",
19223          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
19224        },
19225        {
19226          "vuid": "VUID-vkCmdProcessCommandsNVX-pProcessCommandsInfo-parameter",
19227          "text": " <code>pProcessCommandsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkCmdProcessCommandsInfoNVX</code> structure"
19228        },
19229        {
19230          "vuid": "VUID-vkCmdProcessCommandsNVX-commandBuffer-recording",
19231          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
19232        },
19233        {
19234          "vuid": "VUID-vkCmdProcessCommandsNVX-commandBuffer-cmdpool",
19235          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
19236        },
19237        {
19238          "vuid": "VUID-vkCmdProcessCommandsNVX-renderpass",
19239          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
19240        }
19241      ]
19242    },
19243    "VkCmdProcessCommandsInfoNVX": {
19244      "(VK_NVX_device_generated_commands)": [
19245        {
19246          "vuid": "VUID-VkCmdProcessCommandsInfoNVX-objectTable-01331",
19247          "text": " The provided <code>objectTable</code> <strong class=\"purple\">must</strong> include all objects referenced by the generation process"
19248        },
19249        {
19250          "vuid": "VUID-VkCmdProcessCommandsInfoNVX-indirectCommandsTokenCount-01332",
19251          "text": " <code>indirectCommandsTokenCount</code> <strong class=\"purple\">must</strong> match the <code>indirectCommandsLayout</code>&#8217;s <code>tokenCount</code>"
19252        },
19253        {
19254          "vuid": "VUID-VkCmdProcessCommandsInfoNVX-tokenType-01333",
19255          "text": " The <code>tokenType</code> member of each entry in the <code>pIndirectCommandsTokens</code> array <strong class=\"purple\">must</strong> match the values used at creation time of <code>indirectCommandsLayout</code>"
19256        },
19257        {
19258          "vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-01334",
19259          "text": " If <code>targetCommandBuffer</code> is provided, it <strong class=\"purple\">must</strong> have reserved command space"
19260        },
19261        {
19262          "vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-01335",
19263          "text": " If <code>targetCommandBuffer</code> is provided, the <code>objectTable</code> <strong class=\"purple\">must</strong> match the reservation&#8217;s <code>objectTable</code> and <strong class=\"purple\">must</strong> have had all referenced objects registered at reservation time"
19264        },
19265        {
19266          "vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-01336",
19267          "text": " If <code>targetCommandBuffer</code> is provided, the <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> match the reservation&#8217;s <code>indirectCommandsLayout</code>"
19268        },
19269        {
19270          "vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-01337",
19271          "text": " If <code>targetCommandBuffer</code> is provided, the <code>maxSequencesCount</code> <strong class=\"purple\">must</strong> not exceed the reservation&#8217;s <code>maxSequencesCount</code>"
19272        },
19273        {
19274          "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesCountBuffer-01338",
19275          "text": " If <code>sequencesCountBuffer</code> is used, its usage flag <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
19276        },
19277        {
19278          "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesCountBuffer-01339",
19279          "text": " If <code>sequencesCountBuffer</code> is used, <code>sequencesCountOffset</code> <strong class=\"purple\">must</strong> be aligned to <code>VkDeviceGeneratedCommandsLimitsNVX</code>::<code>minSequenceCountBufferOffsetAlignment</code>"
19280        },
19281        {
19282          "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesIndexBuffer-01340",
19283          "text": " If <code>sequencesIndexBuffer</code> is used, its usage flag <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
19284        },
19285        {
19286          "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesIndexBuffer-01341",
19287          "text": " If <code>sequencesIndexBuffer</code> is used, <code>sequencesIndexOffset</code> <strong class=\"purple\">must</strong> be aligned to <code>VkDeviceGeneratedCommandsLimitsNVX</code>::<code>minSequenceIndexBufferOffsetAlignment</code>"
19288        },
19289        {
19290          "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sType-sType",
19291          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX</code>"
19292        },
19293        {
19294          "vuid": "VUID-VkCmdProcessCommandsInfoNVX-pNext-pNext",
19295          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
19296        },
19297        {
19298          "vuid": "VUID-VkCmdProcessCommandsInfoNVX-objectTable-parameter",
19299          "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> be a valid <code>VkObjectTableNVX</code> handle"
19300        },
19301        {
19302          "vuid": "VUID-VkCmdProcessCommandsInfoNVX-indirectCommandsLayout-parameter",
19303          "text": " <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkIndirectCommandsLayoutNVX</code> handle"
19304        },
19305        {
19306          "vuid": "VUID-VkCmdProcessCommandsInfoNVX-pIndirectCommandsTokens-parameter",
19307          "text": " <code>pIndirectCommandsTokens</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>indirectCommandsTokenCount</code> valid <code>VkIndirectCommandsTokenNVX</code> structures"
19308        },
19309        {
19310          "vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-parameter",
19311          "text": " If <code>targetCommandBuffer</code> is not <code>NULL</code>, <code>targetCommandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
19312        },
19313        {
19314          "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesCountBuffer-parameter",
19315          "text": " If <code>sequencesCountBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sequencesCountBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
19316        },
19317        {
19318          "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesIndexBuffer-parameter",
19319          "text": " If <code>sequencesIndexBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sequencesIndexBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
19320        },
19321        {
19322          "vuid": "VUID-VkCmdProcessCommandsInfoNVX-indirectCommandsTokenCount-arraylength",
19323          "text": " <code>indirectCommandsTokenCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
19324        },
19325        {
19326          "vuid": "VUID-VkCmdProcessCommandsInfoNVX-commonparent",
19327          "text": " Each of <code>indirectCommandsLayout</code>, <code>objectTable</code>, <code>sequencesCountBuffer</code>, <code>sequencesIndexBuffer</code>, and <code>targetCommandBuffer</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
19328        }
19329      ]
19330    },
19331    "vkGetPhysicalDeviceSparseImageFormatProperties": {
19332      "core": [
19333        {
19334          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-samples-01094",
19335          "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a bit value that is set in <code>VkImageFormatProperties</code>::<code>sampleCounts</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties</code> with <code>format</code>, <code>type</code>, <code>tiling</code>, and <code>usage</code> equal to those in this command and <code>flags</code> equal to the value that is set in <code>VkImageCreateInfo</code>::<code>flags</code> when the image is created"
19336        },
19337        {
19338          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-physicalDevice-parameter",
19339          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
19340        },
19341        {
19342          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-format-parameter",
19343          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
19344        },
19345        {
19346          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-type-parameter",
19347          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
19348        },
19349        {
19350          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-samples-parameter",
19351          "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
19352        },
19353        {
19354          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-usage-parameter",
19355          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
19356        },
19357        {
19358          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-usage-requiredbitmask",
19359          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
19360        },
19361        {
19362          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-tiling-parameter",
19363          "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
19364        },
19365        {
19366          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-pPropertyCount-parameter",
19367          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
19368        },
19369        {
19370          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-pProperties-parameter",
19371          "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkSparseImageFormatProperties</code> structures"
19372        }
19373      ]
19374    },
19375    "vkGetPhysicalDeviceSparseImageFormatProperties2": {
19376      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
19377        {
19378          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-physicalDevice-parameter",
19379          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
19380        },
19381        {
19382          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pFormatInfo-parameter",
19383          "text": " <code>pFormatInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceSparseImageFormatInfo2</code> structure"
19384        },
19385        {
19386          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pPropertyCount-parameter",
19387          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
19388        },
19389        {
19390          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pProperties-parameter",
19391          "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkSparseImageFormatProperties2</code> structures"
19392        }
19393      ]
19394    },
19395    "VkPhysicalDeviceSparseImageFormatInfo2": {
19396      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
19397        {
19398          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-samples-01095",
19399          "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a bit value that is set in <code>VkImageFormatProperties</code>::<code>sampleCounts</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties</code> with <code>format</code>, <code>type</code>, <code>tiling</code>, and <code>usage</code> equal to those in this command and <code>flags</code> equal to the value that is set in <code>VkImageCreateInfo</code>::<code>flags</code> when the image is created"
19400        },
19401        {
19402          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-sType-sType",
19403          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2</code>"
19404        },
19405        {
19406          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-pNext-pNext",
19407          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
19408        },
19409        {
19410          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-format-parameter",
19411          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
19412        },
19413        {
19414          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-type-parameter",
19415          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
19416        },
19417        {
19418          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-samples-parameter",
19419          "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
19420        },
19421        {
19422          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-usage-parameter",
19423          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
19424        },
19425        {
19426          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-usage-requiredbitmask",
19427          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
19428        },
19429        {
19430          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-tiling-parameter",
19431          "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
19432        }
19433      ]
19434    },
19435    "VkSparseImageFormatProperties2": {
19436      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
19437        {
19438          "vuid": "VUID-VkSparseImageFormatProperties2-sType-sType",
19439          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2</code>"
19440        },
19441        {
19442          "vuid": "VUID-VkSparseImageFormatProperties2-pNext-pNext",
19443          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
19444        }
19445      ]
19446    },
19447    "vkGetImageSparseMemoryRequirements": {
19448      "core": [
19449        {
19450          "vuid": "VUID-vkGetImageSparseMemoryRequirements-device-parameter",
19451          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
19452        },
19453        {
19454          "vuid": "VUID-vkGetImageSparseMemoryRequirements-image-parameter",
19455          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
19456        },
19457        {
19458          "vuid": "VUID-vkGetImageSparseMemoryRequirements-pSparseMemoryRequirementCount-parameter",
19459          "text": " <code>pSparseMemoryRequirementCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
19460        },
19461        {
19462          "vuid": "VUID-vkGetImageSparseMemoryRequirements-pSparseMemoryRequirements-parameter",
19463          "text": " If the value referenced by <code>pSparseMemoryRequirementCount</code> is not <code>0</code>, and <code>pSparseMemoryRequirements</code> is not <code>NULL</code>, <code>pSparseMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSparseMemoryRequirementCount</code> <code>VkSparseImageMemoryRequirements</code> structures"
19464        },
19465        {
19466          "vuid": "VUID-vkGetImageSparseMemoryRequirements-image-parent",
19467          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
19468        }
19469      ]
19470    },
19471    "vkGetImageSparseMemoryRequirements2": {
19472      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
19473        {
19474          "vuid": "VUID-vkGetImageSparseMemoryRequirements2-device-parameter",
19475          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
19476        },
19477        {
19478          "vuid": "VUID-vkGetImageSparseMemoryRequirements2-pInfo-parameter",
19479          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageSparseMemoryRequirementsInfo2</code> structure"
19480        },
19481        {
19482          "vuid": "VUID-vkGetImageSparseMemoryRequirements2-pSparseMemoryRequirementCount-parameter",
19483          "text": " <code>pSparseMemoryRequirementCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
19484        },
19485        {
19486          "vuid": "VUID-vkGetImageSparseMemoryRequirements2-pSparseMemoryRequirements-parameter",
19487          "text": " If the value referenced by <code>pSparseMemoryRequirementCount</code> is not <code>0</code>, and <code>pSparseMemoryRequirements</code> is not <code>NULL</code>, <code>pSparseMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSparseMemoryRequirementCount</code> <code>VkSparseImageMemoryRequirements2</code> structures"
19488        }
19489      ]
19490    },
19491    "VkImageSparseMemoryRequirementsInfo2": {
19492      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
19493        {
19494          "vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-sType-sType",
19495          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2</code>"
19496        },
19497        {
19498          "vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-pNext-pNext",
19499          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
19500        },
19501        {
19502          "vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-image-parameter",
19503          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
19504        }
19505      ]
19506    },
19507    "VkSparseImageMemoryRequirements2": {
19508      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
19509        {
19510          "vuid": "VUID-VkSparseImageMemoryRequirements2-sType-sType",
19511          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2</code>"
19512        },
19513        {
19514          "vuid": "VUID-VkSparseImageMemoryRequirements2-pNext-pNext",
19515          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
19516        }
19517      ]
19518    },
19519    "VkSparseMemoryBind": {
19520      "core": [
19521        {
19522          "vuid": "VUID-VkSparseMemoryBind-memory-01096",
19523          "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> match the memory requirements of the resource, as described in section <a href=\"#resources-association\">Resource Memory Association</a>"
19524        },
19525        {
19526          "vuid": "VUID-VkSparseMemoryBind-memory-01097",
19527          "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> <strong class=\"purple\">must</strong> not have been created with a memory type that reports <code>VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT</code> bit set"
19528        },
19529        {
19530          "vuid": "VUID-VkSparseMemoryBind-size-01098",
19531          "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
19532        },
19533        {
19534          "vuid": "VUID-VkSparseMemoryBind-resourceOffset-01099",
19535          "text": " <code>resourceOffset</code> <strong class=\"purple\">must</strong> be less than the size of the resource"
19536        },
19537        {
19538          "vuid": "VUID-VkSparseMemoryBind-size-01100",
19539          "text": " <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to the size of the resource minus <code>resourceOffset</code>"
19540        },
19541        {
19542          "vuid": "VUID-VkSparseMemoryBind-memoryOffset-01101",
19543          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
19544        },
19545        {
19546          "vuid": "VUID-VkSparseMemoryBind-size-01102",
19547          "text": " <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>"
19548        },
19549        {
19550          "vuid": "VUID-VkSparseMemoryBind-memory-parameter",
19551          "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
19552        },
19553        {
19554          "vuid": "VUID-VkSparseMemoryBind-flags-parameter",
19555          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSparseMemoryBindFlagBits\">VkSparseMemoryBindFlagBits</a> values"
19556        }
19557      ]
19558    },
19559    "VkSparseBufferMemoryBindInfo": {
19560      "core": [
19561        {
19562          "vuid": "VUID-VkSparseBufferMemoryBindInfo-buffer-parameter",
19563          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
19564        },
19565        {
19566          "vuid": "VUID-VkSparseBufferMemoryBindInfo-pBinds-parameter",
19567          "text": " <code>pBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindCount</code> valid <code>VkSparseMemoryBind</code> structures"
19568        },
19569        {
19570          "vuid": "VUID-VkSparseBufferMemoryBindInfo-bindCount-arraylength",
19571          "text": " <code>bindCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
19572        }
19573      ]
19574    },
19575    "VkSparseImageOpaqueMemoryBindInfo": {
19576      "core": [
19577        {
19578          "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-01103",
19579          "text": " If the <code>flags</code> member of any element of <code>pBinds</code> contains <code>VK_SPARSE_MEMORY_BIND_METADATA_BIT</code>, the binding range defined <strong class=\"purple\">must</strong> be within the mip tail region of the metadata aspect of <code>image</code>"
19580        },
19581        {
19582          "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-image-parameter",
19583          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
19584        },
19585        {
19586          "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-parameter",
19587          "text": " <code>pBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindCount</code> valid <code>VkSparseMemoryBind</code> structures"
19588        },
19589        {
19590          "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-bindCount-arraylength",
19591          "text": " <code>bindCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
19592        }
19593      ]
19594    },
19595    "VkSparseImageMemoryBindInfo": {
19596      "core": [
19597        {
19598          "vuid": "VUID-VkSparseImageMemoryBindInfo-subresource-01722",
19599          "text": " The <code>subresource.mipLevel</code> member of each element of <code>pBinds</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
19600        },
19601        {
19602          "vuid": "VUID-VkSparseImageMemoryBindInfo-subresource-01723",
19603          "text": " The <code>subresource.arrayLayer</code> member of each element of <code>pBinds</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
19604        },
19605        {
19606          "vuid": "VUID-VkSparseImageMemoryBindInfo-image-parameter",
19607          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
19608        },
19609        {
19610          "vuid": "VUID-VkSparseImageMemoryBindInfo-pBinds-parameter",
19611          "text": " <code>pBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindCount</code> valid <code>VkSparseImageMemoryBind</code> structures"
19612        },
19613        {
19614          "vuid": "VUID-VkSparseImageMemoryBindInfo-bindCount-arraylength",
19615          "text": " <code>bindCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
19616        }
19617      ]
19618    },
19619    "VkSparseImageMemoryBind": {
19620      "core": [
19621        {
19622          "vuid": "VUID-VkSparseImageMemoryBind-memory-01104",
19623          "text": " If the <a href=\"#features-sparseResidencyAliased\">sparse aliased residency</a> feature is not enabled, and if any other resources are bound to ranges of <code>memory</code>, the range of <code>memory</code> being bound <strong class=\"purple\">must</strong> not overlap with those bound ranges"
19624        },
19625        {
19626          "vuid": "VUID-VkSparseImageMemoryBind-memory-01105",
19627          "text": " <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> match the memory requirements of the calling command&#8217;s <code>image</code>, as described in section <a href=\"#resources-association\">Resource Memory Association</a>"
19628        },
19629        {
19630          "vuid": "VUID-VkSparseImageMemoryBind-subresource-01106",
19631          "text": " <code>subresource</code> <strong class=\"purple\">must</strong> be a valid image subresource for <code>image</code> (see <a href=\"#resources-image-views\">Image Views</a>)"
19632        },
19633        {
19634          "vuid": "VUID-VkSparseImageMemoryBind-offset-01107",
19635          "text": " <code>offset.x</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block width (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.width</code>) of the image"
19636        },
19637        {
19638          "vuid": "VUID-VkSparseImageMemoryBind-extent-01108",
19639          "text": " <code>extent.width</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block width of the image, or else <span class=\"eq\">(<code>extent.width</code> &#43; <code>offset.x</code>)</span> <strong class=\"purple\">must</strong> equal the width of the image subresource"
19640        },
19641        {
19642          "vuid": "VUID-VkSparseImageMemoryBind-offset-01109",
19643          "text": " <code>offset.y</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block height (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.height</code>) of the image"
19644        },
19645        {
19646          "vuid": "VUID-VkSparseImageMemoryBind-extent-01110",
19647          "text": " <code>extent.height</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block height of the image, or else <span class=\"eq\">(<code>extent.height</code> &#43; <code>offset.y</code>)</span> <strong class=\"purple\">must</strong> equal the height of the image subresource"
19648        },
19649        {
19650          "vuid": "VUID-VkSparseImageMemoryBind-offset-01111",
19651          "text": " <code>offset.z</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block depth (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.depth</code>) of the image"
19652        },
19653        {
19654          "vuid": "VUID-VkSparseImageMemoryBind-extent-01112",
19655          "text": " <code>extent.depth</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block depth of the image, or else <span class=\"eq\">(<code>extent.depth</code> &#43; <code>offset.z</code>)</span> <strong class=\"purple\">must</strong> equal the depth of the image subresource"
19656        },
19657        {
19658          "vuid": "VUID-VkSparseImageMemoryBind-subresource-parameter",
19659          "text": " <code>subresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresource</code> structure"
19660        },
19661        {
19662          "vuid": "VUID-VkSparseImageMemoryBind-memory-parameter",
19663          "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
19664        },
19665        {
19666          "vuid": "VUID-VkSparseImageMemoryBind-flags-parameter",
19667          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSparseMemoryBindFlagBits\">VkSparseMemoryBindFlagBits</a> values"
19668        }
19669      ]
19670    },
19671    "vkQueueBindSparse": {
19672      "core": [
19673        {
19674          "vuid": "VUID-vkQueueBindSparse-fence-01113",
19675          "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be unsignaled"
19676        },
19677        {
19678          "vuid": "VUID-vkQueueBindSparse-fence-01114",
19679          "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> not be associated with any other queue command that has not yet completed execution on that queue"
19680        },
19681        {
19682          "vuid": "VUID-vkQueueBindSparse-pSignalSemaphores-01115",
19683          "text": " Each element of the <code>pSignalSemaphores</code> member of each element of <code>pBindInfo</code> <strong class=\"purple\">must</strong> be unsignaled when the semaphore signal operation it defines is executed on the device"
19684        },
19685        {
19686          "vuid": "VUID-vkQueueBindSparse-pWaitSemaphores-01116",
19687          "text": " When a semaphore unsignal operation defined by any element of the <code>pWaitSemaphores</code> member of any element of <code>pBindInfo</code> executes on <code>queue</code>, no other queue <strong class=\"purple\">must</strong> be waiting on the same semaphore."
19688        },
19689        {
19690          "vuid": "VUID-vkQueueBindSparse-pWaitSemaphores-01117",
19691          "text": " All elements of the <code>pWaitSemaphores</code> member of all elements of <code>pBindInfo</code> <strong class=\"purple\">must</strong> be semaphores that are signaled, or have <a href=\"#synchronization-semaphores-signaling\">semaphore signal operations</a> previously submitted for execution."
19692        },
19693        {
19694          "vuid": "VUID-vkQueueBindSparse-queue-parameter",
19695          "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
19696        },
19697        {
19698          "vuid": "VUID-vkQueueBindSparse-pBindInfo-parameter",
19699          "text": " If <code>bindInfoCount</code> is not <code>0</code>, <code>pBindInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <code>VkBindSparseInfo</code> structures"
19700        },
19701        {
19702          "vuid": "VUID-vkQueueBindSparse-fence-parameter",
19703          "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
19704        },
19705        {
19706          "vuid": "VUID-vkQueueBindSparse-queuetype",
19707          "text": " The <code>queue</code> <strong class=\"purple\">must</strong> support sparse binding operations"
19708        },
19709        {
19710          "vuid": "VUID-vkQueueBindSparse-commonparent",
19711          "text": " Both of <code>fence</code>, and <code>queue</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
19712        }
19713      ]
19714    },
19715    "VkBindSparseInfo": {
19716      "core": [
19717        {
19718          "vuid": "VUID-VkBindSparseInfo-sType-sType",
19719          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_SPARSE_INFO</code>"
19720        },
19721        {
19722          "vuid": "VUID-VkBindSparseInfo-pNext-pNext",
19723          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupBindSparseInfo\">VkDeviceGroupBindSparseInfo</a>"
19724        },
19725        {
19726          "vuid": "VUID-VkBindSparseInfo-pWaitSemaphores-parameter",
19727          "text": " If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> valid <code>VkSemaphore</code> handles"
19728        },
19729        {
19730          "vuid": "VUID-VkBindSparseInfo-pBufferBinds-parameter",
19731          "text": " If <code>bufferBindCount</code> is not <code>0</code>, <code>pBufferBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bufferBindCount</code> valid <code>VkSparseBufferMemoryBindInfo</code> structures"
19732        },
19733        {
19734          "vuid": "VUID-VkBindSparseInfo-pImageOpaqueBinds-parameter",
19735          "text": " If <code>imageOpaqueBindCount</code> is not <code>0</code>, <code>pImageOpaqueBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageOpaqueBindCount</code> valid <code>VkSparseImageOpaqueMemoryBindInfo</code> structures"
19736        },
19737        {
19738          "vuid": "VUID-VkBindSparseInfo-pImageBinds-parameter",
19739          "text": " If <code>imageBindCount</code> is not <code>0</code>, <code>pImageBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageBindCount</code> valid <code>VkSparseImageMemoryBindInfo</code> structures"
19740        },
19741        {
19742          "vuid": "VUID-VkBindSparseInfo-pSignalSemaphores-parameter",
19743          "text": " If <code>signalSemaphoreCount</code> is not <code>0</code>, <code>pSignalSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>signalSemaphoreCount</code> valid <code>VkSemaphore</code> handles"
19744        },
19745        {
19746          "vuid": "VUID-VkBindSparseInfo-commonparent",
19747          "text": " Both of the elements of <code>pSignalSemaphores</code>, and the elements of <code>pWaitSemaphores</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
19748        }
19749      ]
19750    },
19751    "VkDeviceGroupBindSparseInfo": {
19752      "(VK_VERSION_1_1,VK_KHR_device_group)": [
19753        {
19754          "vuid": "VUID-VkDeviceGroupBindSparseInfo-resourceDeviceIndex-01118",
19755          "text": " <code>resourceDeviceIndex</code> and <code>memoryDeviceIndex</code> <strong class=\"purple\">must</strong> both be valid device indices."
19756        },
19757        {
19758          "vuid": "VUID-VkDeviceGroupBindSparseInfo-memoryDeviceIndex-01119",
19759          "text": " Each memory allocation bound in this batch <strong class=\"purple\">must</strong> have allocated an instance for <code>memoryDeviceIndex</code>."
19760        },
19761        {
19762          "vuid": "VUID-VkDeviceGroupBindSparseInfo-sType-sType",
19763          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO</code>"
19764        }
19765      ]
19766    },
19767    "vkCreateAndroidSurfaceKHR": {
19768      "(VK_KHR_surface)+(VK_KHR_android_surface)": [
19769        {
19770          "vuid": "VUID-vkCreateAndroidSurfaceKHR-instance-parameter",
19771          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
19772        },
19773        {
19774          "vuid": "VUID-vkCreateAndroidSurfaceKHR-pCreateInfo-parameter",
19775          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAndroidSurfaceCreateInfoKHR</code> structure"
19776        },
19777        {
19778          "vuid": "VUID-vkCreateAndroidSurfaceKHR-pAllocator-parameter",
19779          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
19780        },
19781        {
19782          "vuid": "VUID-vkCreateAndroidSurfaceKHR-pSurface-parameter",
19783          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
19784        }
19785      ]
19786    },
19787    "VkAndroidSurfaceCreateInfoKHR": {
19788      "(VK_KHR_surface)+(VK_KHR_android_surface)": [
19789        {
19790          "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-window-01248",
19791          "text": " <code>window</code> <strong class=\"purple\">must</strong> point to a valid Android <a href=\"#ANativeWindow\">ANativeWindow</a>."
19792        },
19793        {
19794          "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-sType-sType",
19795          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR</code>"
19796        },
19797        {
19798          "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-pNext-pNext",
19799          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
19800        },
19801        {
19802          "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-flags-zerobitmask",
19803          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
19804        }
19805      ]
19806    },
19807    "vkCreateWaylandSurfaceKHR": {
19808      "(VK_KHR_surface)+(VK_KHR_wayland_surface)": [
19809        {
19810          "vuid": "VUID-vkCreateWaylandSurfaceKHR-instance-parameter",
19811          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
19812        },
19813        {
19814          "vuid": "VUID-vkCreateWaylandSurfaceKHR-pCreateInfo-parameter",
19815          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkWaylandSurfaceCreateInfoKHR</code> structure"
19816        },
19817        {
19818          "vuid": "VUID-vkCreateWaylandSurfaceKHR-pAllocator-parameter",
19819          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
19820        },
19821        {
19822          "vuid": "VUID-vkCreateWaylandSurfaceKHR-pSurface-parameter",
19823          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
19824        }
19825      ]
19826    },
19827    "VkWaylandSurfaceCreateInfoKHR": {
19828      "(VK_KHR_surface)+(VK_KHR_wayland_surface)": [
19829        {
19830          "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-display-01304",
19831          "text": " <code>display</code> <strong class=\"purple\">must</strong> point to a valid Wayland <code>wl_display</code>."
19832        },
19833        {
19834          "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-surface-01305",
19835          "text": " <code>surface</code> <strong class=\"purple\">must</strong> point to a valid Wayland <code>wl_surface</code>."
19836        },
19837        {
19838          "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-sType-sType",
19839          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR</code>"
19840        },
19841        {
19842          "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-pNext-pNext",
19843          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
19844        },
19845        {
19846          "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-flags-zerobitmask",
19847          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
19848        }
19849      ]
19850    },
19851    "vkCreateWin32SurfaceKHR": {
19852      "(VK_KHR_surface)+(VK_KHR_win32_surface)": [
19853        {
19854          "vuid": "VUID-vkCreateWin32SurfaceKHR-instance-parameter",
19855          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
19856        },
19857        {
19858          "vuid": "VUID-vkCreateWin32SurfaceKHR-pCreateInfo-parameter",
19859          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkWin32SurfaceCreateInfoKHR</code> structure"
19860        },
19861        {
19862          "vuid": "VUID-vkCreateWin32SurfaceKHR-pAllocator-parameter",
19863          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
19864        },
19865        {
19866          "vuid": "VUID-vkCreateWin32SurfaceKHR-pSurface-parameter",
19867          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
19868        }
19869      ]
19870    },
19871    "VkWin32SurfaceCreateInfoKHR": {
19872      "(VK_KHR_surface)+(VK_KHR_win32_surface)": [
19873        {
19874          "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-hinstance-01307",
19875          "text": " <code>hinstance</code> <strong class=\"purple\">must</strong> be a valid Win32 <code>HINSTANCE</code>."
19876        },
19877        {
19878          "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-hwnd-01308",
19879          "text": " <code>hwnd</code> <strong class=\"purple\">must</strong> be a valid Win32 <code>HWND</code>."
19880        },
19881        {
19882          "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-sType-sType",
19883          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR</code>"
19884        },
19885        {
19886          "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-pNext-pNext",
19887          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
19888        },
19889        {
19890          "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-flags-zerobitmask",
19891          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
19892        }
19893      ]
19894    },
19895    "vkCreateXcbSurfaceKHR": {
19896      "(VK_KHR_surface)+(VK_KHR_xcb_surface)": [
19897        {
19898          "vuid": "VUID-vkCreateXcbSurfaceKHR-instance-parameter",
19899          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
19900        },
19901        {
19902          "vuid": "VUID-vkCreateXcbSurfaceKHR-pCreateInfo-parameter",
19903          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkXcbSurfaceCreateInfoKHR</code> structure"
19904        },
19905        {
19906          "vuid": "VUID-vkCreateXcbSurfaceKHR-pAllocator-parameter",
19907          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
19908        },
19909        {
19910          "vuid": "VUID-vkCreateXcbSurfaceKHR-pSurface-parameter",
19911          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
19912        }
19913      ]
19914    },
19915    "VkXcbSurfaceCreateInfoKHR": {
19916      "(VK_KHR_surface)+(VK_KHR_xcb_surface)": [
19917        {
19918          "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-connection-01310",
19919          "text": " <code>connection</code> <strong class=\"purple\">must</strong> point to a valid X11 <code>xcb_connection_t</code>."
19920        },
19921        {
19922          "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-window-01311",
19923          "text": " <code>window</code> <strong class=\"purple\">must</strong> be a valid X11 <code>xcb_window_t</code>."
19924        },
19925        {
19926          "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-sType-sType",
19927          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR</code>"
19928        },
19929        {
19930          "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-pNext-pNext",
19931          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
19932        },
19933        {
19934          "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-flags-zerobitmask",
19935          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
19936        }
19937      ]
19938    },
19939    "vkCreateXlibSurfaceKHR": {
19940      "(VK_KHR_surface)+(VK_KHR_xlib_surface)": [
19941        {
19942          "vuid": "VUID-vkCreateXlibSurfaceKHR-instance-parameter",
19943          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
19944        },
19945        {
19946          "vuid": "VUID-vkCreateXlibSurfaceKHR-pCreateInfo-parameter",
19947          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkXlibSurfaceCreateInfoKHR</code> structure"
19948        },
19949        {
19950          "vuid": "VUID-vkCreateXlibSurfaceKHR-pAllocator-parameter",
19951          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
19952        },
19953        {
19954          "vuid": "VUID-vkCreateXlibSurfaceKHR-pSurface-parameter",
19955          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
19956        }
19957      ]
19958    },
19959    "VkXlibSurfaceCreateInfoKHR": {
19960      "(VK_KHR_surface)+(VK_KHR_xlib_surface)": [
19961        {
19962          "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-dpy-01313",
19963          "text": " <code>dpy</code> <strong class=\"purple\">must</strong> point to a valid Xlib <code>Display</code>."
19964        },
19965        {
19966          "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-window-01314",
19967          "text": " <code>window</code> <strong class=\"purple\">must</strong> be a valid Xlib <code>Window</code>."
19968        },
19969        {
19970          "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-sType-sType",
19971          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR</code>"
19972        },
19973        {
19974          "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-pNext-pNext",
19975          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
19976        },
19977        {
19978          "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-flags-zerobitmask",
19979          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
19980        }
19981      ]
19982    },
19983    "vkCreateImagePipeSurfaceFUCHSIA": {
19984      "(VK_KHR_surface)+(VK_FUCHSIA_imagepipe_surface)": [
19985        {
19986          "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-instance-parameter",
19987          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
19988        },
19989        {
19990          "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pCreateInfo-parameter",
19991          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImagePipeSurfaceCreateInfoFUCHSIA</code> structure"
19992        },
19993        {
19994          "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pAllocator-parameter",
19995          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
19996        },
19997        {
19998          "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pSurface-parameter",
19999          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
20000        }
20001      ]
20002    },
20003    "VkImagePipeSurfaceCreateInfoFUCHSIA": {
20004      "(VK_KHR_surface)+(VK_FUCHSIA_imagepipe_surface)": [
20005        {
20006          "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-imagePipeHandle-00000",
20007          "text": " <code>imagePipeHandle</code> <strong class=\"purple\">must</strong> be a valid <code>zx_handle_t</code>"
20008        },
20009        {
20010          "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-sType-sType",
20011          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA</code>"
20012        },
20013        {
20014          "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-pNext-pNext",
20015          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20016        },
20017        {
20018          "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-flags-zerobitmask",
20019          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
20020        }
20021      ]
20022    },
20023    "vkCreateIOSSurfaceMVK": {
20024      "(VK_KHR_surface)+(VK_MVK_ios_surface)": [
20025        {
20026          "vuid": "VUID-vkCreateIOSSurfaceMVK-instance-parameter",
20027          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
20028        },
20029        {
20030          "vuid": "VUID-vkCreateIOSSurfaceMVK-pCreateInfo-parameter",
20031          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkIOSSurfaceCreateInfoMVK</code> structure"
20032        },
20033        {
20034          "vuid": "VUID-vkCreateIOSSurfaceMVK-pAllocator-parameter",
20035          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
20036        },
20037        {
20038          "vuid": "VUID-vkCreateIOSSurfaceMVK-pSurface-parameter",
20039          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
20040        }
20041      ]
20042    },
20043    "VkIOSSurfaceCreateInfoMVK": {
20044      "(VK_KHR_surface)+(VK_MVK_ios_surface)": [
20045        {
20046          "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-pView-01316",
20047          "text": " <code>pView</code> <strong class=\"purple\">must</strong> be a valid <code>UIView</code> and <strong class=\"purple\">must</strong> be backed by a <code>CALayer</code> instance of type <a href=\"#CAMetalLayer\">CAMetalLayer</a>."
20048        },
20049        {
20050          "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-sType-sType",
20051          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK</code>"
20052        },
20053        {
20054          "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-pNext-pNext",
20055          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20056        },
20057        {
20058          "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-flags-zerobitmask",
20059          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
20060        }
20061      ]
20062    },
20063    "vkCreateMacOSSurfaceMVK": {
20064      "(VK_KHR_surface)+(VK_MVK_macos_surface)": [
20065        {
20066          "vuid": "VUID-vkCreateMacOSSurfaceMVK-instance-parameter",
20067          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
20068        },
20069        {
20070          "vuid": "VUID-vkCreateMacOSSurfaceMVK-pCreateInfo-parameter",
20071          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMacOSSurfaceCreateInfoMVK</code> structure"
20072        },
20073        {
20074          "vuid": "VUID-vkCreateMacOSSurfaceMVK-pAllocator-parameter",
20075          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
20076        },
20077        {
20078          "vuid": "VUID-vkCreateMacOSSurfaceMVK-pSurface-parameter",
20079          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
20080        }
20081      ]
20082    },
20083    "VkMacOSSurfaceCreateInfoMVK": {
20084      "(VK_KHR_surface)+(VK_MVK_macos_surface)": [
20085        {
20086          "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-pView-01317",
20087          "text": " <code>pView</code> <strong class=\"purple\">must</strong> be a valid <code>NSView</code> and <strong class=\"purple\">must</strong> be backed by a <code>CALayer</code> instance of type <a href=\"#CAMetalLayer\">CAMetalLayer</a>."
20088        },
20089        {
20090          "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-sType-sType",
20091          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK</code>"
20092        },
20093        {
20094          "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-pNext-pNext",
20095          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20096        },
20097        {
20098          "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-flags-zerobitmask",
20099          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
20100        }
20101      ]
20102    },
20103    "vkCreateViSurfaceNN": {
20104      "(VK_KHR_surface)+(VK_NN_vi_surface)": [
20105        {
20106          "vuid": "VUID-vkCreateViSurfaceNN-instance-parameter",
20107          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
20108        },
20109        {
20110          "vuid": "VUID-vkCreateViSurfaceNN-pCreateInfo-parameter",
20111          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkViSurfaceCreateInfoNN</code> structure"
20112        },
20113        {
20114          "vuid": "VUID-vkCreateViSurfaceNN-pAllocator-parameter",
20115          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
20116        },
20117        {
20118          "vuid": "VUID-vkCreateViSurfaceNN-pSurface-parameter",
20119          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
20120        }
20121      ]
20122    },
20123    "VkViSurfaceCreateInfoNN": {
20124      "(VK_KHR_surface)+(VK_NN_vi_surface)": [
20125        {
20126          "vuid": "VUID-VkViSurfaceCreateInfoNN-window-01318",
20127          "text": " <code>window</code> <strong class=\"purple\">must</strong> be a valid <code>nn</code>::<code>vi</code>::<code>NativeWindowHandle</code>"
20128        },
20129        {
20130          "vuid": "VUID-VkViSurfaceCreateInfoNN-sType-sType",
20131          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN</code>"
20132        },
20133        {
20134          "vuid": "VUID-VkViSurfaceCreateInfoNN-pNext-pNext",
20135          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20136        },
20137        {
20138          "vuid": "VUID-VkViSurfaceCreateInfoNN-flags-zerobitmask",
20139          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
20140        }
20141      ]
20142    },
20143    "vkCreateMetalSurfaceEXT": {
20144      "(VK_KHR_surface)+(VK_EXT_metal_surface)": [
20145        {
20146          "vuid": "VUID-vkCreateMetalSurfaceEXT-instance-parameter",
20147          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
20148        },
20149        {
20150          "vuid": "VUID-vkCreateMetalSurfaceEXT-pCreateInfo-parameter",
20151          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMetalSurfaceCreateInfoEXT</code> structure"
20152        },
20153        {
20154          "vuid": "VUID-vkCreateMetalSurfaceEXT-pAllocator-parameter",
20155          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
20156        },
20157        {
20158          "vuid": "VUID-vkCreateMetalSurfaceEXT-pSurface-parameter",
20159          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
20160        }
20161      ]
20162    },
20163    "VkMetalSurfaceCreateInfoEXT": {
20164      "(VK_KHR_surface)+(VK_EXT_metal_surface)": [
20165        {
20166          "vuid": "VUID-VkMetalSurfaceCreateInfoEXT-sType-sType",
20167          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT</code>"
20168        },
20169        {
20170          "vuid": "VUID-VkMetalSurfaceCreateInfoEXT-pNext-pNext",
20171          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20172        },
20173        {
20174          "vuid": "VUID-VkMetalSurfaceCreateInfoEXT-flags-zerobitmask",
20175          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
20176        }
20177      ]
20178    },
20179    "vkDestroySurfaceKHR": {
20180      "(VK_KHR_surface)": [
20181        {
20182          "vuid": "VUID-vkDestroySurfaceKHR-surface-01266",
20183          "text": " All <code>VkSwapchainKHR</code> objects created for <code>surface</code> <strong class=\"purple\">must</strong> have been destroyed prior to destroying <code>surface</code>"
20184        },
20185        {
20186          "vuid": "VUID-vkDestroySurfaceKHR-surface-01267",
20187          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>surface</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
20188        },
20189        {
20190          "vuid": "VUID-vkDestroySurfaceKHR-surface-01268",
20191          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>surface</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20192        },
20193        {
20194          "vuid": "VUID-vkDestroySurfaceKHR-instance-parameter",
20195          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
20196        },
20197        {
20198          "vuid": "VUID-vkDestroySurfaceKHR-surface-parameter",
20199          "text": " If <code>surface</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
20200        },
20201        {
20202          "vuid": "VUID-vkDestroySurfaceKHR-pAllocator-parameter",
20203          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
20204        },
20205        {
20206          "vuid": "VUID-vkDestroySurfaceKHR-surface-parent",
20207          "text": " If <code>surface</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>instance</code>"
20208        }
20209      ]
20210    },
20211    "vkGetPhysicalDeviceDisplayPropertiesKHR": {
20212      "(VK_KHR_surface)+(VK_KHR_display)": [
20213        {
20214          "vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-physicalDevice-parameter",
20215          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
20216        },
20217        {
20218          "vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-pPropertyCount-parameter",
20219          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
20220        },
20221        {
20222          "vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-pProperties-parameter",
20223          "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkDisplayPropertiesKHR</code> structures"
20224        }
20225      ]
20226    },
20227    "vkGetPhysicalDeviceDisplayProperties2KHR": {
20228      "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
20229        {
20230          "vuid": "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-physicalDevice-parameter",
20231          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
20232        },
20233        {
20234          "vuid": "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-pPropertyCount-parameter",
20235          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
20236        },
20237        {
20238          "vuid": "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-pProperties-parameter",
20239          "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkDisplayProperties2KHR</code> structures"
20240        }
20241      ]
20242    },
20243    "VkDisplayProperties2KHR": {
20244      "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
20245        {
20246          "vuid": "VUID-VkDisplayProperties2KHR-sType-sType",
20247          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR</code>"
20248        },
20249        {
20250          "vuid": "VUID-VkDisplayProperties2KHR-pNext-pNext",
20251          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20252        }
20253      ]
20254    },
20255    "vkAcquireXlibDisplayEXT": {
20256      "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)+(VK_EXT_acquire_xlib_display)": [
20257        {
20258          "vuid": "VUID-vkAcquireXlibDisplayEXT-physicalDevice-parameter",
20259          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
20260        },
20261        {
20262          "vuid": "VUID-vkAcquireXlibDisplayEXT-dpy-parameter",
20263          "text": " <code>dpy</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>Display</code> value"
20264        },
20265        {
20266          "vuid": "VUID-vkAcquireXlibDisplayEXT-display-parameter",
20267          "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle"
20268        }
20269      ]
20270    },
20271    "vkGetRandROutputDisplayEXT": {
20272      "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)+(VK_EXT_acquire_xlib_display)": [
20273        {
20274          "vuid": "VUID-vkGetRandROutputDisplayEXT-physicalDevice-parameter",
20275          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
20276        },
20277        {
20278          "vuid": "VUID-vkGetRandROutputDisplayEXT-dpy-parameter",
20279          "text": " <code>dpy</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>Display</code> value"
20280        },
20281        {
20282          "vuid": "VUID-vkGetRandROutputDisplayEXT-pDisplay-parameter",
20283          "text": " <code>pDisplay</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDisplayKHR</code> handle"
20284        }
20285      ]
20286    },
20287    "vkReleaseDisplayEXT": {
20288      "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)": [
20289        {
20290          "vuid": "VUID-vkReleaseDisplayEXT-physicalDevice-parameter",
20291          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
20292        },
20293        {
20294          "vuid": "VUID-vkReleaseDisplayEXT-display-parameter",
20295          "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle"
20296        }
20297      ]
20298    },
20299    "vkGetPhysicalDeviceDisplayPlanePropertiesKHR": {
20300      "(VK_KHR_surface)+(VK_KHR_display)": [
20301        {
20302          "vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-physicalDevice-parameter",
20303          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
20304        },
20305        {
20306          "vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-pPropertyCount-parameter",
20307          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
20308        },
20309        {
20310          "vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-pProperties-parameter",
20311          "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkDisplayPlanePropertiesKHR</code> structures"
20312        }
20313      ]
20314    },
20315    "vkGetPhysicalDeviceDisplayPlaneProperties2KHR": {
20316      "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
20317        {
20318          "vuid": "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-physicalDevice-parameter",
20319          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
20320        },
20321        {
20322          "vuid": "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-pPropertyCount-parameter",
20323          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
20324        },
20325        {
20326          "vuid": "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-pProperties-parameter",
20327          "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkDisplayPlaneProperties2KHR</code> structures"
20328        }
20329      ]
20330    },
20331    "VkDisplayPlaneProperties2KHR": {
20332      "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
20333        {
20334          "vuid": "VUID-VkDisplayPlaneProperties2KHR-sType-sType",
20335          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR</code>"
20336        },
20337        {
20338          "vuid": "VUID-VkDisplayPlaneProperties2KHR-pNext-pNext",
20339          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20340        }
20341      ]
20342    },
20343    "vkGetDisplayPlaneSupportedDisplaysKHR": {
20344      "(VK_KHR_surface)+(VK_KHR_display)": [
20345        {
20346          "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-planeIndex-01249",
20347          "text": " <code>planeIndex</code> <strong class=\"purple\">must</strong> be less than the number of display planes supported by the device as determined by calling <code>vkGetPhysicalDeviceDisplayPlanePropertiesKHR</code>"
20348        },
20349        {
20350          "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-physicalDevice-parameter",
20351          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
20352        },
20353        {
20354          "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-pDisplayCount-parameter",
20355          "text": " <code>pDisplayCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
20356        },
20357        {
20358          "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-pDisplays-parameter",
20359          "text": " If the value referenced by <code>pDisplayCount</code> is not <code>0</code>, and <code>pDisplays</code> is not <code>NULL</code>, <code>pDisplays</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pDisplayCount</code> <code>VkDisplayKHR</code> handles"
20360        }
20361      ]
20362    },
20363    "vkGetDisplayModePropertiesKHR": {
20364      "(VK_KHR_surface)+(VK_KHR_display)": [
20365        {
20366          "vuid": "VUID-vkGetDisplayModePropertiesKHR-physicalDevice-parameter",
20367          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
20368        },
20369        {
20370          "vuid": "VUID-vkGetDisplayModePropertiesKHR-display-parameter",
20371          "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle"
20372        },
20373        {
20374          "vuid": "VUID-vkGetDisplayModePropertiesKHR-pPropertyCount-parameter",
20375          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
20376        },
20377        {
20378          "vuid": "VUID-vkGetDisplayModePropertiesKHR-pProperties-parameter",
20379          "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkDisplayModePropertiesKHR</code> structures"
20380        }
20381      ]
20382    },
20383    "vkGetDisplayModeProperties2KHR": {
20384      "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
20385        {
20386          "vuid": "VUID-vkGetDisplayModeProperties2KHR-physicalDevice-parameter",
20387          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
20388        },
20389        {
20390          "vuid": "VUID-vkGetDisplayModeProperties2KHR-display-parameter",
20391          "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle"
20392        },
20393        {
20394          "vuid": "VUID-vkGetDisplayModeProperties2KHR-pPropertyCount-parameter",
20395          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
20396        },
20397        {
20398          "vuid": "VUID-vkGetDisplayModeProperties2KHR-pProperties-parameter",
20399          "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkDisplayModeProperties2KHR</code> structures"
20400        }
20401      ]
20402    },
20403    "VkDisplayModeProperties2KHR": {
20404      "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
20405        {
20406          "vuid": "VUID-VkDisplayModeProperties2KHR-sType-sType",
20407          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR</code>"
20408        },
20409        {
20410          "vuid": "VUID-VkDisplayModeProperties2KHR-pNext-pNext",
20411          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20412        }
20413      ]
20414    },
20415    "VkDisplayModeParametersKHR": {
20416      "(VK_KHR_surface)+(VK_KHR_display)": [
20417        {
20418          "vuid": "VUID-VkDisplayModeParametersKHR-width-01990",
20419          "text": " The <code>width</code> member of <code>visibleRegion</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
20420        },
20421        {
20422          "vuid": "VUID-VkDisplayModeParametersKHR-height-01991",
20423          "text": " The <code>height</code> member of <code>visibleRegion</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
20424        },
20425        {
20426          "vuid": "VUID-VkDisplayModeParametersKHR-refreshRate-01992",
20427          "text": " <code>refreshRate</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
20428        }
20429      ]
20430    },
20431    "vkCreateDisplayModeKHR": {
20432      "(VK_KHR_surface)+(VK_KHR_display)": [
20433        {
20434          "vuid": "VUID-vkCreateDisplayModeKHR-physicalDevice-parameter",
20435          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
20436        },
20437        {
20438          "vuid": "VUID-vkCreateDisplayModeKHR-display-parameter",
20439          "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle"
20440        },
20441        {
20442          "vuid": "VUID-vkCreateDisplayModeKHR-pCreateInfo-parameter",
20443          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDisplayModeCreateInfoKHR</code> structure"
20444        },
20445        {
20446          "vuid": "VUID-vkCreateDisplayModeKHR-pAllocator-parameter",
20447          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
20448        },
20449        {
20450          "vuid": "VUID-vkCreateDisplayModeKHR-pMode-parameter",
20451          "text": " <code>pMode</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDisplayModeKHR</code> handle"
20452        }
20453      ]
20454    },
20455    "VkDisplayModeCreateInfoKHR": {
20456      "(VK_KHR_surface)+(VK_KHR_display)": [
20457        {
20458          "vuid": "VUID-VkDisplayModeCreateInfoKHR-sType-sType",
20459          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR</code>"
20460        },
20461        {
20462          "vuid": "VUID-VkDisplayModeCreateInfoKHR-pNext-pNext",
20463          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20464        },
20465        {
20466          "vuid": "VUID-VkDisplayModeCreateInfoKHR-flags-zerobitmask",
20467          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
20468        },
20469        {
20470          "vuid": "VUID-VkDisplayModeCreateInfoKHR-parameters-parameter",
20471          "text": " <code>parameters</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayModeParametersKHR</code> structure"
20472        }
20473      ]
20474    },
20475    "vkGetDisplayPlaneCapabilitiesKHR": {
20476      "(VK_KHR_surface)+(VK_KHR_display)": [
20477        {
20478          "vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-physicalDevice-parameter",
20479          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
20480        },
20481        {
20482          "vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-mode-parameter",
20483          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayModeKHR</code> handle"
20484        },
20485        {
20486          "vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-pCapabilities-parameter",
20487          "text": " <code>pCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDisplayPlaneCapabilitiesKHR</code> structure"
20488        }
20489      ]
20490    },
20491    "vkGetDisplayPlaneCapabilities2KHR": {
20492      "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
20493        {
20494          "vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-physicalDevice-parameter",
20495          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
20496        },
20497        {
20498          "vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-pDisplayPlaneInfo-parameter",
20499          "text": " <code>pDisplayPlaneInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDisplayPlaneInfo2KHR</code> structure"
20500        },
20501        {
20502          "vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-pCapabilities-parameter",
20503          "text": " <code>pCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDisplayPlaneCapabilities2KHR</code> structure"
20504        }
20505      ]
20506    },
20507    "VkDisplayPlaneInfo2KHR": {
20508      "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
20509        {
20510          "vuid": "VUID-VkDisplayPlaneInfo2KHR-sType-sType",
20511          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR</code>"
20512        },
20513        {
20514          "vuid": "VUID-VkDisplayPlaneInfo2KHR-pNext-pNext",
20515          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20516        },
20517        {
20518          "vuid": "VUID-VkDisplayPlaneInfo2KHR-mode-parameter",
20519          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayModeKHR</code> handle"
20520        }
20521      ]
20522    },
20523    "VkDisplayPlaneCapabilities2KHR": {
20524      "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
20525        {
20526          "vuid": "VUID-VkDisplayPlaneCapabilities2KHR-sType-sType",
20527          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR</code>"
20528        },
20529        {
20530          "vuid": "VUID-VkDisplayPlaneCapabilities2KHR-pNext-pNext",
20531          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20532        }
20533      ]
20534    },
20535    "vkDisplayPowerControlEXT": {
20536      "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_display_control)": [
20537        {
20538          "vuid": "VUID-vkDisplayPowerControlEXT-device-parameter",
20539          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
20540        },
20541        {
20542          "vuid": "VUID-vkDisplayPowerControlEXT-display-parameter",
20543          "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle"
20544        },
20545        {
20546          "vuid": "VUID-vkDisplayPowerControlEXT-pDisplayPowerInfo-parameter",
20547          "text": " <code>pDisplayPowerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDisplayPowerInfoEXT</code> structure"
20548        }
20549      ]
20550    },
20551    "VkDisplayPowerInfoEXT": {
20552      "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_display_control)": [
20553        {
20554          "vuid": "VUID-VkDisplayPowerInfoEXT-sType-sType",
20555          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT</code>"
20556        },
20557        {
20558          "vuid": "VUID-VkDisplayPowerInfoEXT-pNext-pNext",
20559          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20560        },
20561        {
20562          "vuid": "VUID-VkDisplayPowerInfoEXT-powerState-parameter",
20563          "text": " <code>powerState</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayPowerStateEXT\">VkDisplayPowerStateEXT</a> value"
20564        }
20565      ]
20566    },
20567    "vkCreateDisplayPlaneSurfaceKHR": {
20568      "(VK_KHR_surface)+(VK_KHR_display)": [
20569        {
20570          "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-instance-parameter",
20571          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
20572        },
20573        {
20574          "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pCreateInfo-parameter",
20575          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDisplaySurfaceCreateInfoKHR</code> structure"
20576        },
20577        {
20578          "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pAllocator-parameter",
20579          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
20580        },
20581        {
20582          "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pSurface-parameter",
20583          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
20584        }
20585      ]
20586    },
20587    "VkDisplaySurfaceCreateInfoKHR": {
20588      "(VK_KHR_surface)+(VK_KHR_display)": [
20589        {
20590          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-planeIndex-01252",
20591          "text": " <code>planeIndex</code> <strong class=\"purple\">must</strong> be less than the number of display planes supported by the device as determined by calling <code>vkGetPhysicalDeviceDisplayPlanePropertiesKHR</code>"
20592        },
20593        {
20594          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-planeReorderPossible-01253",
20595          "text": " If the <code>planeReorderPossible</code> member of the <code>VkDisplayPropertiesKHR</code> structure returned by <code>vkGetPhysicalDeviceDisplayPropertiesKHR</code> for the display corresponding to <code>displayMode</code> is <code>VK_TRUE</code> then <code>planeStackIndex</code> <strong class=\"purple\">must</strong> be less than the number of display planes supported by the device as determined by calling <code>vkGetPhysicalDeviceDisplayPlanePropertiesKHR</code>; otherwise <code>planeStackIndex</code> <strong class=\"purple\">must</strong> equal the <code>currentStackIndex</code> member of <code>VkDisplayPlanePropertiesKHR</code> returned by <code>vkGetPhysicalDeviceDisplayPlanePropertiesKHR</code> for the display plane corresponding to <code>displayMode</code>"
20596        },
20597        {
20598          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-01254",
20599          "text": " If <code>alphaMode</code> is <code>VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR</code> then <code>globalAlpha</code> <strong class=\"purple\">must</strong> be between <code>0</code> and <code>1</code>, inclusive"
20600        },
20601        {
20602          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-01255",
20603          "text": " <code>alphaMode</code> <strong class=\"purple\">must</strong> be <code>0</code> or one of the bits present in the <code>supportedAlpha</code> member of <code>VkDisplayPlaneCapabilitiesKHR</code> returned by <code>vkGetDisplayPlaneCapabilitiesKHR</code> for the display plane corresponding to <code>displayMode</code>"
20604        },
20605        {
20606          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-width-01256",
20607          "text": " The <code>width</code> and <code>height</code> members of <code>imageExtent</code> <strong class=\"purple\">must</strong> be less than the <code>maxImageDimensions2D</code> member of <code>VkPhysicalDeviceLimits</code>"
20608        },
20609        {
20610          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-sType-sType",
20611          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR</code>"
20612        },
20613        {
20614          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-pNext-pNext",
20615          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20616        },
20617        {
20618          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-flags-zerobitmask",
20619          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
20620        },
20621        {
20622          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-displayMode-parameter",
20623          "text": " <code>displayMode</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayModeKHR</code> handle"
20624        },
20625        {
20626          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-transform-parameter",
20627          "text": " <code>transform</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceTransformFlagBitsKHR\">VkSurfaceTransformFlagBitsKHR</a> value"
20628        },
20629        {
20630          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-parameter",
20631          "text": " <code>alphaMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayPlaneAlphaFlagBitsKHR\">VkDisplayPlaneAlphaFlagBitsKHR</a> value"
20632        }
20633      ]
20634    },
20635    "vkGetPhysicalDeviceSurfaceSupportKHR": {
20636      "(VK_KHR_surface)": [
20637        {
20638          "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-queueFamilyIndex-01269",
20639          "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> for the given <code>physicalDevice</code>"
20640        },
20641        {
20642          "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-physicalDevice-parameter",
20643          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
20644        },
20645        {
20646          "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-surface-parameter",
20647          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
20648        },
20649        {
20650          "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-pSupported-parameter",
20651          "text": " <code>pSupported</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkBool32</code> value"
20652        },
20653        {
20654          "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-commonparent",
20655          "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
20656        }
20657      ]
20658    },
20659    "vkGetPhysicalDeviceWaylandPresentationSupportKHR": {
20660      "(VK_KHR_surface)+(VK_KHR_wayland_surface)": [
20661        {
20662          "vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-queueFamilyIndex-01306",
20663          "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> for the given <code>physicalDevice</code>"
20664        },
20665        {
20666          "vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-physicalDevice-parameter",
20667          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
20668        },
20669        {
20670          "vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-display-parameter",
20671          "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>wl_display</code> value"
20672        }
20673      ]
20674    },
20675    "vkGetPhysicalDeviceWin32PresentationSupportKHR": {
20676      "(VK_KHR_surface)+(VK_KHR_win32_surface)": [
20677        {
20678          "vuid": "VUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-queueFamilyIndex-01309",
20679          "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> for the given <code>physicalDevice</code>"
20680        },
20681        {
20682          "vuid": "VUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-physicalDevice-parameter",
20683          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
20684        }
20685      ]
20686    },
20687    "vkGetPhysicalDeviceXcbPresentationSupportKHR": {
20688      "(VK_KHR_surface)+(VK_KHR_xcb_surface)": [
20689        {
20690          "vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-queueFamilyIndex-01312",
20691          "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> for the given <code>physicalDevice</code>"
20692        },
20693        {
20694          "vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-physicalDevice-parameter",
20695          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
20696        },
20697        {
20698          "vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-connection-parameter",
20699          "text": " <code>connection</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>xcb_connection_t</code> value"
20700        }
20701      ]
20702    },
20703    "vkGetPhysicalDeviceXlibPresentationSupportKHR": {
20704      "(VK_KHR_surface)+(VK_KHR_xlib_surface)": [
20705        {
20706          "vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-queueFamilyIndex-01315",
20707          "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> for the given <code>physicalDevice</code>"
20708        },
20709        {
20710          "vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-physicalDevice-parameter",
20711          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
20712        },
20713        {
20714          "vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-dpy-parameter",
20715          "text": " <code>dpy</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>Display</code> value"
20716        }
20717      ]
20718    },
20719    "vkGetPhysicalDeviceSurfaceCapabilitiesKHR": {
20720      "(VK_KHR_surface)": [
20721        {
20722          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-physicalDevice-parameter",
20723          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
20724        },
20725        {
20726          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-surface-parameter",
20727          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
20728        },
20729        {
20730          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-pSurfaceCapabilities-parameter",
20731          "text": " <code>pSurfaceCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceCapabilitiesKHR</code> structure"
20732        },
20733        {
20734          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-commonparent",
20735          "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
20736        }
20737      ]
20738    },
20739    "vkGetPhysicalDeviceSurfaceCapabilities2KHR": {
20740      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
20741        {
20742          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-physicalDevice-parameter",
20743          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
20744        },
20745        {
20746          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceInfo-parameter",
20747          "text": " <code>pSurfaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceSurfaceInfo2KHR</code> structure"
20748        },
20749        {
20750          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceCapabilities-parameter",
20751          "text": " <code>pSurfaceCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceCapabilities2KHR</code> structure"
20752        }
20753      ]
20754    },
20755    "VkPhysicalDeviceSurfaceInfo2KHR": {
20756      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
20757        {
20758          "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-sType",
20759          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR</code>"
20760        },
20761        {
20762          "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-pNext-pNext",
20763          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20764        },
20765        {
20766          "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-surface-parameter",
20767          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
20768        }
20769      ]
20770    },
20771    "VkSurfaceCapabilities2KHR": {
20772      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
20773        {
20774          "vuid": "VUID-VkSurfaceCapabilities2KHR-sType-sType",
20775          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR</code>"
20776        },
20777        {
20778          "vuid": "VUID-VkSurfaceCapabilities2KHR-pNext-pNext",
20779          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkSharedPresentSurfaceCapabilitiesKHR\">VkSharedPresentSurfaceCapabilitiesKHR</a>"
20780        }
20781      ]
20782    },
20783    "VkSharedPresentSurfaceCapabilitiesKHR": {
20784      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_KHR_shared_presentable_image)": [
20785        {
20786          "vuid": "VUID-VkSharedPresentSurfaceCapabilitiesKHR-sType-sType",
20787          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR</code>"
20788        }
20789      ]
20790    },
20791    "vkGetPhysicalDeviceSurfaceCapabilities2EXT": {
20792      "(VK_KHR_surface)+(VK_EXT_display_surface_counter)": [
20793        {
20794          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-physicalDevice-parameter",
20795          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
20796        },
20797        {
20798          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-surface-parameter",
20799          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
20800        },
20801        {
20802          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-pSurfaceCapabilities-parameter",
20803          "text": " <code>pSurfaceCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceCapabilities2EXT</code> structure"
20804        },
20805        {
20806          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-commonparent",
20807          "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
20808        }
20809      ]
20810    },
20811    "VkSurfaceCapabilities2EXT": {
20812      "(VK_KHR_surface)+(VK_EXT_display_surface_counter)": [
20813        {
20814          "vuid": "VUID-VkSurfaceCapabilities2EXT-supportedSurfaceCounters-01246",
20815          "text": " <code>supportedSurfaceCounters</code> <strong class=\"purple\">must</strong> not include <code>VK_SURFACE_COUNTER_VBLANK_EXT</code> unless the surface queried is a <a href=\"#wsi-display-surfaces\">display surface</a>."
20816        },
20817        {
20818          "vuid": "VUID-VkSurfaceCapabilities2EXT-sType-sType",
20819          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT</code>"
20820        },
20821        {
20822          "vuid": "VUID-VkSurfaceCapabilities2EXT-pNext-pNext",
20823          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20824        }
20825      ]
20826    },
20827    "vkGetPhysicalDeviceSurfaceFormatsKHR": {
20828      "(VK_KHR_surface)": [
20829        {
20830          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-physicalDevice-parameter",
20831          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
20832        },
20833        {
20834          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-parameter",
20835          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
20836        },
20837        {
20838          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-pSurfaceFormatCount-parameter",
20839          "text": " <code>pSurfaceFormatCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
20840        },
20841        {
20842          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-pSurfaceFormats-parameter",
20843          "text": " If the value referenced by <code>pSurfaceFormatCount</code> is not <code>0</code>, and <code>pSurfaceFormats</code> is not <code>NULL</code>, <code>pSurfaceFormats</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSurfaceFormatCount</code> <code>VkSurfaceFormatKHR</code> structures"
20844        },
20845        {
20846          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-commonparent",
20847          "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
20848        }
20849      ]
20850    },
20851    "vkGetPhysicalDeviceSurfaceFormats2KHR": {
20852      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
20853        {
20854          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-physicalDevice-parameter",
20855          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
20856        },
20857        {
20858          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceInfo-parameter",
20859          "text": " <code>pSurfaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceSurfaceInfo2KHR</code> structure"
20860        },
20861        {
20862          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceFormatCount-parameter",
20863          "text": " <code>pSurfaceFormatCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
20864        },
20865        {
20866          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceFormats-parameter",
20867          "text": " If the value referenced by <code>pSurfaceFormatCount</code> is not <code>0</code>, and <code>pSurfaceFormats</code> is not <code>NULL</code>, <code>pSurfaceFormats</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSurfaceFormatCount</code> <code>VkSurfaceFormat2KHR</code> structures"
20868        }
20869      ]
20870    },
20871    "VkSurfaceFormat2KHR": {
20872      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
20873        {
20874          "vuid": "VUID-VkSurfaceFormat2KHR-sType-sType",
20875          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR</code>"
20876        },
20877        {
20878          "vuid": "VUID-VkSurfaceFormat2KHR-pNext-pNext",
20879          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20880        }
20881      ]
20882    },
20883    "vkGetPhysicalDeviceSurfacePresentModesKHR": {
20884      "(VK_KHR_surface)": [
20885        {
20886          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-physicalDevice-parameter",
20887          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
20888        },
20889        {
20890          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-surface-parameter",
20891          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
20892        },
20893        {
20894          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-pPresentModeCount-parameter",
20895          "text": " <code>pPresentModeCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
20896        },
20897        {
20898          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-pPresentModes-parameter",
20899          "text": " If the value referenced by <code>pPresentModeCount</code> is not <code>0</code>, and <code>pPresentModes</code> is not <code>NULL</code>, <code>pPresentModes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPresentModeCount</code> <a href=\"#VkPresentModeKHR\">VkPresentModeKHR</a> values"
20900        },
20901        {
20902          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-commonparent",
20903          "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
20904        }
20905      ]
20906    },
20907    "vkGetDeviceGroupPresentCapabilitiesKHR": {
20908      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
20909        {
20910          "vuid": "VUID-vkGetDeviceGroupPresentCapabilitiesKHR-device-parameter",
20911          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
20912        },
20913        {
20914          "vuid": "VUID-vkGetDeviceGroupPresentCapabilitiesKHR-pDeviceGroupPresentCapabilities-parameter",
20915          "text": " <code>pDeviceGroupPresentCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceGroupPresentCapabilitiesKHR</code> structure"
20916        }
20917      ]
20918    },
20919    "VkDeviceGroupPresentCapabilitiesKHR": {
20920      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
20921        {
20922          "vuid": "VUID-VkDeviceGroupPresentCapabilitiesKHR-sType-sType",
20923          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR</code>"
20924        },
20925        {
20926          "vuid": "VUID-VkDeviceGroupPresentCapabilitiesKHR-pNext-pNext",
20927          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20928        }
20929      ]
20930    },
20931    "vkGetDeviceGroupSurfacePresentModesKHR": {
20932      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
20933        {
20934          "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-device-parameter",
20935          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
20936        },
20937        {
20938          "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-surface-parameter",
20939          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
20940        },
20941        {
20942          "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-pModes-parameter",
20943          "text": " <code>pModes</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceGroupPresentModeFlagsKHR\">VkDeviceGroupPresentModeFlagsKHR</a> value"
20944        },
20945        {
20946          "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-commonparent",
20947          "text": " Both of <code>device</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
20948        }
20949      ]
20950    },
20951    "vkGetPhysicalDevicePresentRectanglesKHR": {
20952      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
20953        {
20954          "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-physicalDevice-parameter",
20955          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
20956        },
20957        {
20958          "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-surface-parameter",
20959          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
20960        },
20961        {
20962          "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-pRectCount-parameter",
20963          "text": " <code>pRectCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
20964        },
20965        {
20966          "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-pRects-parameter",
20967          "text": " If the value referenced by <code>pRectCount</code> is not <code>0</code>, and <code>pRects</code> is not <code>NULL</code>, <code>pRects</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pRectCount</code> <code>VkRect2D</code> structures"
20968        },
20969        {
20970          "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-commonparent",
20971          "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
20972        }
20973      ]
20974    },
20975    "vkGetRefreshCycleDurationGOOGLE": {
20976      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GOOGLE_display_timing)": [
20977        {
20978          "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-device-parameter",
20979          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
20980        },
20981        {
20982          "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-swapchain-parameter",
20983          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
20984        },
20985        {
20986          "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-pDisplayTimingProperties-parameter",
20987          "text": " <code>pDisplayTimingProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkRefreshCycleDurationGOOGLE</code> structure"
20988        },
20989        {
20990          "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-commonparent",
20991          "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
20992        }
20993      ]
20994    },
20995    "vkGetPastPresentationTimingGOOGLE": {
20996      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GOOGLE_display_timing)": [
20997        {
20998          "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-device-parameter",
20999          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
21000        },
21001        {
21002          "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-swapchain-parameter",
21003          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
21004        },
21005        {
21006          "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-pPresentationTimingCount-parameter",
21007          "text": " <code>pPresentationTimingCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
21008        },
21009        {
21010          "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-pPresentationTimings-parameter",
21011          "text": " If the value referenced by <code>pPresentationTimingCount</code> is not <code>0</code>, and <code>pPresentationTimings</code> is not <code>NULL</code>, <code>pPresentationTimings</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPresentationTimingCount</code> <code>VkPastPresentationTimingGOOGLE</code> structures"
21012        },
21013        {
21014          "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-commonparent",
21015          "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
21016        }
21017      ]
21018    },
21019    "vkGetSwapchainStatusKHR": {
21020      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_shared_presentable_image)": [
21021        {
21022          "vuid": "VUID-vkGetSwapchainStatusKHR-device-parameter",
21023          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
21024        },
21025        {
21026          "vuid": "VUID-vkGetSwapchainStatusKHR-swapchain-parameter",
21027          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
21028        },
21029        {
21030          "vuid": "VUID-vkGetSwapchainStatusKHR-commonparent",
21031          "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
21032        }
21033      ]
21034    },
21035    "vkCreateSwapchainKHR": {
21036      "(VK_KHR_surface)+(VK_KHR_swapchain)": [
21037        {
21038          "vuid": "VUID-vkCreateSwapchainKHR-device-parameter",
21039          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
21040        },
21041        {
21042          "vuid": "VUID-vkCreateSwapchainKHR-pCreateInfo-parameter",
21043          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSwapchainCreateInfoKHR</code> structure"
21044        },
21045        {
21046          "vuid": "VUID-vkCreateSwapchainKHR-pAllocator-parameter",
21047          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
21048        },
21049        {
21050          "vuid": "VUID-vkCreateSwapchainKHR-pSwapchain-parameter",
21051          "text": " <code>pSwapchain</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSwapchainKHR</code> handle"
21052        }
21053      ]
21054    },
21055    "VkSwapchainCreateInfoKHR": {
21056      "(VK_KHR_surface)+(VK_KHR_swapchain)": [
21057        {
21058          "vuid": "VUID-VkSwapchainCreateInfoKHR-surface-01270",
21059          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a surface that is supported by the device as determined using <code>vkGetPhysicalDeviceSurfaceSupportKHR</code>"
21060        },
21061        {
21062          "vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01271",
21063          "text": " <code>minImageCount</code> <strong class=\"purple\">must</strong> be greater than or equal to the value returned in the <code>minImageCount</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface"
21064        },
21065        {
21066          "vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01272",
21067          "text": " <code>minImageCount</code> <strong class=\"purple\">must</strong> be less than or equal to the value returned in the <code>maxImageCount</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface if the returned <code>maxImageCount</code> is not zero"
21068        },
21069        {
21070          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-01273",
21071          "text": " <code>imageFormat</code> and <code>imageColorSpace</code> <strong class=\"purple\">must</strong> match the <code>format</code> and <code>colorSpace</code> members, respectively, of one of the <code>VkSurfaceFormatKHR</code> structures returned by <code>vkGetPhysicalDeviceSurfaceFormatsKHR</code> for the surface"
21072        },
21073        {
21074          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageExtent-01274",
21075          "text": " <code>imageExtent</code> <strong class=\"purple\">must</strong> be between <code>minImageExtent</code> and <code>maxImageExtent</code>, inclusive, where <code>minImageExtent</code> and <code>maxImageExtent</code> are members of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface"
21076        },
21077        {
21078          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageExtent-01689",
21079          "text": " <code>imageExtent</code> members <code>width</code> and <code>height</code> <strong class=\"purple\">must</strong> both be non-zero"
21080        },
21081        {
21082          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageArrayLayers-01275",
21083          "text": " <code>imageArrayLayers</code> <strong class=\"purple\">must</strong> be greater than <code>0</code> and less than or equal to the <code>maxImageArrayLayers</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface"
21084        },
21085        {
21086          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01277",
21087          "text": " If <code>imageSharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueFamilyIndexCount</code> <code>uint32_t</code> values"
21088        },
21089        {
21090          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01278",
21091          "text": " If <code>imageSharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>queueFamilyIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>"
21092        },
21093        {
21094          "vuid": "VUID-VkSwapchainCreateInfoKHR-preTransform-01279",
21095          "text": " <code>preTransform</code> <strong class=\"purple\">must</strong> be one of the bits present in the <code>supportedTransforms</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface"
21096        },
21097        {
21098          "vuid": "VUID-VkSwapchainCreateInfoKHR-compositeAlpha-01280",
21099          "text": " <code>compositeAlpha</code> <strong class=\"purple\">must</strong> be one of the bits present in the <code>supportedCompositeAlpha</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface"
21100        },
21101        {
21102          "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-01281",
21103          "text": " <code>presentMode</code> <strong class=\"purple\">must</strong> be one of the <a href=\"#VkPresentModeKHR\">VkPresentModeKHR</a> values returned by <code>vkGetPhysicalDeviceSurfacePresentModesKHR</code> for the surface"
21104        },
21105        {
21106          "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-01933",
21107          "text": " If <code>oldSwapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>oldSwapchain</code> <strong class=\"purple\">must</strong> be a non-retired swapchain associated with native window referred to by <code>surface</code>"
21108        },
21109        {
21110          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-01778",
21111          "text": " The <a href=\"#swapchain-wsi-image-create-info\">implied image creation parameters</a> of the swapchain <strong class=\"purple\">must</strong> be supported as reported by <a href=\"#vkGetPhysicalDeviceImageFormatProperties\">vkGetPhysicalDeviceImageFormatProperties</a>"
21112        },
21113        {
21114          "vuid": "VUID-VkSwapchainCreateInfoKHR-sType-sType",
21115          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR</code>"
21116        },
21117        {
21118          "vuid": "VUID-VkSwapchainCreateInfoKHR-pNext-pNext",
21119          "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupSwapchainCreateInfoKHR\">VkDeviceGroupSwapchainCreateInfoKHR</a>, <a href=\"#VkImageFormatListCreateInfoKHR\">VkImageFormatListCreateInfoKHR</a>, or <a href=\"#VkSwapchainCounterCreateInfoEXT\">VkSwapchainCounterCreateInfoEXT</a>"
21120        },
21121        {
21122          "vuid": "VUID-VkSwapchainCreateInfoKHR-sType-unique",
21123          "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
21124        },
21125        {
21126          "vuid": "VUID-VkSwapchainCreateInfoKHR-flags-parameter",
21127          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSwapchainCreateFlagBitsKHR\">VkSwapchainCreateFlagBitsKHR</a> values"
21128        },
21129        {
21130          "vuid": "VUID-VkSwapchainCreateInfoKHR-surface-parameter",
21131          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
21132        },
21133        {
21134          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-parameter",
21135          "text": " <code>imageFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
21136        },
21137        {
21138          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageColorSpace-parameter",
21139          "text": " <code>imageColorSpace</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkColorSpaceKHR\">VkColorSpaceKHR</a> value"
21140        },
21141        {
21142          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-parameter",
21143          "text": " <code>imageUsage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
21144        },
21145        {
21146          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-requiredbitmask",
21147          "text": " <code>imageUsage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
21148        },
21149        {
21150          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-parameter",
21151          "text": " <code>imageSharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value"
21152        },
21153        {
21154          "vuid": "VUID-VkSwapchainCreateInfoKHR-preTransform-parameter",
21155          "text": " <code>preTransform</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceTransformFlagBitsKHR\">VkSurfaceTransformFlagBitsKHR</a> value"
21156        },
21157        {
21158          "vuid": "VUID-VkSwapchainCreateInfoKHR-compositeAlpha-parameter",
21159          "text": " <code>compositeAlpha</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompositeAlphaFlagBitsKHR\">VkCompositeAlphaFlagBitsKHR</a> value"
21160        },
21161        {
21162          "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-parameter",
21163          "text": " <code>presentMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPresentModeKHR\">VkPresentModeKHR</a> value"
21164        },
21165        {
21166          "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parameter",
21167          "text": " If <code>oldSwapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>oldSwapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
21168        },
21169        {
21170          "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parent",
21171          "text": " If <code>oldSwapchain</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>surface</code>"
21172        },
21173        {
21174          "vuid": "VUID-VkSwapchainCreateInfoKHR-commonparent",
21175          "text": " Both of <code>oldSwapchain</code>, and <code>surface</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
21176        }
21177      ],
21178      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_shared_presentable_image)": [
21179        {
21180          "vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01383",
21181          "text": " <code>minImageCount</code> <strong class=\"purple\">must</strong> be <code>1</code> if <code>presentMode</code> is either <code>VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR</code> or <code>VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR</code>"
21182        },
21183        {
21184          "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-01427",
21185          "text": " If <code>presentMode</code> is <code>VK_PRESENT_MODE_IMMEDIATE_KHR</code>, <code>VK_PRESENT_MODE_MAILBOX_KHR</code>, <code>VK_PRESENT_MODE_FIFO_KHR</code> or <code>VK_PRESENT_MODE_FIFO_RELAXED_KHR</code>, <code>imageUsage</code> <strong class=\"purple\">must</strong> be a subset of the supported usage flags present in the <code>supportedUsageFlags</code> member of the <a href=\"#VkSurfaceCapabilitiesKHR\">VkSurfaceCapabilitiesKHR</a> structure returned by <a href=\"#vkGetPhysicalDeviceSurfaceCapabilitiesKHR\">vkGetPhysicalDeviceSurfaceCapabilitiesKHR</a> for <code>surface</code>"
21186        },
21187        {
21188          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-01384",
21189          "text": " If <code>presentMode</code> is <code>VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR</code> or <code>VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR</code>, <code>imageUsage</code> <strong class=\"purple\">must</strong> be a subset of the supported usage flags present in the <code>sharedPresentSupportedUsageFlags</code> member of the <a href=\"#VkSharedPresentSurfaceCapabilitiesKHR\">VkSharedPresentSurfaceCapabilitiesKHR</a> structure returned by <a href=\"#vkGetPhysicalDeviceSurfaceCapabilities2KHR\">vkGetPhysicalDeviceSurfaceCapabilities2KHR</a> for <code>surface</code>"
21190        }
21191      ],
21192      "(VK_KHR_surface)+(VK_KHR_swapchain)+!(VK_KHR_shared_presentable_image)": [
21193        {
21194          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-01276",
21195          "text": " <code>imageUsage</code> <strong class=\"purple\">must</strong> be a subset of the supported usage flags present in the <code>supportedUsageFlags</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface"
21196        }
21197      ],
21198      "(VK_KHR_surface)+(VK_KHR_swapchain)+!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
21199        {
21200          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01393",
21201          "text": " If <code>imageSharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> for the <code>physicalDevice</code> that was used to create <code>device</code>"
21202        }
21203      ],
21204      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
21205        {
21206          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01428",
21207          "text": " If <code>imageSharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by either <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> or <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties2\">vkGetPhysicalDeviceQueueFamilyProperties2</a> for the <code>physicalDevice</code> that was used to create <code>device</code>"
21208        }
21209      ],
21210      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
21211        {
21212          "vuid": "VUID-VkSwapchainCreateInfoKHR-physicalDeviceCount-01429",
21213          "text": " If the logical device was created with <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>::<code>physicalDeviceCount</code> equal to 1, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR</code>"
21214        }
21215      ],
21216      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_swapchain_mutable_format)": [
21217        {
21218          "vuid": "VUID-VkSwapchainCreateInfoKHR-flags-03168",
21219          "text": " If <code>flags</code> contains <code>VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR</code> then the <code>pNext</code> chain <strong class=\"purple\">must</strong> contain an instance of <a href=\"#VkImageFormatListCreateInfoKHR\">VkImageFormatListCreateInfoKHR</a> with a <code>viewFormatCount</code> greater than zero and <code>pViewFormats</code> <strong class=\"purple\">must</strong> have an element equal to <code>imageFormat</code>"
21220        }
21221      ]
21222    },
21223    "VkDeviceGroupSwapchainCreateInfoKHR": {
21224      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
21225        {
21226          "vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-sType-sType",
21227          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR</code>"
21228        },
21229        {
21230          "vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-parameter",
21231          "text": " <code>modes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceGroupPresentModeFlagBitsKHR\">VkDeviceGroupPresentModeFlagBitsKHR</a> values"
21232        },
21233        {
21234          "vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-requiredbitmask",
21235          "text": " <code>modes</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
21236        }
21237      ]
21238    },
21239    "VkSwapchainCounterCreateInfoEXT": {
21240      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_display_control)": [
21241        {
21242          "vuid": "VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-01244",
21243          "text": " The bits in <code>surfaceCounters</code> <strong class=\"purple\">must</strong> be supported by <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a>::<code>surface</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceCapabilities2EXT\">vkGetPhysicalDeviceSurfaceCapabilities2EXT</a>."
21244        },
21245        {
21246          "vuid": "VUID-VkSwapchainCounterCreateInfoEXT-sType-sType",
21247          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT</code>"
21248        },
21249        {
21250          "vuid": "VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-parameter",
21251          "text": " <code>surfaceCounters</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSurfaceCounterFlagBitsEXT\">VkSurfaceCounterFlagBitsEXT</a> values"
21252        }
21253      ]
21254    },
21255    "vkGetSwapchainCounterEXT": {
21256      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_display_control)": [
21257        {
21258          "vuid": "VUID-vkGetSwapchainCounterEXT-swapchain-01245",
21259          "text": " One or more present commands on <code>swapchain</code> <strong class=\"purple\">must</strong> have been processed by the presentation engine."
21260        },
21261        {
21262          "vuid": "VUID-vkGetSwapchainCounterEXT-device-parameter",
21263          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
21264        },
21265        {
21266          "vuid": "VUID-vkGetSwapchainCounterEXT-swapchain-parameter",
21267          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
21268        },
21269        {
21270          "vuid": "VUID-vkGetSwapchainCounterEXT-counter-parameter",
21271          "text": " <code>counter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceCounterFlagBitsEXT\">VkSurfaceCounterFlagBitsEXT</a> value"
21272        },
21273        {
21274          "vuid": "VUID-vkGetSwapchainCounterEXT-pCounterValue-parameter",
21275          "text": " <code>pCounterValue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint64_t</code> value"
21276        },
21277        {
21278          "vuid": "VUID-vkGetSwapchainCounterEXT-commonparent",
21279          "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
21280        }
21281      ]
21282    },
21283    "vkDestroySwapchainKHR": {
21284      "(VK_KHR_surface)+(VK_KHR_swapchain)": [
21285        {
21286          "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01282",
21287          "text": " All uses of presentable images acquired from <code>swapchain</code> <strong class=\"purple\">must</strong> have completed execution"
21288        },
21289        {
21290          "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01283",
21291          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>swapchain</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
21292        },
21293        {
21294          "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01284",
21295          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>swapchain</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
21296        },
21297        {
21298          "vuid": "VUID-vkDestroySwapchainKHR-device-parameter",
21299          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
21300        },
21301        {
21302          "vuid": "VUID-vkDestroySwapchainKHR-swapchain-parameter",
21303          "text": " If <code>swapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
21304        },
21305        {
21306          "vuid": "VUID-vkDestroySwapchainKHR-pAllocator-parameter",
21307          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
21308        },
21309        {
21310          "vuid": "VUID-vkDestroySwapchainKHR-commonparent",
21311          "text": " Both of <code>device</code>, and <code>swapchain</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
21312        }
21313      ]
21314    },
21315    "vkCreateSharedSwapchainsKHR": {
21316      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [
21317        {
21318          "vuid": "VUID-vkCreateSharedSwapchainsKHR-device-parameter",
21319          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
21320        },
21321        {
21322          "vuid": "VUID-vkCreateSharedSwapchainsKHR-pCreateInfos-parameter",
21323          "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <code>VkSwapchainCreateInfoKHR</code> structures"
21324        },
21325        {
21326          "vuid": "VUID-vkCreateSharedSwapchainsKHR-pAllocator-parameter",
21327          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
21328        },
21329        {
21330          "vuid": "VUID-vkCreateSharedSwapchainsKHR-pSwapchains-parameter",
21331          "text": " <code>pSwapchains</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <code>VkSwapchainKHR</code> handles"
21332        },
21333        {
21334          "vuid": "VUID-vkCreateSharedSwapchainsKHR-swapchainCount-arraylength",
21335          "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
21336        }
21337      ]
21338    },
21339    "vkGetSwapchainImagesKHR": {
21340      "(VK_KHR_surface)+(VK_KHR_swapchain)": [
21341        {
21342          "vuid": "VUID-vkGetSwapchainImagesKHR-device-parameter",
21343          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
21344        },
21345        {
21346          "vuid": "VUID-vkGetSwapchainImagesKHR-swapchain-parameter",
21347          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
21348        },
21349        {
21350          "vuid": "VUID-vkGetSwapchainImagesKHR-pSwapchainImageCount-parameter",
21351          "text": " <code>pSwapchainImageCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
21352        },
21353        {
21354          "vuid": "VUID-vkGetSwapchainImagesKHR-pSwapchainImages-parameter",
21355          "text": " If the value referenced by <code>pSwapchainImageCount</code> is not <code>0</code>, and <code>pSwapchainImages</code> is not <code>NULL</code>, <code>pSwapchainImages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSwapchainImageCount</code> <code>VkImage</code> handles"
21356        },
21357        {
21358          "vuid": "VUID-vkGetSwapchainImagesKHR-commonparent",
21359          "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
21360        }
21361      ]
21362    },
21363    "vkAcquireNextImageKHR": {
21364      "(VK_KHR_surface)+(VK_KHR_swapchain)": [
21365        {
21366          "vuid": "VUID-vkAcquireNextImageKHR-swapchain-01285",
21367          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state"
21368        },
21369        {
21370          "vuid": "VUID-vkAcquireNextImageKHR-semaphore-01286",
21371          "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> be unsignaled"
21372        },
21373        {
21374          "vuid": "VUID-vkAcquireNextImageKHR-semaphore-01779",
21375          "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> not have any uncompleted signal or wait operations pending"
21376        },
21377        {
21378          "vuid": "VUID-vkAcquireNextImageKHR-fence-01287",
21379          "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> be unsignaled and <strong class=\"purple\">must</strong> not be associated with any other queue command that has not yet completed execution on that queue"
21380        },
21381        {
21382          "vuid": "VUID-vkAcquireNextImageKHR-semaphore-01780",
21383          "text": " <code>semaphore</code> and <code>fence</code> <strong class=\"purple\">must</strong> not both be equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
21384        },
21385        {
21386          "vuid": "VUID-vkAcquireNextImageKHR-swapchain-01802",
21387          "text": " If the number of currently acquired images is greater than the difference between the number of images in <code>swapchain</code> and the value of <a href=\"#VkSurfaceCapabilitiesKHR\">VkSurfaceCapabilitiesKHR</a>::<code>minImageCount</code> as returned by a call to <a href=\"#vkGetPhysicalDeviceSurfaceCapabilities2KHR\">vkGetPhysicalDeviceSurfaceCapabilities2KHR</a> with the <code>surface</code> used to create <code>swapchain</code>, <code>timeout</code> <strong class=\"purple\">must</strong> not be <code>UINT64_MAX</code>"
21388        },
21389        {
21390          "vuid": "VUID-vkAcquireNextImageKHR-device-parameter",
21391          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
21392        },
21393        {
21394          "vuid": "VUID-vkAcquireNextImageKHR-swapchain-parameter",
21395          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
21396        },
21397        {
21398          "vuid": "VUID-vkAcquireNextImageKHR-semaphore-parameter",
21399          "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle"
21400        },
21401        {
21402          "vuid": "VUID-vkAcquireNextImageKHR-fence-parameter",
21403          "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
21404        },
21405        {
21406          "vuid": "VUID-vkAcquireNextImageKHR-pImageIndex-parameter",
21407          "text": " <code>pImageIndex</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
21408        },
21409        {
21410          "vuid": "VUID-vkAcquireNextImageKHR-semaphore-parent",
21411          "text": " If <code>semaphore</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
21412        },
21413        {
21414          "vuid": "VUID-vkAcquireNextImageKHR-fence-parent",
21415          "text": " If <code>fence</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
21416        },
21417        {
21418          "vuid": "VUID-vkAcquireNextImageKHR-commonparent",
21419          "text": " Both of <code>device</code>, and <code>swapchain</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
21420        }
21421      ]
21422    },
21423    "vkAcquireNextImage2KHR": {
21424      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
21425        {
21426          "vuid": "VUID-vkAcquireNextImage2KHR-swapchain-01803",
21427          "text": " If the number of currently acquired images is greater than the difference between the number of images in the <code>swapchain</code> member of <code>pAcquireInfo</code> and the value of <a href=\"#VkSurfaceCapabilitiesKHR\">VkSurfaceCapabilitiesKHR</a>::<code>minImageCount</code> as returned by a call to <a href=\"#vkGetPhysicalDeviceSurfaceCapabilities2KHR\">vkGetPhysicalDeviceSurfaceCapabilities2KHR</a> with the <code>surface</code> used to create <code>swapchain</code>, the <code>timeout</code> member of <code>pAcquireInfo</code> <strong class=\"purple\">must</strong> not be <code>UINT64_MAX</code>"
21428        },
21429        {
21430          "vuid": "VUID-vkAcquireNextImage2KHR-device-parameter",
21431          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
21432        },
21433        {
21434          "vuid": "VUID-vkAcquireNextImage2KHR-pAcquireInfo-parameter",
21435          "text": " <code>pAcquireInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAcquireNextImageInfoKHR</code> structure"
21436        },
21437        {
21438          "vuid": "VUID-vkAcquireNextImage2KHR-pImageIndex-parameter",
21439          "text": " <code>pImageIndex</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
21440        }
21441      ]
21442    },
21443    "VkAcquireNextImageInfoKHR": {
21444      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
21445        {
21446          "vuid": "VUID-VkAcquireNextImageInfoKHR-swapchain-01675",
21447          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state"
21448        },
21449        {
21450          "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01288",
21451          "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> be unsignaled"
21452        },
21453        {
21454          "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01781",
21455          "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> not have any uncompleted signal or wait operations pending"
21456        },
21457        {
21458          "vuid": "VUID-VkAcquireNextImageInfoKHR-fence-01289",
21459          "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> be unsignaled and <strong class=\"purple\">must</strong> not be associated with any other queue command that has not yet completed execution on that queue"
21460        },
21461        {
21462          "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01782",
21463          "text": " <code>semaphore</code> and <code>fence</code> <strong class=\"purple\">must</strong> not both be equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
21464        },
21465        {
21466          "vuid": "VUID-VkAcquireNextImageInfoKHR-deviceMask-01290",
21467          "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask"
21468        },
21469        {
21470          "vuid": "VUID-VkAcquireNextImageInfoKHR-deviceMask-01291",
21471          "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
21472        },
21473        {
21474          "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01804",
21475          "text": " <code>semaphore</code> and <code>fence</code> <strong class=\"purple\">must</strong> not both be equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>."
21476        },
21477        {
21478          "vuid": "VUID-VkAcquireNextImageInfoKHR-sType-sType",
21479          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR</code>"
21480        },
21481        {
21482          "vuid": "VUID-VkAcquireNextImageInfoKHR-pNext-pNext",
21483          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
21484        },
21485        {
21486          "vuid": "VUID-VkAcquireNextImageInfoKHR-swapchain-parameter",
21487          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
21488        },
21489        {
21490          "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-parameter",
21491          "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle"
21492        },
21493        {
21494          "vuid": "VUID-VkAcquireNextImageInfoKHR-fence-parameter",
21495          "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
21496        },
21497        {
21498          "vuid": "VUID-VkAcquireNextImageInfoKHR-commonparent",
21499          "text": " Each of <code>fence</code>, <code>semaphore</code>, and <code>swapchain</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
21500        }
21501      ]
21502    },
21503    "vkQueuePresentKHR": {
21504      "(VK_KHR_surface)+(VK_KHR_swapchain)": [
21505        {
21506          "vuid": "VUID-vkQueuePresentKHR-pSwapchains-01292",
21507          "text": " Each element of <code>pSwapchains</code> member of <code>pPresentInfo</code> <strong class=\"purple\">must</strong> be a swapchain that is created for a surface for which presentation is supported from <code>queue</code> as determined using a call to <code>vkGetPhysicalDeviceSurfaceSupportKHR</code>"
21508        },
21509        {
21510          "vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-01294",
21511          "text": " When a semaphore unsignal operation defined by the elements of the <code>pWaitSemaphores</code> member of <code>pPresentInfo</code> executes on <code>queue</code>, no other queue <strong class=\"purple\">must</strong> be waiting on the same semaphore."
21512        },
21513        {
21514          "vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-01295",
21515          "text": " All elements of the <code>pWaitSemaphores</code> member of <code>pPresentInfo</code> <strong class=\"purple\">must</strong> be semaphores that are signaled, or have <a href=\"#synchronization-semaphores-signaling\">semaphore signal operations</a> previously submitted for execution."
21516        },
21517        {
21518          "vuid": "VUID-vkQueuePresentKHR-queue-parameter",
21519          "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
21520        },
21521        {
21522          "vuid": "VUID-vkQueuePresentKHR-pPresentInfo-parameter",
21523          "text": " <code>pPresentInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPresentInfoKHR</code> structure"
21524        }
21525      ],
21526      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [
21527        {
21528          "vuid": "VUID-vkQueuePresentKHR-pSwapchains-01293",
21529          "text": " If more than one member of <code>pSwapchains</code> was created from a display surface, all display surfaces referenced that refer to the same display <strong class=\"purple\">must</strong> use the same display mode"
21530        }
21531      ]
21532    },
21533    "VkPresentInfoKHR": {
21534      "(VK_KHR_surface)+(VK_KHR_swapchain)+!(VK_KHR_shared_presentable_image)": [
21535        {
21536          "vuid": "VUID-VkPresentInfoKHR-pImageIndices-01296",
21537          "text": " Each element of <code>pImageIndices</code> <strong class=\"purple\">must</strong> be the index of a presentable image acquired from the swapchain specified by the corresponding element of the <code>pSwapchains</code> array, and the presented image subresource <strong class=\"purple\">must</strong> be in the <code>VK_IMAGE_LAYOUT_PRESENT_SRC_KHR</code> layout at the time the operation is executed on a <code>VkDevice</code>"
21538        }
21539      ],
21540      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_shared_presentable_image)": [
21541        {
21542          "vuid": "VUID-VkPresentInfoKHR-pImageIndices-01430",
21543          "text": " Each element of <code>pImageIndices</code> <strong class=\"purple\">must</strong> be the index of a presentable image acquired from the swapchain specified by the corresponding element of the <code>pSwapchains</code> array, and the presented image subresource <strong class=\"purple\">must</strong> be in the <code>VK_IMAGE_LAYOUT_PRESENT_SRC_KHR</code> or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code> layout at the time the operation is executed on a <code>VkDevice</code>"
21544        }
21545      ],
21546      "(VK_KHR_surface)+(VK_KHR_swapchain)": [
21547        {
21548          "vuid": "VUID-VkPresentInfoKHR-sType-sType",
21549          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_INFO_KHR</code>"
21550        },
21551        {
21552          "vuid": "VUID-VkPresentInfoKHR-pNext-pNext",
21553          "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupPresentInfoKHR\">VkDeviceGroupPresentInfoKHR</a>, <a href=\"#VkDisplayPresentInfoKHR\">VkDisplayPresentInfoKHR</a>, <a href=\"#VkPresentRegionsKHR\">VkPresentRegionsKHR</a>, or <a href=\"#VkPresentTimesInfoGOOGLE\">VkPresentTimesInfoGOOGLE</a>"
21554        },
21555        {
21556          "vuid": "VUID-VkPresentInfoKHR-sType-unique",
21557          "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
21558        },
21559        {
21560          "vuid": "VUID-VkPresentInfoKHR-pWaitSemaphores-parameter",
21561          "text": " If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> valid <code>VkSemaphore</code> handles"
21562        },
21563        {
21564          "vuid": "VUID-VkPresentInfoKHR-pSwapchains-parameter",
21565          "text": " <code>pSwapchains</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <code>VkSwapchainKHR</code> handles"
21566        },
21567        {
21568          "vuid": "VUID-VkPresentInfoKHR-pImageIndices-parameter",
21569          "text": " <code>pImageIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <code>uint32_t</code> values"
21570        },
21571        {
21572          "vuid": "VUID-VkPresentInfoKHR-pResults-parameter",
21573          "text": " If <code>pResults</code> is not <code>NULL</code>, <code>pResults</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <a href=\"#VkResult\">VkResult</a> values"
21574        },
21575        {
21576          "vuid": "VUID-VkPresentInfoKHR-swapchainCount-arraylength",
21577          "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
21578        },
21579        {
21580          "vuid": "VUID-VkPresentInfoKHR-commonparent",
21581          "text": " Both of the elements of <code>pSwapchains</code>, and the elements of <code>pWaitSemaphores</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
21582        }
21583      ]
21584    },
21585    "VkPresentRegionsKHR": {
21586      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [
21587        {
21588          "vuid": "VUID-VkPresentRegionsKHR-swapchainCount-01260",
21589          "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be the same value as <code>VkPresentInfoKHR</code>::<code>swapchainCount</code>, where <code>VkPresentInfoKHR</code> is in the <code>pNext</code> chain of this <code>VkPresentRegionsKHR</code> structure"
21590        },
21591        {
21592          "vuid": "VUID-VkPresentRegionsKHR-sType-sType",
21593          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR</code>"
21594        },
21595        {
21596          "vuid": "VUID-VkPresentRegionsKHR-pRegions-parameter",
21597          "text": " If <code>pRegions</code> is not <code>NULL</code>, <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <code>VkPresentRegionKHR</code> structures"
21598        },
21599        {
21600          "vuid": "VUID-VkPresentRegionsKHR-swapchainCount-arraylength",
21601          "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
21602        }
21603      ]
21604    },
21605    "VkPresentRegionKHR": {
21606      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [
21607        {
21608          "vuid": "VUID-VkPresentRegionKHR-pRectangles-parameter",
21609          "text": " If <code>rectangleCount</code> is not <code>0</code>, and <code>pRectangles</code> is not <code>NULL</code>, <code>pRectangles</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rectangleCount</code> valid <code>VkRectLayerKHR</code> structures"
21610        }
21611      ]
21612    },
21613    "VkRectLayerKHR": {
21614      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [
21615        {
21616          "vuid": "VUID-VkRectLayerKHR-offset-01261",
21617          "text": " The sum of <code>offset</code> and <code>extent</code> <strong class=\"purple\">must</strong> be no greater than the <code>imageExtent</code> member of the <code>VkSwapchainCreateInfoKHR</code> structure given to <a href=\"#vkCreateSwapchainKHR\">vkCreateSwapchainKHR</a>."
21618        },
21619        {
21620          "vuid": "VUID-VkRectLayerKHR-layer-01262",
21621          "text": " <code>layer</code> <strong class=\"purple\">must</strong> be less than <code>imageArrayLayers</code> member of the <code>VkSwapchainCreateInfoKHR</code> structure given to <a href=\"#vkCreateSwapchainKHR\">vkCreateSwapchainKHR</a>."
21622        }
21623      ]
21624    },
21625    "VkDisplayPresentInfoKHR": {
21626      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [
21627        {
21628          "vuid": "VUID-VkDisplayPresentInfoKHR-srcRect-01257",
21629          "text": " <code>srcRect</code> <strong class=\"purple\">must</strong> specify a rectangular region that is a subset of the image being presented"
21630        },
21631        {
21632          "vuid": "VUID-VkDisplayPresentInfoKHR-dstRect-01258",
21633          "text": " <code>dstRect</code> <strong class=\"purple\">must</strong> specify a rectangular region that is a subset of the <code>visibleRegion</code> parameter of the display mode the swapchain being presented uses"
21634        },
21635        {
21636          "vuid": "VUID-VkDisplayPresentInfoKHR-persistentContent-01259",
21637          "text": " If the <code>persistentContent</code> member of the <code>VkDisplayPropertiesKHR</code> structure returned by <code>vkGetPhysicalDeviceDisplayPropertiesKHR</code> for the display the present operation targets then <code>persistent</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
21638        },
21639        {
21640          "vuid": "VUID-VkDisplayPresentInfoKHR-sType-sType",
21641          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR</code>"
21642        }
21643      ]
21644    },
21645    "VkDeviceGroupPresentInfoKHR": {
21646      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
21647        {
21648          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-swapchainCount-01297",
21649          "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> equal <code>0</code> or <a href=\"#VkPresentInfoKHR\">VkPresentInfoKHR</a>::<code>swapchainCount</code>"
21650        },
21651        {
21652          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01298",
21653          "text": " If <code>mode</code> is <code>VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR</code>, then each element of <code>pDeviceMasks</code> <strong class=\"purple\">must</strong> have exactly one bit set, and the corresponding element of <a href=\"#VkDeviceGroupPresentCapabilitiesKHR\">VkDeviceGroupPresentCapabilitiesKHR</a>::<code>presentMask</code> <strong class=\"purple\">must</strong> be non-zero"
21654        },
21655        {
21656          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01299",
21657          "text": " If <code>mode</code> is <code>VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR</code>, then each element of <code>pDeviceMasks</code> <strong class=\"purple\">must</strong> have exactly one bit set, and some physical device in the logical device <strong class=\"purple\">must</strong> include that bit in its <a href=\"#VkDeviceGroupPresentCapabilitiesKHR\">VkDeviceGroupPresentCapabilitiesKHR</a>::<code>presentMask</code>."
21658        },
21659        {
21660          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01300",
21661          "text": " If <code>mode</code> is <code>VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR</code>, then each element of <code>pDeviceMasks</code> <strong class=\"purple\">must</strong> have a value for which all set bits are set in one of the elements of <a href=\"#VkDeviceGroupPresentCapabilitiesKHR\">VkDeviceGroupPresentCapabilitiesKHR</a>::<code>presentMask</code>"
21662        },
21663        {
21664          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01301",
21665          "text": " If <code>mode</code> is <code>VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR</code>, then for each bit set in each element of <code>pDeviceMasks</code>, the corresponding element of <a href=\"#VkDeviceGroupPresentCapabilitiesKHR\">VkDeviceGroupPresentCapabilitiesKHR</a>::<code>presentMask</code> <strong class=\"purple\">must</strong> be non-zero"
21666        },
21667        {
21668          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-01302",
21669          "text": " The value of each element of <code>pDeviceMasks</code> <strong class=\"purple\">must</strong> be equal to the device mask passed in <a href=\"#VkAcquireNextImageInfoKHR\">VkAcquireNextImageInfoKHR</a>::<code>deviceMask</code> when the image index was last acquired"
21670        },
21671        {
21672          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01303",
21673          "text": " <code>mode</code> <strong class=\"purple\">must</strong> have exactly one bit set, and that bit <strong class=\"purple\">must</strong> have been included in <a href=\"#VkDeviceGroupSwapchainCreateInfoKHR\">VkDeviceGroupSwapchainCreateInfoKHR</a>::<code>modes</code>"
21674        },
21675        {
21676          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-sType-sType",
21677          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR</code>"
21678        },
21679        {
21680          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-parameter",
21681          "text": " If <code>swapchainCount</code> is not <code>0</code>, <code>pDeviceMasks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <code>uint32_t</code> values"
21682        },
21683        {
21684          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-parameter",
21685          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceGroupPresentModeFlagBitsKHR\">VkDeviceGroupPresentModeFlagBitsKHR</a> value"
21686        }
21687      ]
21688    },
21689    "VkPresentTimesInfoGOOGLE": {
21690      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GOOGLE_display_timing)": [
21691        {
21692          "vuid": "VUID-VkPresentTimesInfoGOOGLE-swapchainCount-01247",
21693          "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be the same value as <code>VkPresentInfoKHR</code>::<code>swapchainCount</code>, where <code>VkPresentInfoKHR</code> is in the <code>pNext</code> chain of this <code>VkPresentTimesInfoGOOGLE</code> structure."
21694        },
21695        {
21696          "vuid": "VUID-VkPresentTimesInfoGOOGLE-sType-sType",
21697          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE</code>"
21698        },
21699        {
21700          "vuid": "VUID-VkPresentTimesInfoGOOGLE-pTimes-parameter",
21701          "text": " If <code>pTimes</code> is not <code>NULL</code>, <code>pTimes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <code>VkPresentTimeGOOGLE</code> structures"
21702        },
21703        {
21704          "vuid": "VUID-VkPresentTimesInfoGOOGLE-swapchainCount-arraylength",
21705          "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
21706        }
21707      ]
21708    },
21709    "vkSetHdrMetadataEXT": {
21710      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_hdr_metadata)": [
21711        {
21712          "vuid": "VUID-vkSetHdrMetadataEXT-device-parameter",
21713          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
21714        },
21715        {
21716          "vuid": "VUID-vkSetHdrMetadataEXT-pSwapchains-parameter",
21717          "text": " <code>pSwapchains</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <code>VkSwapchainKHR</code> handles"
21718        },
21719        {
21720          "vuid": "VUID-vkSetHdrMetadataEXT-pMetadata-parameter",
21721          "text": " <code>pMetadata</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <code>VkHdrMetadataEXT</code> structures"
21722        },
21723        {
21724          "vuid": "VUID-vkSetHdrMetadataEXT-swapchainCount-arraylength",
21725          "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
21726        },
21727        {
21728          "vuid": "VUID-vkSetHdrMetadataEXT-commonparent",
21729          "text": " Both of <code>device</code>, and the elements of <code>pSwapchains</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
21730        }
21731      ]
21732    },
21733    "VkHdrMetadataEXT": {
21734      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_hdr_metadata)": [
21735        {
21736          "vuid": "VUID-VkHdrMetadataEXT-sType-sType",
21737          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_HDR_METADATA_EXT</code>"
21738        },
21739        {
21740          "vuid": "VUID-VkHdrMetadataEXT-pNext-pNext",
21741          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
21742        }
21743      ]
21744    },
21745    "vkCmdTraceRaysNV": {
21746      "(VK_NV_ray_tracing)": [
21747        {
21748          "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02455",
21749          "text": " <code>raygenShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>raygenShaderBindingTableBuffer</code>"
21750        },
21751        {
21752          "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02456",
21753          "text": " <code>raygenShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>"
21754        },
21755        {
21756          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02457",
21757          "text": " <code>missShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>missShaderBindingTableBuffer</code>"
21758        },
21759        {
21760          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02458",
21761          "text": " <code>missShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>"
21762        },
21763        {
21764          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02459",
21765          "text": " <code>hitShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>hitShaderBindingTableBuffer</code>"
21766        },
21767        {
21768          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02460",
21769          "text": " <code>hitShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>"
21770        },
21771        {
21772          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02461",
21773          "text": " <code>callableShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>callableShaderBindingTableBuffer</code>"
21774        },
21775        {
21776          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02462",
21777          "text": " <code>callableShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>"
21778        },
21779        {
21780          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingStride-02463",
21781          "text": " <code>missShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>"
21782        },
21783        {
21784          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02464",
21785          "text": " <code>hitShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>"
21786        },
21787        {
21788          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02465",
21789          "text": " <code>callableShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>"
21790        },
21791        {
21792          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingStride-02466",
21793          "text": " <code>missShaderBindingStride</code> <strong class=\"purple\">must</strong> be a less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>"
21794        },
21795        {
21796          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02467",
21797          "text": " <code>hitShaderBindingStride</code> <strong class=\"purple\">must</strong> be a less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>"
21798        },
21799        {
21800          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02468",
21801          "text": " <code>callableShaderBindingStride</code> <strong class=\"purple\">must</strong> be a less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>"
21802        },
21803        {
21804          "vuid": "VUID-vkCmdTraceRaysNV-width-02469",
21805          "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
21806        },
21807        {
21808          "vuid": "VUID-vkCmdTraceRaysNV-height-02470",
21809          "text": " <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
21810        },
21811        {
21812          "vuid": "VUID-vkCmdTraceRaysNV-depth-02471",
21813          "text": " <code>depth</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
21814        },
21815        {
21816          "vuid": "VUID-vkCmdTraceRaysNV-None-02472",
21817          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
21818        },
21819        {
21820          "vuid": "VUID-vkCmdTraceRaysNV-None-02473",
21821          "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
21822        },
21823        {
21824          "vuid": "VUID-vkCmdTraceRaysNV-None-02474",
21825          "text": " A valid ray tracing pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code>"
21826        },
21827        {
21828          "vuid": "VUID-vkCmdTraceRaysNV-None-02475",
21829          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants with the one used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
21830        },
21831        {
21832          "vuid": "VUID-vkCmdTraceRaysNV-None-02476",
21833          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
21834        },
21835        {
21836          "vuid": "VUID-vkCmdTraceRaysNV-None-02477",
21837          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
21838        },
21839        {
21840          "vuid": "VUID-vkCmdTraceRaysNV-None-02478",
21841          "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
21842        },
21843        {
21844          "vuid": "VUID-vkCmdTraceRaysNV-None-02479",
21845          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
21846        },
21847        {
21848          "vuid": "VUID-vkCmdTraceRaysNV-None-02480",
21849          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
21850        },
21851        {
21852          "vuid": "VUID-vkCmdTraceRaysNV-None-02481",
21853          "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>"
21854        },
21855        {
21856          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-parameter",
21857          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
21858        },
21859        {
21860          "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-parameter",
21861          "text": " <code>raygenShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
21862        },
21863        {
21864          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-parameter",
21865          "text": " If <code>missShaderBindingTableBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>missShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
21866        },
21867        {
21868          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-parameter",
21869          "text": " If <code>hitShaderBindingTableBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>hitShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
21870        },
21871        {
21872          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-parameter",
21873          "text": " If <code>callableShaderBindingTableBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>callableShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
21874        },
21875        {
21876          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-recording",
21877          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
21878        },
21879        {
21880          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-cmdpool",
21881          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
21882        },
21883        {
21884          "vuid": "VUID-vkCmdTraceRaysNV-commonparent",
21885          "text": " Each of <code>callableShaderBindingTableBuffer</code>, <code>commandBuffer</code>, <code>hitShaderBindingTableBuffer</code>, <code>missShaderBindingTableBuffer</code>, and <code>raygenShaderBindingTableBuffer</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
21886        }
21887      ],
21888      "(VK_NV_ray_tracing)+(VK_IMG_filter_cubic)": [
21889        {
21890          "vuid": "VUID-vkCmdTraceRaysNV-None-02482",
21891          "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG</code>"
21892        },
21893        {
21894          "vuid": "VUID-vkCmdTraceRaysNV-None-02483",
21895          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
21896        }
21897      ],
21898      "(VK_NV_ray_tracing)+(VK_VERSION_1_1)": [
21899        {
21900          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02484",
21901          "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer"
21902        },
21903        {
21904          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02485",
21905          "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer"
21906        },
21907        {
21908          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02486",
21909          "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the ray tracing pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code> reads from any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer"
21910        }
21911      ],
21912      "(VK_NV_ray_tracing)+(VK_NV_corner_sampled_image)": [
21913        {
21914          "vuid": "VUID-vkCmdTraceRaysNV-flags-02487",
21915          "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>"
21916        }
21917      ]
21918    },
21919    "vkCmdBuildAccelerationStructureNV": {
21920      "(VK_NV_ray_tracing)": [
21921        {
21922          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-geometryCount-02241",
21923          "text": " <code>geometryCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxGeometryCount</code>"
21924        },
21925        {
21926          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-dst-02488",
21927          "text": " <code>dst</code> <strong class=\"purple\">must</strong> have been created with compatible <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a> where <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>:::<code>type</code> and <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>flags</code> are identical, <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>instanceCount</code> and <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>geometryCount</code> for <code>dst</code> are greater than or equal to the build size and each geometry in <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>pGeometries</code> for <code>dst</code> has greater than or equal to the number of vertices, indices, and AABBs."
21928        },
21929        {
21930          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02489",
21931          "text": " If <code>update</code> is <code>VK_TRUE</code>, <code>src</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
21932        },
21933        {
21934          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02490",
21935          "text": " If <code>update</code> is <code>VK_TRUE</code>, <code>src</code> <strong class=\"purple\">must</strong> have been built before with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV</code> set in <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>flags</code>"
21936        },
21937        {
21938          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02491",
21939          "text": " If <code>update</code> is <code>VK_FALSE</code>, The <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a>::<code>accelerationStructure</code> set to <code>dst</code> and <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a>::<code>type</code> set to <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>scratch</code> minus <code>scratchOffset</code>"
21940        },
21941        {
21942          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02492",
21943          "text": " If <code>update</code> is <code>VK_TRUE</code>, The <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a>::<code>accelerationStructure</code> set to <code>dst</code> and <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a>::<code>type</code> set to <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>scratch</code> minus <code>scratchOffset</code>"
21944        },
21945        {
21946          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-parameter",
21947          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
21948        },
21949        {
21950          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-pInfo-parameter",
21951          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAccelerationStructureInfoNV</code> structure"
21952        },
21953        {
21954          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-instanceData-parameter",
21955          "text": " If <code>instanceData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>instanceData</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
21956        },
21957        {
21958          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-dst-parameter",
21959          "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle"
21960        },
21961        {
21962          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-src-parameter",
21963          "text": " If <code>src</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>src</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle"
21964        },
21965        {
21966          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-scratch-parameter",
21967          "text": " <code>scratch</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
21968        },
21969        {
21970          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-recording",
21971          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
21972        },
21973        {
21974          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-cmdpool",
21975          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
21976        },
21977        {
21978          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commonparent",
21979          "text": " Each of <code>commandBuffer</code>, <code>dst</code>, <code>instanceData</code>, <code>scratch</code>, and <code>src</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
21980        }
21981      ]
21982    },
21983    "vkCmdWriteAccelerationStructuresPropertiesNV": {
21984      "(VK_NV_ray_tracing)": [
21985        {
21986          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-02242",
21987          "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV</code>"
21988        },
21989        {
21990          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-02493",
21991          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> matching <code>queryType</code>"
21992        },
21993        {
21994          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-02494",
21995          "text": " The queries identified by <code>queryPool</code> and <code>firstQuery</code> <strong class=\"purple\">must</strong> be <em>unavailable</em>"
21996        },
21997        {
21998          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructures-02495",
21999          "text": " All acceleration structures in <code>accelerationStructures</code> <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV</code> if <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV</code>"
22000        },
22001        {
22002          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-parameter",
22003          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
22004        },
22005        {
22006          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-pAccelerationStructures-parameter",
22007          "text": " <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>accelerationStructureCount</code> valid <code>VkAccelerationStructureNV</code> handles"
22008        },
22009        {
22010          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-parameter",
22011          "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value"
22012        },
22013        {
22014          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-parameter",
22015          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
22016        },
22017        {
22018          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-recording",
22019          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
22020        },
22021        {
22022          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-cmdpool",
22023          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
22024        },
22025        {
22026          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructureCount-arraylength",
22027          "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
22028        },
22029        {
22030          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commonparent",
22031          "text": " Each of <code>commandBuffer</code>, <code>queryPool</code>, and the elements of <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
22032        }
22033      ]
22034    },
22035    "vkCmdCopyAccelerationStructureNV": {
22036      "(VK_NV_ray_tracing)": [
22037        {
22038          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-mode-02496",
22039          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV</code> or <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV</code>"
22040        },
22041        {
22042          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-src-02497",
22043          "text": " <code>src</code> <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV</code> if <code>mode</code> is <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV</code>"
22044        },
22045        {
22046          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-parameter",
22047          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
22048        },
22049        {
22050          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-dst-parameter",
22051          "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle"
22052        },
22053        {
22054          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-src-parameter",
22055          "text": " <code>src</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle"
22056        },
22057        {
22058          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-mode-parameter",
22059          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyAccelerationStructureModeNV\">VkCopyAccelerationStructureModeNV</a> value"
22060        },
22061        {
22062          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-recording",
22063          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
22064        },
22065        {
22066          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-cmdpool",
22067          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
22068        },
22069        {
22070          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commonparent",
22071          "text": " Each of <code>commandBuffer</code>, <code>dst</code>, and <code>src</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
22072        }
22073      ]
22074    },
22075    "vkEnumerateInstanceLayerProperties": {
22076      "core": [
22077        {
22078          "vuid": "VUID-vkEnumerateInstanceLayerProperties-pPropertyCount-parameter",
22079          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
22080        },
22081        {
22082          "vuid": "VUID-vkEnumerateInstanceLayerProperties-pProperties-parameter",
22083          "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkLayerProperties</code> structures"
22084        }
22085      ]
22086    },
22087    "vkEnumerateDeviceLayerProperties": {
22088      "core": [
22089        {
22090          "vuid": "VUID-vkEnumerateDeviceLayerProperties-physicalDevice-parameter",
22091          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
22092        },
22093        {
22094          "vuid": "VUID-vkEnumerateDeviceLayerProperties-pPropertyCount-parameter",
22095          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
22096        },
22097        {
22098          "vuid": "VUID-vkEnumerateDeviceLayerProperties-pProperties-parameter",
22099          "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkLayerProperties</code> structures"
22100        }
22101      ]
22102    },
22103    "vkEnumerateInstanceExtensionProperties": {
22104      "core": [
22105        {
22106          "vuid": "VUID-vkEnumerateInstanceExtensionProperties-pLayerName-parameter",
22107          "text": " If <code>pLayerName</code> is not <code>NULL</code>, <code>pLayerName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
22108        },
22109        {
22110          "vuid": "VUID-vkEnumerateInstanceExtensionProperties-pPropertyCount-parameter",
22111          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
22112        },
22113        {
22114          "vuid": "VUID-vkEnumerateInstanceExtensionProperties-pProperties-parameter",
22115          "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkExtensionProperties</code> structures"
22116        }
22117      ]
22118    },
22119    "vkEnumerateDeviceExtensionProperties": {
22120      "core": [
22121        {
22122          "vuid": "VUID-vkEnumerateDeviceExtensionProperties-physicalDevice-parameter",
22123          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
22124        },
22125        {
22126          "vuid": "VUID-vkEnumerateDeviceExtensionProperties-pLayerName-parameter",
22127          "text": " If <code>pLayerName</code> is not <code>NULL</code>, <code>pLayerName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
22128        },
22129        {
22130          "vuid": "VUID-vkEnumerateDeviceExtensionProperties-pPropertyCount-parameter",
22131          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
22132        },
22133        {
22134          "vuid": "VUID-vkEnumerateDeviceExtensionProperties-pProperties-parameter",
22135          "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkExtensionProperties</code> structures"
22136        }
22137      ]
22138    },
22139    "vkGetPhysicalDeviceFeatures": {
22140      "core": [
22141        {
22142          "vuid": "VUID-vkGetPhysicalDeviceFeatures-physicalDevice-parameter",
22143          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
22144        },
22145        {
22146          "vuid": "VUID-vkGetPhysicalDeviceFeatures-pFeatures-parameter",
22147          "text": " <code>pFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceFeatures</code> structure"
22148        }
22149      ]
22150    },
22151    "vkGetPhysicalDeviceFeatures2": {
22152      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
22153        {
22154          "vuid": "VUID-vkGetPhysicalDeviceFeatures2-physicalDevice-parameter",
22155          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
22156        },
22157        {
22158          "vuid": "VUID-vkGetPhysicalDeviceFeatures2-pFeatures-parameter",
22159          "text": " <code>pFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceFeatures2</code> structure"
22160        }
22161      ]
22162    },
22163    "VkPhysicalDeviceFeatures2": {
22164      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
22165        {
22166          "vuid": "VUID-VkPhysicalDeviceFeatures2-sType-sType",
22167          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2</code>"
22168        }
22169      ]
22170    },
22171    "VkPhysicalDeviceVariablePointerFeatures": {
22172      "(VK_VERSION_1_1,VK_KHR_variable_pointers)": [
22173        {
22174          "vuid": "VUID-VkPhysicalDeviceVariablePointerFeatures-variablePointers-01431",
22175          "text": " If <code>variablePointers</code> is enabled then <code>variablePointersStorageBuffer</code> <strong class=\"purple\">must</strong> also be enabled."
22176        },
22177        {
22178          "vuid": "VUID-VkPhysicalDeviceVariablePointerFeatures-sType-sType",
22179          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES</code>"
22180        }
22181      ]
22182    },
22183    "VkPhysicalDeviceMultiviewFeatures": {
22184      "(VK_VERSION_1_1,VK_KHR_multiview)": [
22185        {
22186          "vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-multiviewGeometryShader-00580",
22187          "text": " If <code>multiviewGeometryShader</code> is enabled then <code>multiview</code> <strong class=\"purple\">must</strong> also be enabled."
22188        },
22189        {
22190          "vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-multiviewTessellationShader-00581",
22191          "text": " If <code>multiviewTessellationShader</code> is enabled then <code>multiview</code> <strong class=\"purple\">must</strong> also be enabled."
22192        },
22193        {
22194          "vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-sType-sType",
22195          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES</code>"
22196        }
22197      ]
22198    },
22199    "VkPhysicalDeviceShaderAtomicInt64FeaturesKHR": {
22200      "(VK_KHR_shader_atomic_int64)": [
22201        {
22202          "vuid": "VUID-VkPhysicalDeviceShaderAtomicInt64FeaturesKHR-sType-sType",
22203          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR</code>"
22204        }
22205      ]
22206    },
22207    "VkPhysicalDevice8BitStorageFeaturesKHR": {
22208      "(VK_KHR_8bit_storage)": [
22209        {
22210          "vuid": "VUID-VkPhysicalDevice8BitStorageFeaturesKHR-sType-sType",
22211          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR</code>"
22212        }
22213      ]
22214    },
22215    "VkPhysicalDevice16BitStorageFeatures": {
22216      "(VK_VERSION_1_1,VK_KHR_16bit_storage)": [
22217        {
22218          "vuid": "VUID-VkPhysicalDevice16BitStorageFeatures-sType-sType",
22219          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES</code>"
22220        }
22221      ]
22222    },
22223    "VkPhysicalDeviceFloat16Int8FeaturesKHR": {
22224      "(VK_KHR_shader_float16_int8)": [
22225        {
22226          "vuid": "VUID-VkPhysicalDeviceFloat16Int8FeaturesKHR-sType-sType",
22227          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR</code>"
22228        }
22229      ]
22230    },
22231    "VkPhysicalDeviceSamplerYcbcrConversionFeatures": {
22232      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
22233        {
22234          "vuid": "VUID-VkPhysicalDeviceSamplerYcbcrConversionFeatures-sType-sType",
22235          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES</code>"
22236        }
22237      ]
22238    },
22239    "VkPhysicalDeviceProtectedMemoryFeatures": {
22240      "(VK_VERSION_1_1)": [
22241        {
22242          "vuid": "VUID-VkPhysicalDeviceProtectedMemoryFeatures-sType-sType",
22243          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES</code>"
22244        }
22245      ]
22246    },
22247    "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT": {
22248      "(VK_EXT_blend_operation_advanced)": [
22249        {
22250          "vuid": "VUID-VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT-sType-sType",
22251          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT</code>"
22252        }
22253      ]
22254    },
22255    "VkPhysicalDeviceConditionalRenderingFeaturesEXT": {
22256      "(VK_EXT_conditional_rendering)": [
22257        {
22258          "vuid": "VUID-VkPhysicalDeviceConditionalRenderingFeaturesEXT-sType-sType",
22259          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT</code>"
22260        }
22261      ]
22262    },
22263    "VkPhysicalDeviceShaderDrawParameterFeatures": {
22264      "(VK_VERSION_1_1)": [
22265        {
22266          "vuid": "VUID-VkPhysicalDeviceShaderDrawParameterFeatures-sType-sType",
22267          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES</code>"
22268        }
22269      ]
22270    },
22271    "VkPhysicalDeviceMeshShaderFeaturesNV": {
22272      "(VK_NV_mesh_shader)": [
22273        {
22274          "vuid": "VUID-VkPhysicalDeviceMeshShaderFeaturesNV-sType-sType",
22275          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV</code>"
22276        }
22277      ]
22278    },
22279    "VkPhysicalDeviceDescriptorIndexingFeaturesEXT": {
22280      "(VK_EXT_descriptor_indexing)": [
22281        {
22282          "vuid": "VUID-VkPhysicalDeviceDescriptorIndexingFeaturesEXT-sType-sType",
22283          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT</code>"
22284        }
22285      ]
22286    },
22287    "VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT": {
22288      "(VK_EXT_vertex_attribute_divisor)": [
22289        {
22290          "vuid": "VUID-VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT-sType-sType",
22291          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT</code>"
22292        }
22293      ]
22294    },
22295    "VkPhysicalDeviceASTCDecodeFeaturesEXT": {
22296      "(VK_EXT_astc_decode_mode)": [
22297        {
22298          "vuid": "VUID-VkPhysicalDeviceASTCDecodeFeaturesEXT-sType-sType",
22299          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT</code>"
22300        }
22301      ]
22302    },
22303    "VkPhysicalDeviceTransformFeedbackFeaturesEXT": {
22304      "(VK_EXT_transform_feedback)": [
22305        {
22306          "vuid": "VUID-VkPhysicalDeviceTransformFeedbackFeaturesEXT-sType-sType",
22307          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT</code>"
22308        }
22309      ]
22310    },
22311    "VkPhysicalDeviceVulkanMemoryModelFeaturesKHR": {
22312      "(VK_KHR_vulkan_memory_model)": [
22313        {
22314          "vuid": "VUID-VkPhysicalDeviceVulkanMemoryModelFeaturesKHR-sType-sType",
22315          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR</code>"
22316        }
22317      ]
22318    },
22319    "VkPhysicalDeviceInlineUniformBlockFeaturesEXT": {
22320      "(VK_EXT_inline_uniform_block)": [
22321        {
22322          "vuid": "VUID-VkPhysicalDeviceInlineUniformBlockFeaturesEXT-sType-sType",
22323          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT</code>"
22324        }
22325      ]
22326    },
22327    "VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV": {
22328      "(VK_NV_representative_fragment_test)": [
22329        {
22330          "vuid": "VUID-VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV-sType-sType",
22331          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV</code>"
22332        }
22333      ]
22334    },
22335    "VkPhysicalDeviceExclusiveScissorFeaturesNV": {
22336      "(VK_NV_scissor_exclusive)": [
22337        {
22338          "vuid": "VUID-VkPhysicalDeviceExclusiveScissorFeaturesNV-sType-sType",
22339          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV</code>"
22340        }
22341      ]
22342    },
22343    "VkPhysicalDeviceCornerSampledImageFeaturesNV": {
22344      "(VK_NV_corner_sampled_image)": [
22345        {
22346          "vuid": "VUID-VkPhysicalDeviceCornerSampledImageFeaturesNV-sType-sType",
22347          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV</code>"
22348        }
22349      ]
22350    },
22351    "VkPhysicalDeviceComputeShaderDerivativesFeaturesNV": {
22352      "(VK_NV_compute_shader_derivatives)": [
22353        {
22354          "vuid": "VUID-VkPhysicalDeviceComputeShaderDerivativesFeaturesNV-sType-sType",
22355          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV</code>"
22356        }
22357      ]
22358    },
22359    "VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV": {
22360      "(VK_NV_fragment_shader_barycentric)": [
22361        {
22362          "vuid": "VUID-VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV-sType-sType",
22363          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV</code>"
22364        }
22365      ]
22366    },
22367    "VkPhysicalDeviceShaderImageFootprintFeaturesNV": {
22368      "(VK_NV_shader_image_footprint)": [
22369        {
22370          "vuid": "VUID-VkPhysicalDeviceShaderImageFootprintFeaturesNV-sType-sType",
22371          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV</code>"
22372        }
22373      ]
22374    },
22375    "VkPhysicalDeviceShadingRateImageFeaturesNV": {
22376      "(VK_NV_shading_rate_image)": [
22377        {
22378          "vuid": "VUID-VkPhysicalDeviceShadingRateImageFeaturesNV-sType-sType",
22379          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV</code>"
22380        }
22381      ]
22382    },
22383    "VkPhysicalDeviceFragmentDensityMapFeaturesEXT": {
22384      "(VK_EXT_fragment_density_map)": [
22385        {
22386          "vuid": "VUID-VkPhysicalDeviceFragmentDensityMapFeaturesEXT-sType-sType",
22387          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT</code>"
22388        }
22389      ]
22390    },
22391    "VkPhysicalDeviceScalarBlockLayoutFeaturesEXT": {
22392      "(VK_EXT_scalar_block_layout)": [
22393        {
22394          "vuid": "VUID-VkPhysicalDeviceScalarBlockLayoutFeaturesEXT-sType-sType",
22395          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT</code>"
22396        }
22397      ]
22398    },
22399    "VkPhysicalDeviceDepthClipEnableFeaturesEXT": {
22400      "(VK_EXT_depth_clip_enable)": [
22401        {
22402          "vuid": "VUID-VkPhysicalDeviceDepthClipEnableFeaturesEXT-sType-sType",
22403          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT</code>"
22404        }
22405      ]
22406    },
22407    "VkPhysicalDeviceMemoryPriorityFeaturesEXT": {
22408      "(VK_EXT_memory_priority)": [
22409        {
22410          "vuid": "VUID-VkPhysicalDeviceMemoryPriorityFeaturesEXT-sType-sType",
22411          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT</code>"
22412        }
22413      ]
22414    },
22415    "VkPhysicalDeviceBufferAddressFeaturesEXT": {
22416      "(VK_EXT_buffer_device_address)": [
22417        {
22418          "vuid": "VUID-VkPhysicalDeviceBufferAddressFeaturesEXT-sType-sType",
22419          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT</code>"
22420        }
22421      ]
22422    },
22423    "VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV": {
22424      "(VK_NV_dedicated_allocation_image_aliasing)": [
22425        {
22426          "vuid": "VUID-VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV-sType-sType",
22427          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV</code>"
22428        }
22429      ]
22430    },
22431    "VkPhysicalDeviceCooperativeMatrixFeaturesNV": {
22432      "(VK_NV_cooperative_matrix)": [
22433        {
22434          "vuid": "VUID-VkPhysicalDeviceCooperativeMatrixFeaturesNV-sType-sType",
22435          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV</code>"
22436        }
22437      ]
22438    },
22439    "VkPhysicalDeviceYcbcrImageArraysFeaturesEXT": {
22440      "(VK_EXT_ycbcr_image_arrays)": [
22441        {
22442          "vuid": "VUID-VkPhysicalDeviceYcbcrImageArraysFeaturesEXT-sType-sType",
22443          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT</code>"
22444        }
22445      ]
22446    },
22447    "VkPhysicalDevicePushDescriptorPropertiesKHR": {
22448      "(VK_KHR_push_descriptor)": [
22449        {
22450          "vuid": "VUID-VkPhysicalDevicePushDescriptorPropertiesKHR-sType-sType",
22451          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR</code>"
22452        }
22453      ]
22454    },
22455    "VkPhysicalDeviceMultiviewProperties": {
22456      "(VK_VERSION_1_1,VK_KHR_multiview)": [
22457        {
22458          "vuid": "VUID-VkPhysicalDeviceMultiviewProperties-sType-sType",
22459          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES</code>"
22460        }
22461      ]
22462    },
22463    "VkPhysicalDeviceFloatControlsPropertiesKHR": {
22464      "(VK_KHR_shader_float_controls)": [
22465        {
22466          "vuid": "VUID-VkPhysicalDeviceFloatControlsPropertiesKHR-sType-sType",
22467          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR</code>"
22468        }
22469      ]
22470    },
22471    "VkPhysicalDeviceDiscardRectanglePropertiesEXT": {
22472      "(VK_EXT_discard_rectangles)": [
22473        {
22474          "vuid": "VUID-VkPhysicalDeviceDiscardRectanglePropertiesEXT-sType-sType",
22475          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT</code>"
22476        }
22477      ]
22478    },
22479    "VkPhysicalDeviceSampleLocationsPropertiesEXT": {
22480      "(VK_EXT_sample_locations)": [
22481        {
22482          "vuid": "VUID-VkPhysicalDeviceSampleLocationsPropertiesEXT-sType-sType",
22483          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT</code>"
22484        }
22485      ]
22486    },
22487    "VkPhysicalDeviceExternalMemoryHostPropertiesEXT": {
22488      "(VK_EXT_external_memory_host)": [
22489        {
22490          "vuid": "VUID-VkPhysicalDeviceExternalMemoryHostPropertiesEXT-sType-sType",
22491          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT</code>"
22492        }
22493      ]
22494    },
22495    "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX": {
22496      "(VK_NVX_multiview_per_view_attributes)": [
22497        {
22498          "vuid": "VUID-VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX-sType-sType",
22499          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX</code>"
22500        }
22501      ]
22502    },
22503    "VkPhysicalDevicePointClippingProperties": {
22504      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
22505        {
22506          "vuid": "VUID-VkPhysicalDevicePointClippingProperties-sType-sType",
22507          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES</code>"
22508        }
22509      ]
22510    },
22511    "VkPhysicalDeviceSubgroupProperties": {
22512      "(VK_VERSION_1_1)": [
22513        {
22514          "vuid": "VUID-VkPhysicalDeviceSubgroupProperties-sType-sType",
22515          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES</code>"
22516        }
22517      ]
22518    },
22519    "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT": {
22520      "(VK_EXT_blend_operation_advanced)": [
22521        {
22522          "vuid": "VUID-VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT-sType-sType",
22523          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT</code>"
22524        }
22525      ]
22526    },
22527    "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT": {
22528      "(VK_EXT_vertex_attribute_divisor)": [
22529        {
22530          "vuid": "VUID-VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT-sType-sType",
22531          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT</code>"
22532        }
22533      ]
22534    },
22535    "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT": {
22536      "(VK_EXT_sampler_filter_minmax)": [
22537        {
22538          "vuid": "VUID-VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT-sType-sType",
22539          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT</code>"
22540        }
22541      ]
22542    },
22543    "VkPhysicalDeviceProtectedMemoryProperties": {
22544      "(VK_VERSION_1_1)": [
22545        {
22546          "vuid": "VUID-VkPhysicalDeviceProtectedMemoryProperties-sType-sType",
22547          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES</code>"
22548        }
22549      ]
22550    },
22551    "VkPhysicalDeviceMaintenance3Properties": {
22552      "(VK_VERSION_1_1,VK_KHR_maintenance3)": [
22553        {
22554          "vuid": "VUID-VkPhysicalDeviceMaintenance3Properties-sType-sType",
22555          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES</code>"
22556        }
22557      ]
22558    },
22559    "VkPhysicalDeviceMeshShaderPropertiesNV": {
22560      "(VK_NV_mesh_shader)": [
22561        {
22562          "vuid": "VUID-VkPhysicalDeviceMeshShaderPropertiesNV-sType-sType",
22563          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV</code>"
22564        }
22565      ]
22566    },
22567    "VkPhysicalDeviceDescriptorIndexingPropertiesEXT": {
22568      "(VK_EXT_descriptor_indexing)": [
22569        {
22570          "vuid": "VUID-VkPhysicalDeviceDescriptorIndexingPropertiesEXT-sType-sType",
22571          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT</code>"
22572        }
22573      ]
22574    },
22575    "VkPhysicalDeviceInlineUniformBlockPropertiesEXT": {
22576      "(VK_EXT_inline_uniform_block)": [
22577        {
22578          "vuid": "VUID-VkPhysicalDeviceInlineUniformBlockPropertiesEXT-sType-sType",
22579          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT</code>"
22580        }
22581      ]
22582    },
22583    "VkPhysicalDeviceConservativeRasterizationPropertiesEXT": {
22584      "(VK_EXT_conservative_rasterization)": [
22585        {
22586          "vuid": "VUID-VkPhysicalDeviceConservativeRasterizationPropertiesEXT-sType-sType",
22587          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT</code>"
22588        }
22589      ]
22590    },
22591    "VkPhysicalDeviceFragmentDensityMapPropertiesEXT": {
22592      "(VK_EXT_fragment_density_map)": [
22593        {
22594          "vuid": "VUID-VkPhysicalDeviceFragmentDensityMapPropertiesEXT-sType-sType",
22595          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT</code>"
22596        }
22597      ]
22598    },
22599    "VkPhysicalDeviceShaderCorePropertiesAMD": {
22600      "(VK_AMD_shader_core_properties)": [
22601        {
22602          "vuid": "VUID-VkPhysicalDeviceShaderCorePropertiesAMD-sType-sType",
22603          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD</code>"
22604        }
22605      ]
22606    },
22607    "VkPhysicalDeviceDepthStencilResolvePropertiesKHR": {
22608      "(VK_KHR_depth_stencil_resolve)": [
22609        {
22610          "vuid": "VUID-VkPhysicalDeviceDepthStencilResolvePropertiesKHR-sType-sType",
22611          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR</code>"
22612        }
22613      ]
22614    },
22615    "VkPhysicalDeviceShadingRateImagePropertiesNV": {
22616      "(VK_NV_shading_rate_image)": [
22617        {
22618          "vuid": "VUID-VkPhysicalDeviceShadingRateImagePropertiesNV-sType-sType",
22619          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV</code>"
22620        }
22621      ]
22622    },
22623    "VkPhysicalDeviceTransformFeedbackPropertiesEXT": {
22624      "(VK_EXT_transform_feedback)": [
22625        {
22626          "vuid": "VUID-VkPhysicalDeviceTransformFeedbackPropertiesEXT-sType-sType",
22627          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT</code>"
22628        }
22629      ]
22630    },
22631    "VkPhysicalDeviceRayTracingPropertiesNV": {
22632      "(VK_NV_ray_tracing)": [
22633        {
22634          "vuid": "VUID-VkPhysicalDeviceRayTracingPropertiesNV-sType-sType",
22635          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV</code>"
22636        }
22637      ]
22638    },
22639    "VkPhysicalDeviceCooperativeMatrixPropertiesNV": {
22640      "(VK_NV_cooperative_matrix)": [
22641        {
22642          "vuid": "VUID-VkPhysicalDeviceCooperativeMatrixPropertiesNV-sType-sType",
22643          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV</code>"
22644        }
22645      ]
22646    },
22647    "vkGetPhysicalDeviceMultisamplePropertiesEXT": {
22648      "(VK_EXT_sample_locations)": [
22649        {
22650          "vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-physicalDevice-parameter",
22651          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
22652        },
22653        {
22654          "vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-samples-parameter",
22655          "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
22656        },
22657        {
22658          "vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-pMultisampleProperties-parameter",
22659          "text": " <code>pMultisampleProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMultisamplePropertiesEXT</code> structure"
22660        }
22661      ]
22662    },
22663    "VkMultisamplePropertiesEXT": {
22664      "(VK_EXT_sample_locations)": [
22665        {
22666          "vuid": "VUID-VkMultisamplePropertiesEXT-sType-sType",
22667          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT</code>"
22668        },
22669        {
22670          "vuid": "VUID-VkMultisamplePropertiesEXT-pNext-pNext",
22671          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
22672        }
22673      ]
22674    },
22675    "vkGetPhysicalDeviceFormatProperties": {
22676      "core": [
22677        {
22678          "vuid": "VUID-vkGetPhysicalDeviceFormatProperties-physicalDevice-parameter",
22679          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
22680        },
22681        {
22682          "vuid": "VUID-vkGetPhysicalDeviceFormatProperties-format-parameter",
22683          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
22684        },
22685        {
22686          "vuid": "VUID-vkGetPhysicalDeviceFormatProperties-pFormatProperties-parameter",
22687          "text": " <code>pFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFormatProperties</code> structure"
22688        }
22689      ]
22690    },
22691    "vkGetPhysicalDeviceFormatProperties2": {
22692      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
22693        {
22694          "vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-physicalDevice-parameter",
22695          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
22696        },
22697        {
22698          "vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-format-parameter",
22699          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
22700        },
22701        {
22702          "vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-pFormatProperties-parameter",
22703          "text": " <code>pFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFormatProperties2</code> structure"
22704        }
22705      ]
22706    },
22707    "VkFormatProperties2": {
22708      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
22709        {
22710          "vuid": "VUID-VkFormatProperties2-sType-sType",
22711          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2</code>"
22712        },
22713        {
22714          "vuid": "VUID-VkFormatProperties2-pNext-pNext",
22715          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDrmFormatModifierPropertiesListEXT\">VkDrmFormatModifierPropertiesListEXT</a>"
22716        }
22717      ]
22718    },
22719    "VkDrmFormatModifierPropertiesListEXT": {
22720      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_image_drm_format_modifier)": [
22721        {
22722          "vuid": "VUID-VkDrmFormatModifierPropertiesListEXT-sType-sType",
22723          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT</code>"
22724        }
22725      ]
22726    },
22727    "vkGetPhysicalDeviceImageFormatProperties": {
22728      "(VK_EXT_image_drm_format_modifier)": [
22729        {
22730          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-02248",
22731          "text": " <code>tiling</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>. (Use <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a> instead)."
22732        }
22733      ],
22734      "core": [
22735        {
22736          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-physicalDevice-parameter",
22737          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
22738        },
22739        {
22740          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-format-parameter",
22741          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
22742        },
22743        {
22744          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-type-parameter",
22745          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
22746        },
22747        {
22748          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-parameter",
22749          "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
22750        },
22751        {
22752          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-usage-parameter",
22753          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
22754        },
22755        {
22756          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-usage-requiredbitmask",
22757          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
22758        },
22759        {
22760          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-flags-parameter",
22761          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values"
22762        },
22763        {
22764          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-pImageFormatProperties-parameter",
22765          "text": " <code>pImageFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkImageFormatProperties</code> structure"
22766        }
22767      ]
22768    },
22769    "vkGetPhysicalDeviceExternalImageFormatPropertiesNV": {
22770      "(VK_NV_external_memory_capabilities)": [
22771        {
22772          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-physicalDevice-parameter",
22773          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
22774        },
22775        {
22776          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-format-parameter",
22777          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
22778        },
22779        {
22780          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-type-parameter",
22781          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
22782        },
22783        {
22784          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-tiling-parameter",
22785          "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
22786        },
22787        {
22788          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-parameter",
22789          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
22790        },
22791        {
22792          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-requiredbitmask",
22793          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
22794        },
22795        {
22796          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-flags-parameter",
22797          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values"
22798        },
22799        {
22800          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-externalHandleType-parameter",
22801          "text": " <code>externalHandleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
22802        },
22803        {
22804          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-pExternalImageFormatProperties-parameter",
22805          "text": " <code>pExternalImageFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkExternalImageFormatPropertiesNV</code> structure"
22806        }
22807      ]
22808    },
22809    "vkGetPhysicalDeviceImageFormatProperties2": {
22810      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
22811        {
22812          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pNext-01868",
22813          "text": " If the <code>pNext</code> chain of <code>pImageFormatProperties</code> contains an instance of <a href=\"#VkAndroidHardwareBufferUsageANDROID\">VkAndroidHardwareBufferUsageANDROID</a>, the <code>pNext</code> chain of <code>pImageFormatInfo</code> <strong class=\"purple\">must</strong> contain an instance of <a href=\"#VkPhysicalDeviceExternalImageFormatInfo\">VkPhysicalDeviceExternalImageFormatInfo</a> with <code>handleType</code> set to <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>."
22814        }
22815      ],
22816      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
22817        {
22818          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-physicalDevice-parameter",
22819          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
22820        },
22821        {
22822          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatInfo-parameter",
22823          "text": " <code>pImageFormatInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceImageFormatInfo2</code> structure"
22824        },
22825        {
22826          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatProperties-parameter",
22827          "text": " <code>pImageFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkImageFormatProperties2</code> structure"
22828        }
22829      ]
22830    },
22831    "VkPhysicalDeviceImageFormatInfo2": {
22832      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_image_drm_format_modifier)": [
22833        {
22834          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-02249",
22835          "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code> if and only if the <code>pNext</code> chain contains <a href=\"#VkPhysicalDeviceImageDrmFormatModifierInfoEXT\">VkPhysicalDeviceImageDrmFormatModifierInfoEXT</a>."
22836        },
22837        {
22838          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-02313",
22839          "text": " If <code>tiling</code> is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code> and <code>flags</code> contains <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> contain <a href=\"#VkImageFormatListCreateInfoKHR\">VkImageFormatListCreateInfoKHR</a> with non-zero <code>viewFormatCount</code>."
22840        }
22841      ],
22842      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
22843        {
22844          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-sType-sType",
22845          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2</code>"
22846        },
22847        {
22848          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-pNext-pNext",
22849          "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkImageFormatListCreateInfoKHR\">VkImageFormatListCreateInfoKHR</a>, <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a>, <a href=\"#VkPhysicalDeviceExternalImageFormatInfo\">VkPhysicalDeviceExternalImageFormatInfo</a>, <a href=\"#VkPhysicalDeviceImageDrmFormatModifierInfoEXT\">VkPhysicalDeviceImageDrmFormatModifierInfoEXT</a>, or <a href=\"#VkPhysicalDeviceImageViewImageFormatInfoEXT\">VkPhysicalDeviceImageViewImageFormatInfoEXT</a>"
22850        },
22851        {
22852          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-sType-unique",
22853          "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
22854        },
22855        {
22856          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-format-parameter",
22857          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
22858        },
22859        {
22860          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-type-parameter",
22861          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
22862        },
22863        {
22864          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-parameter",
22865          "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
22866        },
22867        {
22868          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-usage-parameter",
22869          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
22870        },
22871        {
22872          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-usage-requiredbitmask",
22873          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
22874        },
22875        {
22876          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-flags-parameter",
22877          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values"
22878        }
22879      ]
22880    },
22881    "VkImageFormatProperties2": {
22882      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
22883        {
22884          "vuid": "VUID-VkImageFormatProperties2-sType-sType",
22885          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2</code>"
22886        },
22887        {
22888          "vuid": "VUID-VkImageFormatProperties2-pNext-pNext",
22889          "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkAndroidHardwareBufferUsageANDROID\">VkAndroidHardwareBufferUsageANDROID</a>, <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a>, <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>, <a href=\"#VkSamplerYcbcrConversionImageFormatProperties\">VkSamplerYcbcrConversionImageFormatProperties</a>, or <a href=\"#VkTextureLODGatherFormatPropertiesAMD\">VkTextureLODGatherFormatPropertiesAMD</a>"
22890        },
22891        {
22892          "vuid": "VUID-VkImageFormatProperties2-sType-unique",
22893          "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
22894        }
22895      ]
22896    },
22897    "VkTextureLODGatherFormatPropertiesAMD": {
22898      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_AMD_texture_gather_bias_lod)": [
22899        {
22900          "vuid": "VUID-VkTextureLODGatherFormatPropertiesAMD-sType-sType",
22901          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD</code>"
22902        }
22903      ]
22904    },
22905    "VkPhysicalDeviceExternalImageFormatInfo": {
22906      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
22907        {
22908          "vuid": "VUID-VkPhysicalDeviceExternalImageFormatInfo-sType-sType",
22909          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO</code>"
22910        },
22911        {
22912          "vuid": "VUID-VkPhysicalDeviceExternalImageFormatInfo-handleType-parameter",
22913          "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
22914        }
22915      ]
22916    },
22917    "VkExternalImageFormatProperties": {
22918      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
22919        {
22920          "vuid": "VUID-VkExternalImageFormatProperties-sType-sType",
22921          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES</code>"
22922        }
22923      ]
22924    },
22925    "VkPhysicalDeviceImageDrmFormatModifierInfoEXT": {
22926      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_image_drm_format_modifier)": [
22927        {
22928          "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02314",
22929          "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, then <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueFamilyIndexCount</code> <code>uint32_t</code> values."
22930        },
22931        {
22932          "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02315",
22933          "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, then <code>queueFamilyIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>."
22934        },
22935        {
22936          "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02316",
22937          "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than the <code>pQueueFamilyPropertyCount</code> returned by <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties2\">vkGetPhysicalDeviceQueueFamilyProperties2</a> for the <code>physicalDevice</code> that was used to create <code>device</code>."
22938        },
22939        {
22940          "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sType-sType",
22941          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT</code>"
22942        },
22943        {
22944          "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-parameter",
22945          "text": " <code>sharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value"
22946        }
22947      ]
22948    },
22949    "VkSamplerYcbcrConversionImageFormatProperties": {
22950      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
22951        {
22952          "vuid": "VUID-VkSamplerYcbcrConversionImageFormatProperties-sType-sType",
22953          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES</code>"
22954        }
22955      ]
22956    },
22957    "VkAndroidHardwareBufferUsageANDROID": {
22958      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
22959        {
22960          "vuid": "VUID-VkAndroidHardwareBufferUsageANDROID-sType-sType",
22961          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID</code>"
22962        }
22963      ]
22964    },
22965    "VkPhysicalDeviceImageViewImageFormatInfoEXT": {
22966      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_filter_cubic)": [
22967        {
22968          "vuid": "VUID-VkPhysicalDeviceImageViewImageFormatInfoEXT-sType-sType",
22969          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT</code>"
22970        },
22971        {
22972          "vuid": "VUID-VkPhysicalDeviceImageViewImageFormatInfoEXT-imageViewType-parameter",
22973          "text": " <code>imageViewType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageViewType\">VkImageViewType</a> value"
22974        }
22975      ]
22976    },
22977    "VkFilterCubicImageViewImageFormatPropertiesEXT": {
22978      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_filter_cubic)": [
22979        {
22980          "vuid": "VUID-VkFilterCubicImageViewImageFormatPropertiesEXT-sType-sType",
22981          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT</code>"
22982        },
22983        {
22984          "vuid": "VUID-VkFilterCubicImageViewImageFormatPropertiesEXT-pNext-02627",
22985          "text": " If the <code>pNext</code> chain of the <a href=\"#VkImageFormatProperties2\">VkImageFormatProperties2</a> structure contains an instance of <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>, the <code>pNext</code> chain of the <a href=\"#VkPhysicalDeviceImageFormatInfo2\">VkPhysicalDeviceImageFormatInfo2</a> structure <strong class=\"purple\">must</strong> contain an instance of <a href=\"#VkPhysicalDeviceImageViewImageFormatInfoEXT\">VkPhysicalDeviceImageViewImageFormatInfoEXT</a> with an <code>imageViewType</code> that is compatible with <code>imageType</code>."
22986        }
22987      ]
22988    },
22989    "vkGetPhysicalDeviceExternalBufferProperties": {
22990      "(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
22991        {
22992          "vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-physicalDevice-parameter",
22993          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
22994        },
22995        {
22996          "vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-pExternalBufferInfo-parameter",
22997          "text": " <code>pExternalBufferInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceExternalBufferInfo</code> structure"
22998        },
22999        {
23000          "vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-pExternalBufferProperties-parameter",
23001          "text": " <code>pExternalBufferProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkExternalBufferProperties</code> structure"
23002        }
23003      ]
23004    },
23005    "VkPhysicalDeviceExternalBufferInfo": {
23006      "(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
23007        {
23008          "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-sType-sType",
23009          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO</code>"
23010        },
23011        {
23012          "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-pNext-pNext",
23013          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
23014        },
23015        {
23016          "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-flags-parameter",
23017          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferCreateFlagBits\">VkBufferCreateFlagBits</a> values"
23018        },
23019        {
23020          "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-usage-parameter",
23021          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferUsageFlagBits\">VkBufferUsageFlagBits</a> values"
23022        },
23023        {
23024          "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-usage-requiredbitmask",
23025          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
23026        },
23027        {
23028          "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-handleType-parameter",
23029          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
23030        }
23031      ]
23032    },
23033    "VkExternalBufferProperties": {
23034      "(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
23035        {
23036          "vuid": "VUID-VkExternalBufferProperties-sType-sType",
23037          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES</code>"
23038        },
23039        {
23040          "vuid": "VUID-VkExternalBufferProperties-pNext-pNext",
23041          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
23042        }
23043      ]
23044    },
23045    "vkGetPhysicalDeviceExternalSemaphoreProperties": {
23046      "(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [
23047        {
23048          "vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-physicalDevice-parameter",
23049          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
23050        },
23051        {
23052          "vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-pExternalSemaphoreInfo-parameter",
23053          "text": " <code>pExternalSemaphoreInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceExternalSemaphoreInfo</code> structure"
23054        },
23055        {
23056          "vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-pExternalSemaphoreProperties-parameter",
23057          "text": " <code>pExternalSemaphoreProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkExternalSemaphoreProperties</code> structure"
23058        }
23059      ]
23060    },
23061    "VkPhysicalDeviceExternalSemaphoreInfo": {
23062      "(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [
23063        {
23064          "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-sType-sType",
23065          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO</code>"
23066        },
23067        {
23068          "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-pNext-pNext",
23069          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
23070        },
23071        {
23072          "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-handleType-parameter",
23073          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
23074        }
23075      ]
23076    },
23077    "VkExternalSemaphoreProperties": {
23078      "(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [
23079        {
23080          "vuid": "VUID-VkExternalSemaphoreProperties-sType-sType",
23081          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES</code>"
23082        },
23083        {
23084          "vuid": "VUID-VkExternalSemaphoreProperties-pNext-pNext",
23085          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
23086        }
23087      ]
23088    },
23089    "vkGetPhysicalDeviceExternalFenceProperties": {
23090      "(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [
23091        {
23092          "vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-physicalDevice-parameter",
23093          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
23094        },
23095        {
23096          "vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-pExternalFenceInfo-parameter",
23097          "text": " <code>pExternalFenceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceExternalFenceInfo</code> structure"
23098        },
23099        {
23100          "vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-pExternalFenceProperties-parameter",
23101          "text": " <code>pExternalFenceProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkExternalFenceProperties</code> structure"
23102        }
23103      ]
23104    },
23105    "VkPhysicalDeviceExternalFenceInfo": {
23106      "(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [
23107        {
23108          "vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-sType-sType",
23109          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO</code>"
23110        },
23111        {
23112          "vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-pNext-pNext",
23113          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
23114        },
23115        {
23116          "vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-handleType-parameter",
23117          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
23118        }
23119      ]
23120    },
23121    "VkExternalFenceProperties": {
23122      "(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [
23123        {
23124          "vuid": "VUID-VkExternalFenceProperties-sType-sType",
23125          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES</code>"
23126        },
23127        {
23128          "vuid": "VUID-VkExternalFenceProperties-pNext-pNext",
23129          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
23130        }
23131      ]
23132    },
23133    "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT": {
23134      "(VK_EXT_calibrated_timestamps)": [
23135        {
23136          "vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-physicalDevice-parameter",
23137          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
23138        },
23139        {
23140          "vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-pTimeDomainCount-parameter",
23141          "text": " <code>pTimeDomainCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
23142        },
23143        {
23144          "vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-pTimeDomains-parameter",
23145          "text": " If the value referenced by <code>pTimeDomainCount</code> is not <code>0</code>, and <code>pTimeDomains</code> is not <code>NULL</code>, <code>pTimeDomains</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pTimeDomainCount</code> <a href=\"#VkTimeDomainEXT\">VkTimeDomainEXT</a> values"
23146        }
23147      ]
23148    },
23149    "vkSetDebugUtilsObjectNameEXT": {
23150      "(VK_EXT_debug_utils)": [
23151        {
23152          "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-02587",
23153          "text": " <code>pNameInfo</code>-&gt;<code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_OBJECT_TYPE_UNKNOWN</code>"
23154        },
23155        {
23156          "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-02588",
23157          "text": " <code>pNameInfo</code>-&gt;<code>objectHandle</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
23158        },
23159        {
23160          "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-device-parameter",
23161          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
23162        },
23163        {
23164          "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-parameter",
23165          "text": " <code>pNameInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsObjectNameInfoEXT</code> structure"
23166        }
23167      ]
23168    },
23169    "VkDebugUtilsObjectNameInfoEXT": {
23170      "(VK_EXT_debug_utils)": [
23171        {
23172          "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02589",
23173          "text": " If <code>objectType</code> is <code>VK_OBJECT_TYPE_UNKNOWN</code>, <code>objectHandle</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
23174        },
23175        {
23176          "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02590",
23177          "text": " If <code>objectType</code> is not <code>VK_OBJECT_TYPE_UNKNOWN</code>, <code>objectHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> or a valid Vulkan handle of the type associated with <code>objectType</code> as defined in the <a href=\"#debugging-object-types\">VkObjectType and Vulkan Handle Relationship</a> table"
23178        },
23179        {
23180          "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-sType-sType",
23181          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT</code>"
23182        },
23183        {
23184          "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-pNext-pNext",
23185          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
23186        },
23187        {
23188          "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-parameter",
23189          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value"
23190        },
23191        {
23192          "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-pObjectName-parameter",
23193          "text": " If <code>pObjectName</code> is not <code>NULL</code>, <code>pObjectName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
23194        }
23195      ]
23196    },
23197    "vkSetDebugUtilsObjectTagEXT": {
23198      "(VK_EXT_debug_utils)": [
23199        {
23200          "vuid": "VUID-vkSetDebugUtilsObjectTagEXT-device-parameter",
23201          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
23202        },
23203        {
23204          "vuid": "VUID-vkSetDebugUtilsObjectTagEXT-pTagInfo-parameter",
23205          "text": " <code>pTagInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsObjectTagInfoEXT</code> structure"
23206        }
23207      ]
23208    },
23209    "VkDebugUtilsObjectTagInfoEXT": {
23210      "(VK_EXT_debug_utils)": [
23211        {
23212          "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectType-01908",
23213          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_OBJECT_TYPE_UNKNOWN</code>"
23214        },
23215        {
23216          "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectHandle-01910",
23217          "text": " <code>objectHandle</code> <strong class=\"purple\">must</strong> be a valid Vulkan handle of the type associated with <code>objectType</code> as defined in the <a href=\"#debugging-object-types\">VkObjectType and Vulkan Handle Relationship</a> table"
23218        },
23219        {
23220          "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-sType-sType",
23221          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT</code>"
23222        },
23223        {
23224          "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-pNext-pNext",
23225          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
23226        },
23227        {
23228          "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectType-parameter",
23229          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value"
23230        },
23231        {
23232          "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-pTag-parameter",
23233          "text": " <code>pTag</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tagSize</code> bytes"
23234        },
23235        {
23236          "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-tagSize-arraylength",
23237          "text": " <code>tagSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
23238        }
23239      ]
23240    },
23241    "vkQueueBeginDebugUtilsLabelEXT": {
23242      "(VK_EXT_debug_utils)": [
23243        {
23244          "vuid": "VUID-vkQueueBeginDebugUtilsLabelEXT-queue-parameter",
23245          "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
23246        },
23247        {
23248          "vuid": "VUID-vkQueueBeginDebugUtilsLabelEXT-pLabelInfo-parameter",
23249          "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsLabelEXT</code> structure"
23250        }
23251      ]
23252    },
23253    "VkDebugUtilsLabelEXT": {
23254      "(VK_EXT_debug_utils)": [
23255        {
23256          "vuid": "VUID-VkDebugUtilsLabelEXT-sType-sType",
23257          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT</code>"
23258        },
23259        {
23260          "vuid": "VUID-VkDebugUtilsLabelEXT-pNext-pNext",
23261          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
23262        },
23263        {
23264          "vuid": "VUID-VkDebugUtilsLabelEXT-pLabelName-parameter",
23265          "text": " <code>pLabelName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
23266        }
23267      ]
23268    },
23269    "vkQueueEndDebugUtilsLabelEXT": {
23270      "(VK_EXT_debug_utils)": [
23271        {
23272          "vuid": "VUID-vkQueueEndDebugUtilsLabelEXT-None-01911",
23273          "text": " There <strong class=\"purple\">must</strong> be an outstanding <code>vkQueueBeginDebugUtilsLabelEXT</code> command prior to the <code>vkQueueEndDebugUtilsLabelEXT</code> on the queue"
23274        },
23275        {
23276          "vuid": "VUID-vkQueueEndDebugUtilsLabelEXT-queue-parameter",
23277          "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
23278        }
23279      ]
23280    },
23281    "vkQueueInsertDebugUtilsLabelEXT": {
23282      "(VK_EXT_debug_utils)": [
23283        {
23284          "vuid": "VUID-vkQueueInsertDebugUtilsLabelEXT-queue-parameter",
23285          "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
23286        },
23287        {
23288          "vuid": "VUID-vkQueueInsertDebugUtilsLabelEXT-pLabelInfo-parameter",
23289          "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsLabelEXT</code> structure"
23290        }
23291      ]
23292    },
23293    "vkCmdBeginDebugUtilsLabelEXT": {
23294      "(VK_EXT_debug_utils)": [
23295        {
23296          "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-parameter",
23297          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
23298        },
23299        {
23300          "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-pLabelInfo-parameter",
23301          "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsLabelEXT</code> structure"
23302        },
23303        {
23304          "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-recording",
23305          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
23306        },
23307        {
23308          "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-cmdpool",
23309          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
23310        }
23311      ]
23312    },
23313    "vkCmdEndDebugUtilsLabelEXT": {
23314      "(VK_EXT_debug_utils)": [
23315        {
23316          "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01912",
23317          "text": " There <strong class=\"purple\">must</strong> be an outstanding <code>vkCmdBeginDebugUtilsLabelEXT</code> command prior to the <code>vkCmdEndDebugUtilsLabelEXT</code> on the queue that <code>commandBuffer</code> is submitted to"
23318        },
23319        {
23320          "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01913",
23321          "text": " If <code>commandBuffer</code> is a secondary command buffer, there <strong class=\"purple\">must</strong> be an outstanding <code>vkCmdBeginDebugUtilsLabelEXT</code> command recorded to <code>commandBuffer</code> that has not previously been ended by a call to <code>vkCmdEndDebugUtilsLabelEXT</code>."
23322        },
23323        {
23324          "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-parameter",
23325          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
23326        },
23327        {
23328          "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-recording",
23329          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
23330        },
23331        {
23332          "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-cmdpool",
23333          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
23334        }
23335      ]
23336    },
23337    "vkCmdInsertDebugUtilsLabelEXT": {
23338      "(VK_EXT_debug_utils)": [
23339        {
23340          "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-parameter",
23341          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
23342        },
23343        {
23344          "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-pLabelInfo-parameter",
23345          "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsLabelEXT</code> structure"
23346        },
23347        {
23348          "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-recording",
23349          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
23350        },
23351        {
23352          "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-cmdpool",
23353          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
23354        }
23355      ]
23356    },
23357    "vkCreateDebugUtilsMessengerEXT": {
23358      "(VK_EXT_debug_utils)": [
23359        {
23360          "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-instance-parameter",
23361          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
23362        },
23363        {
23364          "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pCreateInfo-parameter",
23365          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsMessengerCreateInfoEXT</code> structure"
23366        },
23367        {
23368          "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pAllocator-parameter",
23369          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
23370        },
23371        {
23372          "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pMessenger-parameter",
23373          "text": " <code>pMessenger</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDebugUtilsMessengerEXT</code> handle"
23374        }
23375      ]
23376    },
23377    "VkDebugUtilsMessengerCreateInfoEXT": {
23378      "(VK_EXT_debug_utils)": [
23379        {
23380          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-pfnUserCallback-01914",
23381          "text": " <code>pfnUserCallback</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#PFN_vkDebugUtilsMessengerCallbackEXT\">PFN_vkDebugUtilsMessengerCallbackEXT</a>"
23382        },
23383        {
23384          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-sType-sType",
23385          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT</code>"
23386        },
23387        {
23388          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-flags-zerobitmask",
23389          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
23390        },
23391        {
23392          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-parameter",
23393          "text": " <code>messageSeverity</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugUtilsMessageSeverityFlagBitsEXT\">VkDebugUtilsMessageSeverityFlagBitsEXT</a> values"
23394        },
23395        {
23396          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-requiredbitmask",
23397          "text": " <code>messageSeverity</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
23398        },
23399        {
23400          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-parameter",
23401          "text": " <code>messageType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugUtilsMessageTypeFlagBitsEXT\">VkDebugUtilsMessageTypeFlagBitsEXT</a> values"
23402        },
23403        {
23404          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-requiredbitmask",
23405          "text": " <code>messageType</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
23406        }
23407      ]
23408    },
23409    "VkDebugUtilsMessengerCallbackDataEXT": {
23410      "(VK_EXT_debug_utils)": [
23411        {
23412          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-sType-sType",
23413          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT</code>"
23414        },
23415        {
23416          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pNext-pNext",
23417          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
23418        },
23419        {
23420          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-flags-zerobitmask",
23421          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
23422        },
23423        {
23424          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pMessageIdName-parameter",
23425          "text": " If <code>pMessageIdName</code> is not <code>NULL</code>, <code>pMessageIdName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
23426        },
23427        {
23428          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pMessage-parameter",
23429          "text": " <code>pMessage</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
23430        },
23431        {
23432          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pQueueLabels-parameter",
23433          "text": " If <code>queueLabelCount</code> is not <code>0</code>, <code>pQueueLabels</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueLabelCount</code> valid <code>VkDebugUtilsLabelEXT</code> structures"
23434        },
23435        {
23436          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pCmdBufLabels-parameter",
23437          "text": " If <code>cmdBufLabelCount</code> is not <code>0</code>, <code>pCmdBufLabels</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>cmdBufLabelCount</code> valid <code>VkDebugUtilsLabelEXT</code> structures"
23438        },
23439        {
23440          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pObjects-parameter",
23441          "text": " If <code>objectCount</code> is not <code>0</code>, <code>pObjects</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> valid <code>VkDebugUtilsObjectNameInfoEXT</code> structures"
23442        }
23443      ]
23444    },
23445    "vkSubmitDebugUtilsMessageEXT": {
23446      "(VK_EXT_debug_utils)": [
23447        {
23448          "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-objectType-02591",
23449          "text": " <code>objectType</code> member of each element of <code>pCallbackData</code>-&gt;<code>pObjects</code> <strong class=\"purple\">must</strong> not be <code>VK_OBJECT_TYPE_UNKNOWN</code>"
23450        },
23451        {
23452          "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-instance-parameter",
23453          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
23454        },
23455        {
23456          "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageSeverity-parameter",
23457          "text": " <code>messageSeverity</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugUtilsMessageSeverityFlagBitsEXT\">VkDebugUtilsMessageSeverityFlagBitsEXT</a> value"
23458        },
23459        {
23460          "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageTypes-parameter",
23461          "text": " <code>messageTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugUtilsMessageTypeFlagBitsEXT\">VkDebugUtilsMessageTypeFlagBitsEXT</a> values"
23462        },
23463        {
23464          "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageTypes-requiredbitmask",
23465          "text": " <code>messageTypes</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
23466        },
23467        {
23468          "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-pCallbackData-parameter",
23469          "text": " <code>pCallbackData</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsMessengerCallbackDataEXT</code> structure"
23470        }
23471      ]
23472    },
23473    "vkDestroyDebugUtilsMessengerEXT": {
23474      "(VK_EXT_debug_utils)": [
23475        {
23476          "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-01915",
23477          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>messenger</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
23478        },
23479        {
23480          "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-01916",
23481          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>messenger</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
23482        },
23483        {
23484          "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-instance-parameter",
23485          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
23486        },
23487        {
23488          "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-parameter",
23489          "text": " <code>messenger</code> <strong class=\"purple\">must</strong> be a valid <code>VkDebugUtilsMessengerEXT</code> handle"
23490        },
23491        {
23492          "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-pAllocator-parameter",
23493          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
23494        },
23495        {
23496          "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-parent",
23497          "text": " <code>messenger</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>instance</code>"
23498        }
23499      ]
23500    },
23501    "vkDebugMarkerSetObjectNameEXT": {
23502      "(VK_EXT_debug_marker)": [
23503        {
23504          "vuid": "VUID-vkDebugMarkerSetObjectNameEXT-device-parameter",
23505          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
23506        },
23507        {
23508          "vuid": "VUID-vkDebugMarkerSetObjectNameEXT-pNameInfo-parameter",
23509          "text": " <code>pNameInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugMarkerObjectNameInfoEXT</code> structure"
23510        }
23511      ]
23512    },
23513    "VkDebugMarkerObjectNameInfoEXT": {
23514      "(VK_EXT_debug_marker)": [
23515        {
23516          "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-objectType-01490",
23517          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT</code>"
23518        },
23519        {
23520          "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-object-01491",
23521          "text": " <code>object</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
23522        },
23523        {
23524          "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-object-01492",
23525          "text": " <code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object of the type associated with <code>objectType</code> as defined in <a href=\"#debug-report-object-types\">VkDebugReportObjectTypeEXT and Vulkan Handle Relationship</a>."
23526        },
23527        {
23528          "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-sType-sType",
23529          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT</code>"
23530        },
23531        {
23532          "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-pNext-pNext",
23533          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
23534        },
23535        {
23536          "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-objectType-parameter",
23537          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> value"
23538        },
23539        {
23540          "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-pObjectName-parameter",
23541          "text": " <code>pObjectName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
23542        }
23543      ]
23544    },
23545    "vkDebugMarkerSetObjectTagEXT": {
23546      "(VK_EXT_debug_marker)": [
23547        {
23548          "vuid": "VUID-vkDebugMarkerSetObjectTagEXT-device-parameter",
23549          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
23550        },
23551        {
23552          "vuid": "VUID-vkDebugMarkerSetObjectTagEXT-pTagInfo-parameter",
23553          "text": " <code>pTagInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugMarkerObjectTagInfoEXT</code> structure"
23554        }
23555      ]
23556    },
23557    "VkDebugMarkerObjectTagInfoEXT": {
23558      "(VK_EXT_debug_marker)": [
23559        {
23560          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-objectType-01493",
23561          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT</code>"
23562        },
23563        {
23564          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-object-01494",
23565          "text": " <code>object</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
23566        },
23567        {
23568          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-object-01495",
23569          "text": " <code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object of the type associated with <code>objectType</code> as defined in <a href=\"#debug-report-object-types\">VkDebugReportObjectTypeEXT and Vulkan Handle Relationship</a>."
23570        },
23571        {
23572          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-sType-sType",
23573          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT</code>"
23574        },
23575        {
23576          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-pNext-pNext",
23577          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
23578        },
23579        {
23580          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-objectType-parameter",
23581          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> value"
23582        },
23583        {
23584          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-pTag-parameter",
23585          "text": " <code>pTag</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tagSize</code> bytes"
23586        },
23587        {
23588          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-tagSize-arraylength",
23589          "text": " <code>tagSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
23590        }
23591      ]
23592    },
23593    "vkCmdDebugMarkerBeginEXT": {
23594      "(VK_EXT_debug_marker)": [
23595        {
23596          "vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-parameter",
23597          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
23598        },
23599        {
23600          "vuid": "VUID-vkCmdDebugMarkerBeginEXT-pMarkerInfo-parameter",
23601          "text": " <code>pMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugMarkerMarkerInfoEXT</code> structure"
23602        },
23603        {
23604          "vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-recording",
23605          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
23606        },
23607        {
23608          "vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-cmdpool",
23609          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
23610        }
23611      ]
23612    },
23613    "VkDebugMarkerMarkerInfoEXT": {
23614      "(VK_EXT_debug_marker)": [
23615        {
23616          "vuid": "VUID-VkDebugMarkerMarkerInfoEXT-sType-sType",
23617          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT</code>"
23618        },
23619        {
23620          "vuid": "VUID-VkDebugMarkerMarkerInfoEXT-pNext-pNext",
23621          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
23622        },
23623        {
23624          "vuid": "VUID-VkDebugMarkerMarkerInfoEXT-pMarkerName-parameter",
23625          "text": " <code>pMarkerName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
23626        }
23627      ]
23628    },
23629    "vkCmdDebugMarkerEndEXT": {
23630      "(VK_EXT_debug_marker)": [
23631        {
23632          "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-01239",
23633          "text": " There <strong class=\"purple\">must</strong> be an outstanding <a href=\"#vkCmdDebugMarkerBeginEXT\">vkCmdDebugMarkerBeginEXT</a> command prior to the <code>vkCmdDebugMarkerEndEXT</code> on the queue that <code>commandBuffer</code> is submitted to"
23634        },
23635        {
23636          "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-01240",
23637          "text": " If <code>commandBuffer</code> is a secondary command buffer, there <strong class=\"purple\">must</strong> be an outstanding <a href=\"#vkCmdDebugMarkerBeginEXT\">vkCmdDebugMarkerBeginEXT</a> command recorded to <code>commandBuffer</code> that has not previously been ended by a call to <a href=\"#vkCmdDebugMarkerEndEXT\">vkCmdDebugMarkerEndEXT</a>."
23638        },
23639        {
23640          "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-parameter",
23641          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
23642        },
23643        {
23644          "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-recording",
23645          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
23646        },
23647        {
23648          "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-cmdpool",
23649          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
23650        }
23651      ]
23652    },
23653    "vkCmdDebugMarkerInsertEXT": {
23654      "(VK_EXT_debug_marker)": [
23655        {
23656          "vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-parameter",
23657          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
23658        },
23659        {
23660          "vuid": "VUID-vkCmdDebugMarkerInsertEXT-pMarkerInfo-parameter",
23661          "text": " <code>pMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugMarkerMarkerInfoEXT</code> structure"
23662        },
23663        {
23664          "vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-recording",
23665          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
23666        },
23667        {
23668          "vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-cmdpool",
23669          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
23670        }
23671      ]
23672    },
23673    "vkCreateDebugReportCallbackEXT": {
23674      "(VK_EXT_debug_report)": [
23675        {
23676          "vuid": "VUID-vkCreateDebugReportCallbackEXT-instance-parameter",
23677          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
23678        },
23679        {
23680          "vuid": "VUID-vkCreateDebugReportCallbackEXT-pCreateInfo-parameter",
23681          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugReportCallbackCreateInfoEXT</code> structure"
23682        },
23683        {
23684          "vuid": "VUID-vkCreateDebugReportCallbackEXT-pAllocator-parameter",
23685          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
23686        },
23687        {
23688          "vuid": "VUID-vkCreateDebugReportCallbackEXT-pCallback-parameter",
23689          "text": " <code>pCallback</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDebugReportCallbackEXT</code> handle"
23690        }
23691      ]
23692    },
23693    "VkDebugReportCallbackCreateInfoEXT": {
23694      "(VK_EXT_debug_report)": [
23695        {
23696          "vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-pfnCallback-01385",
23697          "text": " <code>pfnCallback</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#PFN_vkDebugReportCallbackEXT\">PFN_vkDebugReportCallbackEXT</a>"
23698        },
23699        {
23700          "vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-sType-sType",
23701          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT</code>"
23702        },
23703        {
23704          "vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-flags-parameter",
23705          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugReportFlagBitsEXT\">VkDebugReportFlagBitsEXT</a> values"
23706        }
23707      ]
23708    },
23709    "vkDebugReportMessageEXT": {
23710      "(VK_EXT_debug_report)": [
23711        {
23712          "vuid": "VUID-vkDebugReportMessageEXT-object-01241",
23713          "text": " <code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
23714        },
23715        {
23716          "vuid": "VUID-vkDebugReportMessageEXT-objectType-01498",
23717          "text": " If <code>objectType</code> is not <code>VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT</code> and <code>object</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object of the corresponding type associated with <code>objectType</code> as defined in <a href=\"#debug-report-object-types\">VkDebugReportObjectTypeEXT and Vulkan Handle Relationship</a>."
23718        },
23719        {
23720          "vuid": "VUID-vkDebugReportMessageEXT-instance-parameter",
23721          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
23722        },
23723        {
23724          "vuid": "VUID-vkDebugReportMessageEXT-flags-parameter",
23725          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugReportFlagBitsEXT\">VkDebugReportFlagBitsEXT</a> values"
23726        },
23727        {
23728          "vuid": "VUID-vkDebugReportMessageEXT-flags-requiredbitmask",
23729          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
23730        },
23731        {
23732          "vuid": "VUID-vkDebugReportMessageEXT-objectType-parameter",
23733          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> value"
23734        },
23735        {
23736          "vuid": "VUID-vkDebugReportMessageEXT-pLayerPrefix-parameter",
23737          "text": " <code>pLayerPrefix</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
23738        },
23739        {
23740          "vuid": "VUID-vkDebugReportMessageEXT-pMessage-parameter",
23741          "text": " <code>pMessage</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
23742        }
23743      ]
23744    },
23745    "vkDestroyDebugReportCallbackEXT": {
23746      "(VK_EXT_debug_report)": [
23747        {
23748          "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-01242",
23749          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>callback</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
23750        },
23751        {
23752          "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-01243",
23753          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>callback</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
23754        },
23755        {
23756          "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-parameter",
23757          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
23758        },
23759        {
23760          "vuid": "VUID-vkDestroyDebugReportCallbackEXT-callback-parameter",
23761          "text": " <code>callback</code> <strong class=\"purple\">must</strong> be a valid <code>VkDebugReportCallbackEXT</code> handle"
23762        },
23763        {
23764          "vuid": "VUID-vkDestroyDebugReportCallbackEXT-pAllocator-parameter",
23765          "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
23766        },
23767        {
23768          "vuid": "VUID-vkDestroyDebugReportCallbackEXT-callback-parent",
23769          "text": " <code>callback</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>instance</code>"
23770        }
23771      ]
23772    },
23773    "vkCmdSetCheckpointNV": {
23774      "(VK_NV_device_diagnostic_checkpoints)": [
23775        {
23776          "vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-parameter",
23777          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
23778        },
23779        {
23780          "vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-recording",
23781          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
23782        },
23783        {
23784          "vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-cmdpool",
23785          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations"
23786        }
23787      ]
23788    },
23789    "vkGetQueueCheckpointDataNV": {
23790      "(VK_NV_device_diagnostic_checkpoints)": [
23791        {
23792          "vuid": "VUID-vkGetQueueCheckpointDataNV-queue-02025",
23793          "text": " The device that <code>queue</code> belongs to <strong class=\"purple\">must</strong> be in the lost state"
23794        },
23795        {
23796          "vuid": "VUID-vkGetQueueCheckpointDataNV-queue-parameter",
23797          "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
23798        },
23799        {
23800          "vuid": "VUID-vkGetQueueCheckpointDataNV-pCheckpointDataCount-parameter",
23801          "text": " <code>pCheckpointDataCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
23802        },
23803        {
23804          "vuid": "VUID-vkGetQueueCheckpointDataNV-pCheckpointData-parameter",
23805          "text": " If the value referenced by <code>pCheckpointDataCount</code> is not <code>0</code>, and <code>pCheckpointData</code> is not <code>NULL</code>, <code>pCheckpointData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pCheckpointDataCount</code> <code>VkCheckpointDataNV</code> structures"
23806        }
23807      ]
23808    },
23809    "VkCheckpointDataNV": {
23810      "(VK_NV_device_diagnostic_checkpoints)": [
23811        {
23812          "vuid": "VUID-VkCheckpointDataNV-sType-sType",
23813          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV</code>"
23814        },
23815        {
23816          "vuid": "VUID-VkCheckpointDataNV-pNext-pNext",
23817          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
23818        }
23819      ]
23820    }
23821  }
23822}