1{
2  "version info": {
3    "schema version": 2,
4    "api version": "1.2.145",
5    "comment": "from git branch: github-master commit: 1e4e9cad5c761f05463ab65aa95e38b0dac534bc",
6    "date": "2020-06-20 14:48:00Z"
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 <a href=\"#VkInstance\">VkInstance</a> 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 <a href=\"#VkDevice\">VkDevice</a> 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 <a href=\"#VkInstanceCreateInfo\">VkInstanceCreateInfo</a> 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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> 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 <a href=\"#VkInstance\">VkInstance</a> 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": " The <code>sType</code> value of each struct 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 <a href=\"#VkApplicationInfo\">VkApplicationInfo</a> 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-pEnabledValidationFeatures-02967",
113          "text": " If the <code>pEnabledValidationFeatures</code> array contains <code>VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT</code>, then it <strong class=\"purple\">must</strong> also contain <code>VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT</code>"
114        },
115        {
116          "vuid": "VUID-VkValidationFeaturesEXT-pEnabledValidationFeatures-02968",
117          "text": " If the <code>pEnabledValidationFeatures</code> array contains <code>VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT</code>, then it <strong class=\"purple\">must</strong> not contain <code>VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT</code>"
118        },
119        {
120          "vuid": "VUID-VkValidationFeaturesEXT-sType-sType",
121          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT</code>"
122        },
123        {
124          "vuid": "VUID-VkValidationFeaturesEXT-pEnabledValidationFeatures-parameter",
125          "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"
126        },
127        {
128          "vuid": "VUID-VkValidationFeaturesEXT-pDisabledValidationFeatures-parameter",
129          "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"
130        }
131      ]
132    },
133    "VkApplicationInfo": {
134      "core": [
135        {
136          "vuid": "VUID-VkApplicationInfo-apiVersion-04010",
137          "text": " If <code>apiVersion</code> is not <code>0</code>, then it <strong class=\"purple\">must</strong> be greater or equal to <a href=\"#VK_API_VERSION_1_0\">VK_API_VERSION_1_0</a>"
138        },
139        {
140          "vuid": "VUID-VkApplicationInfo-sType-sType",
141          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_APPLICATION_INFO</code>"
142        },
143        {
144          "vuid": "VUID-VkApplicationInfo-pNext-pNext",
145          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
146        },
147        {
148          "vuid": "VUID-VkApplicationInfo-pApplicationName-parameter",
149          "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"
150        },
151        {
152          "vuid": "VUID-VkApplicationInfo-pEngineName-parameter",
153          "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"
154        }
155      ]
156    },
157    "vkDestroyInstance": {
158      "core": [
159        {
160          "vuid": "VUID-vkDestroyInstance-instance-00629",
161          "text": " All child objects created using <code>instance</code> <strong class=\"purple\">must</strong> have been destroyed prior to destroying <code>instance</code>"
162        },
163        {
164          "vuid": "VUID-vkDestroyInstance-instance-00630",
165          "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"
166        },
167        {
168          "vuid": "VUID-vkDestroyInstance-instance-00631",
169          "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>"
170        },
171        {
172          "vuid": "VUID-vkDestroyInstance-instance-parameter",
173          "text": " If <code>instance</code> is not <code>NULL</code>, <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
174        },
175        {
176          "vuid": "VUID-vkDestroyInstance-pAllocator-parameter",
177          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
178        }
179      ]
180    },
181    "vkEnumeratePhysicalDevices": {
182      "core": [
183        {
184          "vuid": "VUID-vkEnumeratePhysicalDevices-instance-parameter",
185          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
186        },
187        {
188          "vuid": "VUID-vkEnumeratePhysicalDevices-pPhysicalDeviceCount-parameter",
189          "text": " <code>pPhysicalDeviceCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
190        },
191        {
192          "vuid": "VUID-vkEnumeratePhysicalDevices-pPhysicalDevices-parameter",
193          "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> <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handles"
194        }
195      ]
196    },
197    "vkGetPhysicalDeviceProperties": {
198      "core": [
199        {
200          "vuid": "VUID-vkGetPhysicalDeviceProperties-physicalDevice-parameter",
201          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
202        },
203        {
204          "vuid": "VUID-vkGetPhysicalDeviceProperties-pProperties-parameter",
205          "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a> structure"
206        }
207      ]
208    },
209    "vkGetPhysicalDeviceProperties2": {
210      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
211        {
212          "vuid": "VUID-vkGetPhysicalDeviceProperties2-physicalDevice-parameter",
213          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
214        },
215        {
216          "vuid": "VUID-vkGetPhysicalDeviceProperties2-pProperties-parameter",
217          "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPhysicalDeviceProperties2\">VkPhysicalDeviceProperties2</a> structure"
218        }
219      ]
220    },
221    "VkPhysicalDeviceProperties2": {
222      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
223        {
224          "vuid": "VUID-VkPhysicalDeviceProperties2-sType-sType",
225          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2</code>"
226        },
227        {
228          "vuid": "VUID-VkPhysicalDeviceProperties2-pNext-pNext",
229          "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=\"#VkPhysicalDeviceCustomBorderColorPropertiesEXT\">VkPhysicalDeviceCustomBorderColorPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingProperties\">VkPhysicalDeviceDescriptorIndexingProperties</a>, <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</a>, <a href=\"#VkPhysicalDeviceDiscardRectanglePropertiesEXT\">VkPhysicalDeviceDiscardRectanglePropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDriverProperties\">VkPhysicalDeviceDriverProperties</a>, <a href=\"#VkPhysicalDeviceExternalMemoryHostPropertiesEXT\">VkPhysicalDeviceExternalMemoryHostPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFloatControlsProperties\">VkPhysicalDeviceFloatControlsProperties</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapPropertiesEXT\">VkPhysicalDeviceFragmentDensityMapPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceIDProperties\">VkPhysicalDeviceIDProperties</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockPropertiesEXT\">VkPhysicalDeviceInlineUniformBlockPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceLineRasterizationPropertiesEXT\">VkPhysicalDeviceLineRasterizationPropertiesEXT</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=\"#VkPhysicalDevicePerformanceQueryPropertiesKHR\">VkPhysicalDevicePerformanceQueryPropertiesKHR</a>, <a href=\"#VkPhysicalDevicePointClippingProperties\">VkPhysicalDevicePointClippingProperties</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryProperties\">VkPhysicalDeviceProtectedMemoryProperties</a>, <a href=\"#VkPhysicalDevicePushDescriptorPropertiesKHR\">VkPhysicalDevicePushDescriptorPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingPropertiesKHR\">VkPhysicalDeviceRayTracingPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>, <a href=\"#VkPhysicalDeviceRobustness2PropertiesEXT\">VkPhysicalDeviceRobustness2PropertiesEXT</a>, <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceSamplerFilterMinmaxProperties\">VkPhysicalDeviceSamplerFilterMinmaxProperties</a>, <a href=\"#VkPhysicalDeviceShaderCoreProperties2AMD\">VkPhysicalDeviceShaderCoreProperties2AMD</a>, <a href=\"#VkPhysicalDeviceShaderCorePropertiesAMD\">VkPhysicalDeviceShaderCorePropertiesAMD</a>, <a href=\"#VkPhysicalDeviceShaderSMBuiltinsPropertiesNV\">VkPhysicalDeviceShaderSMBuiltinsPropertiesNV</a>, <a href=\"#VkPhysicalDeviceShadingRateImagePropertiesNV\">VkPhysicalDeviceShadingRateImagePropertiesNV</a>, <a href=\"#VkPhysicalDeviceSubgroupProperties\">VkPhysicalDeviceSubgroupProperties</a>, <a href=\"#VkPhysicalDeviceSubgroupSizeControlPropertiesEXT\">VkPhysicalDeviceSubgroupSizeControlPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\">VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceTimelineSemaphoreProperties\">VkPhysicalDeviceTimelineSemaphoreProperties</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT\">VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceVulkan11Properties\">VkPhysicalDeviceVulkan11Properties</a>, or <a href=\"#VkPhysicalDeviceVulkan12Properties\">VkPhysicalDeviceVulkan12Properties</a>"
230        },
231        {
232          "vuid": "VUID-VkPhysicalDeviceProperties2-sType-unique",
233          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
234        }
235      ]
236    },
237    "VkPhysicalDeviceVulkan11Properties": {
238      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_2)": [
239        {
240          "vuid": "VUID-VkPhysicalDeviceVulkan11Properties-sType-sType",
241          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES</code>"
242        }
243      ]
244    },
245    "VkPhysicalDeviceVulkan12Properties": {
246      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_2)": [
247        {
248          "vuid": "VUID-VkPhysicalDeviceVulkan12Properties-sType-sType",
249          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES</code>"
250        }
251      ]
252    },
253    "VkPhysicalDeviceIDProperties": {
254      "(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)": [
255        {
256          "vuid": "VUID-VkPhysicalDeviceIDProperties-sType-sType",
257          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES</code>"
258        }
259      ]
260    },
261    "VkPhysicalDeviceDriverProperties": {
262      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_2,VK_KHR_driver_properties)": [
263        {
264          "vuid": "VUID-VkPhysicalDeviceDriverProperties-sType-sType",
265          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES</code>"
266        }
267      ]
268    },
269    "VkPhysicalDevicePCIBusInfoPropertiesEXT": {
270      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_pci_bus_info)": [
271        {
272          "vuid": "VUID-VkPhysicalDevicePCIBusInfoPropertiesEXT-sType-sType",
273          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT</code>"
274        }
275      ]
276    },
277    "vkGetPhysicalDeviceQueueFamilyProperties": {
278      "core": [
279        {
280          "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties-physicalDevice-parameter",
281          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
282        },
283        {
284          "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties-pQueueFamilyPropertyCount-parameter",
285          "text": " <code>pQueueFamilyPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
286        },
287        {
288          "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties-pQueueFamilyProperties-parameter",
289          "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> <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a> structures"
290        }
291      ]
292    },
293    "vkGetPhysicalDeviceQueueFamilyProperties2": {
294      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
295        {
296          "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-physicalDevice-parameter",
297          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
298        },
299        {
300          "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-pQueueFamilyPropertyCount-parameter",
301          "text": " <code>pQueueFamilyPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
302        },
303        {
304          "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-pQueueFamilyProperties-parameter",
305          "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> <a href=\"#VkQueueFamilyProperties2\">VkQueueFamilyProperties2</a> structures"
306        }
307      ]
308    },
309    "VkQueueFamilyProperties2": {
310      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
311        {
312          "vuid": "VUID-VkQueueFamilyProperties2-sType-sType",
313          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2</code>"
314        },
315        {
316          "vuid": "VUID-VkQueueFamilyProperties2-pNext-pNext",
317          "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>"
318        },
319        {
320          "vuid": "VUID-VkQueueFamilyProperties2-sType-unique",
321          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
322        }
323      ]
324    },
325    "VkQueueFamilyCheckpointPropertiesNV": {
326      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_NV_device_diagnostic_checkpoints)": [
327        {
328          "vuid": "VUID-VkQueueFamilyCheckpointPropertiesNV-sType-sType",
329          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV</code>"
330        }
331      ]
332    },
333    "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR": {
334      "(VK_KHR_performance_query)": [
335        {
336          "vuid": "VUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-physicalDevice-parameter",
337          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
338        },
339        {
340          "vuid": "VUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-pCounterCount-parameter",
341          "text": " <code>pCounterCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
342        },
343        {
344          "vuid": "VUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-pCounters-parameter",
345          "text": " If the value referenced by <code>pCounterCount</code> is not <code>0</code>, and <code>pCounters</code> is not <code>NULL</code>, <code>pCounters</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pCounterCount</code> <a href=\"#VkPerformanceCounterKHR\">VkPerformanceCounterKHR</a> structures"
346        },
347        {
348          "vuid": "VUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-pCounterDescriptions-parameter",
349          "text": " If the value referenced by <code>pCounterCount</code> is not <code>0</code>, and <code>pCounterDescriptions</code> is not <code>NULL</code>, <code>pCounterDescriptions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pCounterCount</code> <a href=\"#VkPerformanceCounterDescriptionKHR\">VkPerformanceCounterDescriptionKHR</a> structures"
350        }
351      ]
352    },
353    "VkPerformanceCounterKHR": {
354      "(VK_KHR_performance_query)": [
355        {
356          "vuid": "VUID-VkPerformanceCounterKHR-sType-sType",
357          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR</code>"
358        },
359        {
360          "vuid": "VUID-VkPerformanceCounterKHR-pNext-pNext",
361          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
362        }
363      ]
364    },
365    "VkPerformanceCounterDescriptionKHR": {
366      "(VK_KHR_performance_query)": [
367        {
368          "vuid": "VUID-VkPerformanceCounterDescriptionKHR-sType-sType",
369          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR</code>"
370        },
371        {
372          "vuid": "VUID-VkPerformanceCounterDescriptionKHR-pNext-pNext",
373          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
374        }
375      ]
376    },
377    "vkEnumeratePhysicalDeviceGroups": {
378      "(VK_VERSION_1_1,VK_KHR_device_group_creation)": [
379        {
380          "vuid": "VUID-vkEnumeratePhysicalDeviceGroups-instance-parameter",
381          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
382        },
383        {
384          "vuid": "VUID-vkEnumeratePhysicalDeviceGroups-pPhysicalDeviceGroupCount-parameter",
385          "text": " <code>pPhysicalDeviceGroupCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
386        },
387        {
388          "vuid": "VUID-vkEnumeratePhysicalDeviceGroups-pPhysicalDeviceGroupProperties-parameter",
389          "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> <a href=\"#VkPhysicalDeviceGroupProperties\">VkPhysicalDeviceGroupProperties</a> structures"
390        }
391      ]
392    },
393    "VkPhysicalDeviceGroupProperties": {
394      "(VK_VERSION_1_1,VK_KHR_device_group_creation)": [
395        {
396          "vuid": "VUID-VkPhysicalDeviceGroupProperties-sType-sType",
397          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES</code>"
398        },
399        {
400          "vuid": "VUID-VkPhysicalDeviceGroupProperties-pNext-pNext",
401          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
402        }
403      ]
404    },
405    "vkCreateDevice": {
406      "core": [
407        {
408          "vuid": "VUID-vkCreateDevice-ppEnabledExtensionNames-01387",
409          "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"
410        },
411        {
412          "vuid": "VUID-vkCreateDevice-physicalDevice-parameter",
413          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
414        },
415        {
416          "vuid": "VUID-vkCreateDevice-pCreateInfo-parameter",
417          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDeviceCreateInfo\">VkDeviceCreateInfo</a> structure"
418        },
419        {
420          "vuid": "VUID-vkCreateDevice-pAllocator-parameter",
421          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
422        },
423        {
424          "vuid": "VUID-vkCreateDevice-pDevice-parameter",
425          "text": " <code>pDevice</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDevice\">VkDevice</a> handle"
426        }
427      ]
428    },
429    "VkDeviceCreateInfo": {
430      "!(VK_VERSION_1_1)": [
431        {
432          "vuid": "VUID-VkDeviceCreateInfo-queueFamilyIndex-00372",
433          "text": " The <code>queueFamilyIndex</code> member of each element of <code>pQueueCreateInfos</code> <strong class=\"purple\">must</strong> be unique within <code>pQueueCreateInfos</code>"
434        }
435      ],
436      "(VK_VERSION_1_1)": [
437        {
438          "vuid": "VUID-VkDeviceCreateInfo-queueFamilyIndex-02802",
439          "text": " The <code>queueFamilyIndex</code> member of each element of <code>pQueueCreateInfos</code> <strong class=\"purple\">must</strong> be unique within <code>pQueueCreateInfos</code>, except that two members can share the same <code>queueFamilyIndex</code> if one is a protected-capable queue and one is not a protected-capable queue"
440        }
441      ],
442      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
443        {
444          "vuid": "VUID-VkDeviceCreateInfo-pNext-00373",
445          "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>"
446        }
447      ],
448      "(VK_AMD_negative_viewport_height)+(VK_VERSION_1_1)": [
449        {
450          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-01840",
451          "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>"
452        }
453      ],
454      "(VK_AMD_negative_viewport_height)+!(VK_VERSION_1_1)+(VK_KHR_maintenance1)": [
455        {
456          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-00374",
457          "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>"
458        }
459      ],
460      "(VK_EXT_buffer_device_address+VK_KHR_buffer_device_address)": [
461        {
462          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-03328",
463          "text": " <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> not contain both <code><a href=\"#VK_KHR_buffer_device_address\">VK_KHR_buffer_device_address</a></code> and <code><a href=\"#VK_EXT_buffer_device_address\">VK_EXT_buffer_device_address</a></code>"
464        }
465      ],
466      "(VK_VERSION_1_2)": [
467        {
468          "vuid": "VUID-VkDeviceCreateInfo-pNext-02829",
469          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan11Features\">VkPhysicalDeviceVulkan11Features</a> structure, then it <strong class=\"purple\">must</strong> not include a <a href=\"#VkPhysicalDevice16BitStorageFeatures\">VkPhysicalDevice16BitStorageFeatures</a>, <a href=\"#VkPhysicalDeviceMultiviewFeatures\">VkPhysicalDeviceMultiviewFeatures</a>, <a href=\"#VkPhysicalDeviceVariablePointersFeatures\">VkPhysicalDeviceVariablePointersFeatures</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryFeatures\">VkPhysicalDeviceProtectedMemoryFeatures</a>, <a href=\"#VkPhysicalDeviceSamplerYcbcrConversionFeatures\">VkPhysicalDeviceSamplerYcbcrConversionFeatures</a>, or <a href=\"#VkPhysicalDeviceShaderDrawParametersFeatures\">VkPhysicalDeviceShaderDrawParametersFeatures</a> structure"
470        },
471        {
472          "vuid": "VUID-VkDeviceCreateInfo-pNext-02830",
473          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a> structure, then it <strong class=\"purple\">must</strong> not include a <a href=\"#VkPhysicalDevice8BitStorageFeatures\">VkPhysicalDevice8BitStorageFeatures</a>, <a href=\"#VkPhysicalDeviceShaderAtomicInt64Features\">VkPhysicalDeviceShaderAtomicInt64Features</a>, <a href=\"#VkPhysicalDeviceShaderFloat16Int8Features\">VkPhysicalDeviceShaderFloat16Int8Features</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>, <a href=\"#VkPhysicalDeviceScalarBlockLayoutFeatures\">VkPhysicalDeviceScalarBlockLayoutFeatures</a>, <a href=\"#VkPhysicalDeviceImagelessFramebufferFeatures\">VkPhysicalDeviceImagelessFramebufferFeatures</a>, <a href=\"#VkPhysicalDeviceUniformBufferStandardLayoutFeatures\">VkPhysicalDeviceUniformBufferStandardLayoutFeatures</a>, <a href=\"#VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures\">VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures</a>, <a href=\"#VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures\">VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures</a>, <a href=\"#VkPhysicalDeviceHostQueryResetFeatures\">VkPhysicalDeviceHostQueryResetFeatures</a>, <a href=\"#VkPhysicalDeviceTimelineSemaphoreFeatures\">VkPhysicalDeviceTimelineSemaphoreFeatures</a>, <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeatures\">VkPhysicalDeviceBufferDeviceAddressFeatures</a>, or <a href=\"#VkPhysicalDeviceVulkanMemoryModelFeatures\">VkPhysicalDeviceVulkanMemoryModelFeatures</a> structure"
474        }
475      ],
476      "(VK_VERSION_1_2)+(VK_KHR_draw_indirect_count)": [
477        {
478          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensions-02831",
479          "text": " If <code>ppEnabledExtensions</code> contains <code>\"VK_KHR_draw_indirect_count\"</code> and the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a> structure, then <code>VkPhysicalDeviceVulkan12Features</code>::<code>drawIndirectCount</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>"
480        }
481      ],
482      "(VK_VERSION_1_2)+(VK_KHR_sampler_mirror_clamp_to_edge)": [
483        {
484          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensions-02832",
485          "text": " If <code>ppEnabledExtensions</code> contains <code>\"VK_KHR_sampler_mirror_clamp_to_edge\"</code> and the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a> structure, then <code>VkPhysicalDeviceVulkan12Features</code>::<code>samplerMirrorClampToEdge</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>"
486        }
487      ],
488      "(VK_VERSION_1_2)+(VK_EXT_descriptor_indexing)": [
489        {
490          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensions-02833",
491          "text": " If <code>ppEnabledExtensions</code> contains <code>\"VK_EXT_descriptor_indexing\"</code> and the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a> structure, then <code>VkPhysicalDeviceVulkan12Features</code>::<code>descriptorIndexing</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>"
492        }
493      ],
494      "(VK_VERSION_1_2)+(VK_EXT_sampler_filter_minmax)": [
495        {
496          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensions-02834",
497          "text": " If <code>ppEnabledExtensions</code> contains <code>\"VK_EXT_sampler_filter_minmax\"</code> and the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a> structure, then <code>VkPhysicalDeviceVulkan12Features</code>::<code>samplerFilterMinmax</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>"
498        }
499      ],
500      "(VK_VERSION_1_2)+(VK_EXT_shader_viewport_index_layer)": [
501        {
502          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensions-02835",
503          "text": " If <code>ppEnabledExtensions</code> contains <code>\"VK_EXT_shader_viewport_index_layer\"</code> and the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a> structure, then <code>VkPhysicalDeviceVulkan12Features</code>::<code>shaderOutputViewportIndex</code> and <code>VkPhysicalDeviceVulkan12Features</code>::<code>shaderOutputLayer</code> <strong class=\"purple\">must</strong> both be <code>VK_TRUE</code>"
504        }
505      ],
506      "core": [
507        {
508          "vuid": "VUID-VkDeviceCreateInfo-sType-sType",
509          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO</code>"
510        },
511        {
512          "vuid": "VUID-VkDeviceCreateInfo-pNext-pNext",
513          "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=\"#VkDeviceDiagnosticsConfigCreateInfoNV\">VkDeviceDiagnosticsConfigCreateInfoNV</a>, <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>, <a href=\"#VkDeviceMemoryOverallocationCreateInfoAMD\">VkDeviceMemoryOverallocationCreateInfoAMD</a>, <a href=\"#VkDevicePrivateDataCreateInfoEXT\">VkDevicePrivateDataCreateInfoEXT</a>, <a href=\"#VkPhysicalDevice16BitStorageFeatures\">VkPhysicalDevice16BitStorageFeatures</a>, <a href=\"#VkPhysicalDevice8BitStorageFeatures\">VkPhysicalDevice8BitStorageFeatures</a>, <a href=\"#VkPhysicalDeviceASTCDecodeFeaturesEXT\">VkPhysicalDeviceASTCDecodeFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT\">VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeatures\">VkPhysicalDeviceBufferDeviceAddressFeatures</a>, <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeaturesEXT\">VkPhysicalDeviceBufferDeviceAddressFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceCoherentMemoryFeaturesAMD\">VkPhysicalDeviceCoherentMemoryFeaturesAMD</a>, <a href=\"#VkPhysicalDeviceComputeShaderDerivativesFeaturesNV\">VkPhysicalDeviceComputeShaderDerivativesFeaturesNV</a>, <a href=\"#VkPhysicalDeviceConditionalRenderingFeaturesEXT\">VkPhysicalDeviceConditionalRenderingFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixFeaturesNV\">VkPhysicalDeviceCooperativeMatrixFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCornerSampledImageFeaturesNV\">VkPhysicalDeviceCornerSampledImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCoverageReductionModeFeaturesNV\">VkPhysicalDeviceCoverageReductionModeFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCustomBorderColorFeaturesEXT\">VkPhysicalDeviceCustomBorderColorFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV\">VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDepthClipEnableFeaturesEXT\">VkPhysicalDeviceDepthClipEnableFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>, <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV\">VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDiagnosticsConfigFeaturesNV\">VkPhysicalDeviceDiagnosticsConfigFeaturesNV</a>, <a href=\"#VkPhysicalDeviceExclusiveScissorFeaturesNV\">VkPhysicalDeviceExclusiveScissorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicStateFeaturesEXT\">VkPhysicalDeviceExtendedDynamicStateFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapFeaturesEXT\">VkPhysicalDeviceFragmentDensityMapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV\">VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV</a>, <a href=\"#VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT\">VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceHostQueryResetFeatures\">VkPhysicalDeviceHostQueryResetFeatures</a>, <a href=\"#VkPhysicalDeviceImagelessFramebufferFeatures\">VkPhysicalDeviceImagelessFramebufferFeatures</a>, <a href=\"#VkPhysicalDeviceIndexTypeUint8FeaturesEXT\">VkPhysicalDeviceIndexTypeUint8FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockFeaturesEXT\">VkPhysicalDeviceInlineUniformBlockFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceLineRasterizationFeaturesEXT\">VkPhysicalDeviceLineRasterizationFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMemoryPriorityFeaturesEXT\">VkPhysicalDeviceMemoryPriorityFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMeshShaderFeaturesNV\">VkPhysicalDeviceMeshShaderFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMultiviewFeatures\">VkPhysicalDeviceMultiviewFeatures</a>, <a href=\"#VkPhysicalDevicePerformanceQueryFeaturesKHR\">VkPhysicalDevicePerformanceQueryFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT\">VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR\">VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePrivateDataFeaturesEXT\">VkPhysicalDevicePrivateDataFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryFeatures\">VkPhysicalDeviceProtectedMemoryFeatures</a>, <a href=\"#VkPhysicalDeviceRayTracingFeaturesKHR\">VkPhysicalDeviceRayTracingFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV\">VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV</a>, <a href=\"#VkPhysicalDeviceRobustness2FeaturesEXT\">VkPhysicalDeviceRobustness2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceSamplerYcbcrConversionFeatures\">VkPhysicalDeviceSamplerYcbcrConversionFeatures</a>, <a href=\"#VkPhysicalDeviceScalarBlockLayoutFeatures\">VkPhysicalDeviceScalarBlockLayoutFeatures</a>, <a href=\"#VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures\">VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures</a>, <a href=\"#VkPhysicalDeviceShaderAtomicInt64Features\">VkPhysicalDeviceShaderAtomicInt64Features</a>, <a href=\"#VkPhysicalDeviceShaderClockFeaturesKHR\">VkPhysicalDeviceShaderClockFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT\">VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderDrawParametersFeatures\">VkPhysicalDeviceShaderDrawParametersFeatures</a>, <a href=\"#VkPhysicalDeviceShaderFloat16Int8Features\">VkPhysicalDeviceShaderFloat16Int8Features</a>, <a href=\"#VkPhysicalDeviceShaderImageFootprintFeaturesNV\">VkPhysicalDeviceShaderImageFootprintFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL\">VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL</a>, <a href=\"#VkPhysicalDeviceShaderSMBuiltinsFeaturesNV\">VkPhysicalDeviceShaderSMBuiltinsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures\">VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures</a>, <a href=\"#VkPhysicalDeviceShadingRateImageFeaturesNV\">VkPhysicalDeviceShadingRateImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceSubgroupSizeControlFeaturesEXT\">VkPhysicalDeviceSubgroupSizeControlFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT\">VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT\">VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceTimelineSemaphoreFeatures\">VkPhysicalDeviceTimelineSemaphoreFeatures</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackFeaturesEXT\">VkPhysicalDeviceTransformFeedbackFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceUniformBufferStandardLayoutFeatures\">VkPhysicalDeviceUniformBufferStandardLayoutFeatures</a>, <a href=\"#VkPhysicalDeviceVariablePointersFeatures\">VkPhysicalDeviceVariablePointersFeatures</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT\">VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceVulkan11Features\">VkPhysicalDeviceVulkan11Features</a>, <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a>, <a href=\"#VkPhysicalDeviceVulkanMemoryModelFeatures\">VkPhysicalDeviceVulkanMemoryModelFeatures</a>, or <a href=\"#VkPhysicalDeviceYcbcrImageArraysFeaturesEXT\">VkPhysicalDeviceYcbcrImageArraysFeaturesEXT</a>"
514        },
515        {
516          "vuid": "VUID-VkDeviceCreateInfo-sType-unique",
517          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique, with the exception of structures of type <a href=\"#VkDevicePrivateDataCreateInfoEXT\">VkDevicePrivateDataCreateInfoEXT</a>"
518        },
519        {
520          "vuid": "VUID-VkDeviceCreateInfo-flags-zerobitmask",
521          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
522        },
523        {
524          "vuid": "VUID-VkDeviceCreateInfo-pQueueCreateInfos-parameter",
525          "text": " <code>pQueueCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueCreateInfoCount</code> valid <a href=\"#VkDeviceQueueCreateInfo\">VkDeviceQueueCreateInfo</a> structures"
526        },
527        {
528          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledLayerNames-parameter",
529          "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"
530        },
531        {
532          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-parameter",
533          "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"
534        },
535        {
536          "vuid": "VUID-VkDeviceCreateInfo-pEnabledFeatures-parameter",
537          "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 <a href=\"#VkPhysicalDeviceFeatures\">VkPhysicalDeviceFeatures</a> structure"
538        },
539        {
540          "vuid": "VUID-VkDeviceCreateInfo-queueCreateInfoCount-arraylength",
541          "text": " <code>queueCreateInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
542        }
543      ]
544    },
545    "VkDeviceGroupDeviceCreateInfo": {
546      "(VK_VERSION_1_1,VK_KHR_device_group_creation)": [
547        {
548          "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00375",
549          "text": " Each element of <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be unique"
550        },
551        {
552          "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00376",
553          "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>"
554        },
555        {
556          "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-physicalDeviceCount-00377",
557          "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>"
558        },
559        {
560          "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-sType-sType",
561          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO</code>"
562        },
563        {
564          "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-parameter",
565          "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 <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handles"
566        }
567      ]
568    },
569    "VkDeviceMemoryOverallocationCreateInfoAMD": {
570      "(VK_AMD_memory_overallocation_behavior)": [
571        {
572          "vuid": "VUID-VkDeviceMemoryOverallocationCreateInfoAMD-sType-sType",
573          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD</code>"
574        },
575        {
576          "vuid": "VUID-VkDeviceMemoryOverallocationCreateInfoAMD-overallocationBehavior-parameter",
577          "text": " <code>overallocationBehavior</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkMemoryOverallocationBehaviorAMD\">VkMemoryOverallocationBehaviorAMD</a> value"
578        }
579      ]
580    },
581    "VkDeviceDiagnosticsConfigCreateInfoNV": {
582      "(VK_NV_device_diagnostics_config)": [
583        {
584          "vuid": "VUID-VkDeviceDiagnosticsConfigCreateInfoNV-sType-sType",
585          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV</code>"
586        },
587        {
588          "vuid": "VUID-VkDeviceDiagnosticsConfigCreateInfoNV-flags-parameter",
589          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceDiagnosticsConfigFlagBitsNV\">VkDeviceDiagnosticsConfigFlagBitsNV</a> values"
590        }
591      ]
592    },
593    "VkDevicePrivateDataCreateInfoEXT": {
594      "(VK_EXT_private_data)": [
595        {
596          "vuid": "VUID-VkDevicePrivateDataCreateInfoEXT-sType-sType",
597          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT</code>"
598        }
599      ]
600    },
601    "vkDestroyDevice": {
602      "core": [
603        {
604          "vuid": "VUID-vkDestroyDevice-device-00378",
605          "text": " All child objects created on <code>device</code> <strong class=\"purple\">must</strong> have been destroyed prior to destroying <code>device</code>"
606        },
607        {
608          "vuid": "VUID-vkDestroyDevice-device-00379",
609          "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"
610        },
611        {
612          "vuid": "VUID-vkDestroyDevice-device-00380",
613          "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>"
614        },
615        {
616          "vuid": "VUID-vkDestroyDevice-device-parameter",
617          "text": " If <code>device</code> is not <code>NULL</code>, <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
618        },
619        {
620          "vuid": "VUID-vkDestroyDevice-pAllocator-parameter",
621          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
622        }
623      ]
624    },
625    "VkDeviceQueueCreateInfo": {
626      "core": [
627        {
628          "vuid": "VUID-VkDeviceQueueCreateInfo-queueFamilyIndex-00381",
629          "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code>"
630        },
631        {
632          "vuid": "VUID-VkDeviceQueueCreateInfo-queueCount-00382",
633          "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>[queueFamilyIndex]"
634        },
635        {
636          "vuid": "VUID-VkDeviceQueueCreateInfo-pQueuePriorities-00383",
637          "text": " Each element of <code>pQueuePriorities</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code> inclusive"
638        },
639        {
640          "vuid": "VUID-VkDeviceQueueCreateInfo-sType-sType",
641          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO</code>"
642        },
643        {
644          "vuid": "VUID-VkDeviceQueueCreateInfo-pNext-pNext",
645          "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>"
646        },
647        {
648          "vuid": "VUID-VkDeviceQueueCreateInfo-sType-unique",
649          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
650        },
651        {
652          "vuid": "VUID-VkDeviceQueueCreateInfo-flags-parameter",
653          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceQueueCreateFlagBits\">VkDeviceQueueCreateFlagBits</a> values"
654        },
655        {
656          "vuid": "VUID-VkDeviceQueueCreateInfo-pQueuePriorities-parameter",
657          "text": " <code>pQueuePriorities</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueCount</code> <code>float</code> values"
658        },
659        {
660          "vuid": "VUID-VkDeviceQueueCreateInfo-queueCount-arraylength",
661          "text": " <code>queueCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
662        }
663      ],
664      "(VK_VERSION_1_1)": [
665        {
666          "vuid": "VUID-VkDeviceQueueCreateInfo-flags-02861",
667          "text": " If the <a href=\"#features-protectedMemory\">protected memory</a> feature is not enabled, the <code>VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT</code> bit of <code>flags</code> <strong class=\"purple\">must</strong> not be set"
668        }
669      ]
670    },
671    "VkDeviceQueueGlobalPriorityCreateInfoEXT": {
672      "(VK_EXT_global_priority)": [
673        {
674          "vuid": "VUID-VkDeviceQueueGlobalPriorityCreateInfoEXT-sType-sType",
675          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT</code>"
676        },
677        {
678          "vuid": "VUID-VkDeviceQueueGlobalPriorityCreateInfoEXT-globalPriority-parameter",
679          "text": " <code>globalPriority</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueueGlobalPriorityEXT\">VkQueueGlobalPriorityEXT</a> value"
680        }
681      ]
682    },
683    "vkGetDeviceQueue": {
684      "core": [
685        {
686          "vuid": "VUID-vkGetDeviceQueue-queueFamilyIndex-00384",
687          "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 <a href=\"#VkDeviceQueueCreateInfo\">VkDeviceQueueCreateInfo</a> structure"
688        },
689        {
690          "vuid": "VUID-vkGetDeviceQueue-queueIndex-00385",
691          "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 <a href=\"#VkDeviceQueueCreateInfo\">VkDeviceQueueCreateInfo</a> structure"
692        },
693        {
694          "vuid": "VUID-vkGetDeviceQueue-flags-01841",
695          "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"
696        },
697        {
698          "vuid": "VUID-vkGetDeviceQueue-device-parameter",
699          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
700        },
701        {
702          "vuid": "VUID-vkGetDeviceQueue-pQueue-parameter",
703          "text": " <code>pQueue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkQueue\">VkQueue</a> handle"
704        }
705      ]
706    },
707    "vkGetDeviceQueue2": {
708      "(VK_VERSION_1_1)": [
709        {
710          "vuid": "VUID-vkGetDeviceQueue2-device-parameter",
711          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
712        },
713        {
714          "vuid": "VUID-vkGetDeviceQueue2-pQueueInfo-parameter",
715          "text": " <code>pQueueInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDeviceQueueInfo2\">VkDeviceQueueInfo2</a> structure"
716        },
717        {
718          "vuid": "VUID-vkGetDeviceQueue2-pQueue-parameter",
719          "text": " <code>pQueue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkQueue\">VkQueue</a> handle"
720        }
721      ]
722    },
723    "VkDeviceQueueInfo2": {
724      "(VK_VERSION_1_1)": [
725        {
726          "vuid": "VUID-VkDeviceQueueInfo2-queueFamilyIndex-01842",
727          "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 <a href=\"#VkDeviceQueueCreateInfo\">VkDeviceQueueCreateInfo</a> structure"
728        },
729        {
730          "vuid": "VUID-VkDeviceQueueInfo2-queueIndex-01843",
731          "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 <a href=\"#VkDeviceQueueCreateInfo\">VkDeviceQueueCreateInfo</a> structure"
732        },
733        {
734          "vuid": "VUID-VkDeviceQueueInfo2-sType-sType",
735          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2</code>"
736        },
737        {
738          "vuid": "VUID-VkDeviceQueueInfo2-pNext-pNext",
739          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
740        },
741        {
742          "vuid": "VUID-VkDeviceQueueInfo2-flags-parameter",
743          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceQueueCreateFlagBits\">VkDeviceQueueCreateFlagBits</a> values"
744        }
745      ]
746    },
747    "vkCreateCommandPool": {
748      "core": [
749        {
750          "vuid": "VUID-vkCreateCommandPool-queueFamilyIndex-01937",
751          "text": " <code>pCreateInfo-&gt;queueFamilyIndex</code> <strong class=\"purple\">must</strong> be the index of a queue family available in the logical device <code>device</code>"
752        },
753        {
754          "vuid": "VUID-vkCreateCommandPool-device-parameter",
755          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
756        },
757        {
758          "vuid": "VUID-vkCreateCommandPool-pCreateInfo-parameter",
759          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> structure"
760        },
761        {
762          "vuid": "VUID-vkCreateCommandPool-pAllocator-parameter",
763          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
764        },
765        {
766          "vuid": "VUID-vkCreateCommandPool-pCommandPool-parameter",
767          "text": " <code>pCommandPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkCommandPool\">VkCommandPool</a> handle"
768        }
769      ]
770    },
771    "VkCommandPoolCreateInfo": {
772      "(VK_VERSION_1_1)": [
773        {
774          "vuid": "VUID-VkCommandPoolCreateInfo-flags-02860",
775          "text": " If the protected memory feature is not enabled, the <code>VK_COMMAND_POOL_CREATE_PROTECTED_BIT</code> bit of <code>flags</code> <strong class=\"purple\">must</strong> not be set"
776        }
777      ],
778      "core": [
779        {
780          "vuid": "VUID-VkCommandPoolCreateInfo-sType-sType",
781          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO</code>"
782        },
783        {
784          "vuid": "VUID-VkCommandPoolCreateInfo-pNext-pNext",
785          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
786        },
787        {
788          "vuid": "VUID-VkCommandPoolCreateInfo-flags-parameter",
789          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandPoolCreateFlagBits\">VkCommandPoolCreateFlagBits</a> values"
790        }
791      ]
792    },
793    "vkTrimCommandPool": {
794      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
795        {
796          "vuid": "VUID-vkTrimCommandPool-device-parameter",
797          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
798        },
799        {
800          "vuid": "VUID-vkTrimCommandPool-commandPool-parameter",
801          "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandPool\">VkCommandPool</a> handle"
802        },
803        {
804          "vuid": "VUID-vkTrimCommandPool-flags-zerobitmask",
805          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
806        },
807        {
808          "vuid": "VUID-vkTrimCommandPool-commandPool-parent",
809          "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
810        }
811      ]
812    },
813    "vkResetCommandPool": {
814      "core": [
815        {
816          "vuid": "VUID-vkResetCommandPool-commandPool-00040",
817          "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>"
818        },
819        {
820          "vuid": "VUID-vkResetCommandPool-device-parameter",
821          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
822        },
823        {
824          "vuid": "VUID-vkResetCommandPool-commandPool-parameter",
825          "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandPool\">VkCommandPool</a> handle"
826        },
827        {
828          "vuid": "VUID-vkResetCommandPool-flags-parameter",
829          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandPoolResetFlagBits\">VkCommandPoolResetFlagBits</a> values"
830        },
831        {
832          "vuid": "VUID-vkResetCommandPool-commandPool-parent",
833          "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
834        }
835      ]
836    },
837    "vkDestroyCommandPool": {
838      "core": [
839        {
840          "vuid": "VUID-vkDestroyCommandPool-commandPool-00041",
841          "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>"
842        },
843        {
844          "vuid": "VUID-vkDestroyCommandPool-commandPool-00042",
845          "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"
846        },
847        {
848          "vuid": "VUID-vkDestroyCommandPool-commandPool-00043",
849          "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>"
850        },
851        {
852          "vuid": "VUID-vkDestroyCommandPool-device-parameter",
853          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
854        },
855        {
856          "vuid": "VUID-vkDestroyCommandPool-commandPool-parameter",
857          "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 <a href=\"#VkCommandPool\">VkCommandPool</a> handle"
858        },
859        {
860          "vuid": "VUID-vkDestroyCommandPool-pAllocator-parameter",
861          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
862        },
863        {
864          "vuid": "VUID-vkDestroyCommandPool-commandPool-parent",
865          "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>"
866        }
867      ]
868    },
869    "vkAllocateCommandBuffers": {
870      "core": [
871        {
872          "vuid": "VUID-vkAllocateCommandBuffers-device-parameter",
873          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
874        },
875        {
876          "vuid": "VUID-vkAllocateCommandBuffers-pAllocateInfo-parameter",
877          "text": " <code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCommandBufferAllocateInfo\">VkCommandBufferAllocateInfo</a> structure"
878        },
879        {
880          "vuid": "VUID-vkAllocateCommandBuffers-pCommandBuffers-parameter",
881          "text": " <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pAllocateInfo-&gt;commandBufferCount</code> <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handles"
882        },
883        {
884          "vuid": "VUID-vkAllocateCommandBuffers-pAllocateInfo::commandBufferCount-arraylength",
885          "text": " The value referenced by <code>pAllocateInfo-&gt;commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
886        }
887      ]
888    },
889    "VkCommandBufferAllocateInfo": {
890      "core": [
891        {
892          "vuid": "VUID-VkCommandBufferAllocateInfo-commandBufferCount-00044",
893          "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
894        },
895        {
896          "vuid": "VUID-VkCommandBufferAllocateInfo-sType-sType",
897          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO</code>"
898        },
899        {
900          "vuid": "VUID-VkCommandBufferAllocateInfo-pNext-pNext",
901          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
902        },
903        {
904          "vuid": "VUID-VkCommandBufferAllocateInfo-commandPool-parameter",
905          "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandPool\">VkCommandPool</a> handle"
906        },
907        {
908          "vuid": "VUID-VkCommandBufferAllocateInfo-level-parameter",
909          "text": " <code>level</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBufferLevel\">VkCommandBufferLevel</a> value"
910        }
911      ]
912    },
913    "vkResetCommandBuffer": {
914      "core": [
915        {
916          "vuid": "VUID-vkResetCommandBuffer-commandBuffer-00045",
917          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>"
918        },
919        {
920          "vuid": "VUID-vkResetCommandBuffer-commandBuffer-00046",
921          "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>"
922        },
923        {
924          "vuid": "VUID-vkResetCommandBuffer-commandBuffer-parameter",
925          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
926        },
927        {
928          "vuid": "VUID-vkResetCommandBuffer-flags-parameter",
929          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandBufferResetFlagBits\">VkCommandBufferResetFlagBits</a> values"
930        }
931      ]
932    },
933    "vkFreeCommandBuffers": {
934      "core": [
935        {
936          "vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-00047",
937          "text": " All elements of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>"
938        },
939        {
940          "vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-00048",
941          "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>"
942        },
943        {
944          "vuid": "VUID-vkFreeCommandBuffers-device-parameter",
945          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
946        },
947        {
948          "vuid": "VUID-vkFreeCommandBuffers-commandPool-parameter",
949          "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandPool\">VkCommandPool</a> handle"
950        },
951        {
952          "vuid": "VUID-vkFreeCommandBuffers-commandBufferCount-arraylength",
953          "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
954        },
955        {
956          "vuid": "VUID-vkFreeCommandBuffers-commandPool-parent",
957          "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
958        },
959        {
960          "vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-parent",
961          "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>"
962        }
963      ]
964    },
965    "vkBeginCommandBuffer": {
966      "core": [
967        {
968          "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00049",
969          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">recording or pending state</a>"
970        },
971        {
972          "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00050",
973          "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>"
974        },
975        {
976          "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00051",
977          "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"
978        },
979        {
980          "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00052",
981          "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>"
982        },
983        {
984          "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-02840",
985          "text": " If <code>commandBuffer</code> is a primary command buffer, then <code>pBeginInfo-&gt;flags</code> <strong class=\"purple\">must</strong> not set both the <code>VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT</code> and the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code> flags"
986        },
987        {
988          "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-parameter",
989          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
990        },
991        {
992          "vuid": "VUID-vkBeginCommandBuffer-pBeginInfo-parameter",
993          "text": " <code>pBeginInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCommandBufferBeginInfo\">VkCommandBufferBeginInfo</a> structure"
994        }
995      ]
996    },
997    "VkCommandBufferBeginInfo": {
998      "core": [
999        {
1000          "vuid": "VUID-VkCommandBufferBeginInfo-flags-00053",
1001          "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>"
1002        },
1003        {
1004          "vuid": "VUID-VkCommandBufferBeginInfo-flags-00054",
1005          "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>"
1006        },
1007        {
1008          "vuid": "VUID-VkCommandBufferBeginInfo-flags-00055",
1009          "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>"
1010        },
1011        {
1012          "vuid": "VUID-VkCommandBufferBeginInfo-sType-sType",
1013          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO</code>"
1014        },
1015        {
1016          "vuid": "VUID-VkCommandBufferBeginInfo-pNext-pNext",
1017          "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>"
1018        },
1019        {
1020          "vuid": "VUID-VkCommandBufferBeginInfo-sType-unique",
1021          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
1022        },
1023        {
1024          "vuid": "VUID-VkCommandBufferBeginInfo-flags-parameter",
1025          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandBufferUsageFlagBits\">VkCommandBufferUsageFlagBits</a> values"
1026        }
1027      ]
1028    },
1029    "VkCommandBufferInheritanceInfo": {
1030      "core": [
1031        {
1032          "vuid": "VUID-VkCommandBufferInheritanceInfo-occlusionQueryEnable-00056",
1033          "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>"
1034        },
1035        {
1036          "vuid": "VUID-VkCommandBufferInheritanceInfo-queryFlags-00057",
1037          "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"
1038        },
1039        {
1040          "vuid": "VUID-VkCommandBufferInheritanceInfo-queryFlags-02788",
1041          "text": " If the <a href=\"#features-inheritedQueries\">inherited queries</a> feature is not enabled, <code>queryFlags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
1042        },
1043        {
1044          "vuid": "VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-02789",
1045          "text": " If the <a href=\"#features-pipelineStatisticsQuery\">pipeline statistics queries</a> feature is enabled, <code>pipelineStatistics</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryPipelineStatisticFlagBits\">VkQueryPipelineStatisticFlagBits</a> values"
1046        },
1047        {
1048          "vuid": "VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-00058",
1049          "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>"
1050        },
1051        {
1052          "vuid": "VUID-VkCommandBufferInheritanceInfo-sType-sType",
1053          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO</code>"
1054        },
1055        {
1056          "vuid": "VUID-VkCommandBufferInheritanceInfo-pNext-pNext",
1057          "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=\"#VkCommandBufferInheritanceConditionalRenderingInfoEXT\">VkCommandBufferInheritanceConditionalRenderingInfoEXT</a> or <a href=\"#VkCommandBufferInheritanceRenderPassTransformInfoQCOM\">VkCommandBufferInheritanceRenderPassTransformInfoQCOM</a>"
1058        },
1059        {
1060          "vuid": "VUID-VkCommandBufferInheritanceInfo-sType-unique",
1061          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
1062        },
1063        {
1064          "vuid": "VUID-VkCommandBufferInheritanceInfo-commonparent",
1065          "text": " Both of <code>framebuffer</code>, and <code>renderPass</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
1066        }
1067      ]
1068    },
1069    "VkCommandBufferInheritanceConditionalRenderingInfoEXT": {
1070      "(VK_EXT_conditional_rendering)": [
1071        {
1072          "vuid": "VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-conditionalRenderingEnable-01977",
1073          "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>"
1074        },
1075        {
1076          "vuid": "VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-sType-sType",
1077          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT</code>"
1078        }
1079      ]
1080    },
1081    "VkCommandBufferInheritanceRenderPassTransformInfoQCOM": {
1082      "(VK_QCOM_render_pass_transform)": [
1083        {
1084          "vuid": "VUID-VkCommandBufferInheritanceRenderPassTransformInfoQCOM-transform-02864",
1085          "text": " <code>transform</code> <strong class=\"purple\">must</strong> be <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code>, <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, or <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>"
1086        },
1087        {
1088          "vuid": "VUID-VkCommandBufferInheritanceRenderPassTransformInfoQCOM-sType-sType",
1089          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM</code>"
1090        }
1091      ]
1092    },
1093    "vkEndCommandBuffer": {
1094      "core": [
1095        {
1096          "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00059",
1097          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
1098        },
1099        {
1100          "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00060",
1101          "text": " If <code>commandBuffer</code> is a primary command buffer, there <strong class=\"purple\">must</strong> not be an active render pass instance"
1102        },
1103        {
1104          "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00061",
1105          "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"
1106        },
1107        {
1108          "vuid": "VUID-vkEndCommandBuffer-commandBuffer-parameter",
1109          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
1110        }
1111      ],
1112      "(VK_EXT_conditional_rendering)": [
1113        {
1114          "vuid": "VUID-vkEndCommandBuffer-None-01978",
1115          "text": " Conditional rendering <strong class=\"purple\">must</strong> not be <a href=\"#active-conditional-rendering\">active</a>"
1116        }
1117      ],
1118      "(VK_EXT_debug_utils)": [
1119        {
1120          "vuid": "VUID-vkEndCommandBuffer-commandBuffer-01815",
1121          "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>"
1122        }
1123      ],
1124      "(VK_EXT_debug_marker)": [
1125        {
1126          "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00062",
1127          "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>"
1128        }
1129      ]
1130    },
1131    "vkQueueSubmit": {
1132      "core": [
1133        {
1134          "vuid": "VUID-vkQueueSubmit-fence-00063",
1135          "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"
1136        },
1137        {
1138          "vuid": "VUID-vkQueueSubmit-fence-00064",
1139          "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"
1140        },
1141        {
1142          "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00065",
1143          "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>"
1144        },
1145        {
1146          "vuid": "VUID-vkQueueSubmit-pWaitDstStageMask-00066",
1147          "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>"
1148        },
1149        {
1150          "vuid": "VUID-vkQueueSubmit-pSignalSemaphores-00067",
1151          "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"
1152        },
1153        {
1154          "vuid": "VUID-vkQueueSubmit-pWaitSemaphores-00068",
1155          "text": " When a semaphore wait operation referring to a binary semaphore defined by any element of the <code>pWaitSemaphores</code> member of any element of <code>pSubmits</code> executes on <code>queue</code>, there <strong class=\"purple\">must</strong> be no other queues waiting on the same semaphore"
1156        },
1157        {
1158          "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00070",
1159          "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>"
1160        },
1161        {
1162          "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00071",
1163          "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>"
1164        },
1165        {
1166          "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00072",
1167          "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>"
1168        },
1169        {
1170          "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00073",
1171          "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>"
1172        },
1173        {
1174          "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00074",
1175          "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"
1176        },
1177        {
1178          "vuid": "VUID-vkQueueSubmit-pSubmits-02207",
1179          "text": " If any element of <code>pSubmits-&gt;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"
1180        },
1181        {
1182          "vuid": "VUID-vkQueueSubmit-pSubmits-02808",
1183          "text": " Any resource created with <code>VK_SHARING_MODE_EXCLUSIVE</code> that is read by an operation specified by <code>pSubmits</code> <strong class=\"purple\">must</strong> not be owned by any queue family other than the one which <code>queue</code> belongs to, at the time it is executed"
1184        },
1185        {
1186          "vuid": "VUID-vkQueueSubmit-queue-parameter",
1187          "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle"
1188        },
1189        {
1190          "vuid": "VUID-vkQueueSubmit-pSubmits-parameter",
1191          "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 <a href=\"#VkSubmitInfo\">VkSubmitInfo</a> structures"
1192        },
1193        {
1194          "vuid": "VUID-vkQueueSubmit-fence-parameter",
1195          "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 <a href=\"#VkFence\">VkFence</a> handle"
1196        },
1197        {
1198          "vuid": "VUID-vkQueueSubmit-commonparent",
1199          "text": " Both of <code>fence</code>, and <code>queue</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
1200        }
1201      ],
1202      "!(VK_KHR_timeline_semaphore)": [
1203        {
1204          "vuid": "VUID-vkQueueSubmit-pWaitSemaphores-00069",
1205          "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"
1206        }
1207      ],
1208      "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
1209        {
1210          "vuid": "VUID-vkQueueSubmit-pWaitSemaphores-03238",
1211          "text": " All elements of the <code>pWaitSemaphores</code> member of all elements of <code>pSubmits</code> created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_BINARY</code> <strong class=\"purple\">must</strong> reference a semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends (if any) <strong class=\"purple\">must</strong> have also been submitted for execution"
1212        }
1213      ],
1214      "(VK_KHR_performance_query)": [
1215        {
1216          "vuid": "VUID-vkQueueSubmit-pCommandBuffers-03220",
1217          "text": " If a command recorded into any element of <code>pCommandBuffers</code> was a <a href=\"#vkCmdBeginQuery\">vkCmdBeginQuery</a> whose <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, the <a href=\"#profiling-lock\">profiling lock</a> <strong class=\"purple\">must</strong> have been held continuously on the <code>VkDevice</code> that <code>queue</code> was retrieved from, throughout recording of those command buffers"
1218        }
1219      ]
1220    },
1221    "VkSubmitInfo": {
1222      "core": [
1223        {
1224          "vuid": "VUID-VkSubmitInfo-pCommandBuffers-00075",
1225          "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not have been allocated with <code>VK_COMMAND_BUFFER_LEVEL_SECONDARY</code>"
1226        },
1227        {
1228          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00076",
1229          "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>"
1230        },
1231        {
1232          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00077",
1233          "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>"
1234        },
1235        {
1236          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00078",
1237          "text": " Each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>"
1238        },
1239        {
1240          "vuid": "VUID-VkSubmitInfo-sType-sType",
1241          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBMIT_INFO</code>"
1242        },
1243        {
1244          "vuid": "VUID-VkSubmitInfo-pNext-pNext",
1245          "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=\"#VkPerformanceQuerySubmitInfoKHR\">VkPerformanceQuerySubmitInfoKHR</a>, <a href=\"#VkProtectedSubmitInfo\">VkProtectedSubmitInfo</a>, <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a>, <a href=\"#VkWin32KeyedMutexAcquireReleaseInfoKHR\">VkWin32KeyedMutexAcquireReleaseInfoKHR</a>, or <a href=\"#VkWin32KeyedMutexAcquireReleaseInfoNV\">VkWin32KeyedMutexAcquireReleaseInfoNV</a>"
1246        },
1247        {
1248          "vuid": "VUID-VkSubmitInfo-sType-unique",
1249          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
1250        },
1251        {
1252          "vuid": "VUID-VkSubmitInfo-pWaitSemaphores-parameter",
1253          "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 <a href=\"#VkSemaphore\">VkSemaphore</a> handles"
1254        },
1255        {
1256          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-parameter",
1257          "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"
1258        },
1259        {
1260          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-requiredbitmask",
1261          "text": " Each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
1262        },
1263        {
1264          "vuid": "VUID-VkSubmitInfo-pCommandBuffers-parameter",
1265          "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 <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handles"
1266        },
1267        {
1268          "vuid": "VUID-VkSubmitInfo-pSignalSemaphores-parameter",
1269          "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 <a href=\"#VkSemaphore\">VkSemaphore</a> handles"
1270        },
1271        {
1272          "vuid": "VUID-VkSubmitInfo-commonparent",
1273          "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 of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
1274        }
1275      ],
1276      "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
1277        {
1278          "vuid": "VUID-VkSubmitInfo-pWaitSemaphores-03239",
1279          "text": " If any element of <code>pWaitSemaphores</code> or <code>pSignalSemaphores</code> was created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a> structure"
1280        },
1281        {
1282          "vuid": "VUID-VkSubmitInfo-pNext-03240",
1283          "text": " If the <code>pNext</code> chain of this structure includes a <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a> structure and any element of <code>pWaitSemaphores</code> was created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code>, then its <code>waitSemaphoreValueCount</code> member <strong class=\"purple\">must</strong> equal <code>waitSemaphoreCount</code>"
1284        },
1285        {
1286          "vuid": "VUID-VkSubmitInfo-pNext-03241",
1287          "text": " If the <code>pNext</code> chain of this structure includes a <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a> structure and any element of <code>pSignalSemaphores</code> was created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code>, then its <code>signalSemaphoreValueCount</code> member <strong class=\"purple\">must</strong> equal <code>signalSemaphoreCount</code>"
1288        },
1289        {
1290          "vuid": "VUID-VkSubmitInfo-pSignalSemaphores-03242",
1291          "text": " For each element of <code>pSignalSemaphores</code> created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> the corresponding element of <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a>::pSignalSemaphoreValues <strong class=\"purple\">must</strong> have a value greater than the current value of the semaphore when the <a href=\"#synchronization-semaphores-signaling\">semaphore signal operation</a> is executed"
1292        },
1293        {
1294          "vuid": "VUID-VkSubmitInfo-pWaitSemaphores-03243",
1295          "text": " For each element of <code>pWaitSemaphores</code> created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> the corresponding element of <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a>::pWaitSemaphoreValues <strong class=\"purple\">must</strong> have a value which does not differ from the current value of the semaphore or the value of any outstanding semaphore wait or signal operation on that semaphore by more than <a href=\"#limits-maxTimelineSemaphoreValueDifference\"><code>maxTimelineSemaphoreValueDifference</code></a>"
1296        },
1297        {
1298          "vuid": "VUID-VkSubmitInfo-pSignalSemaphores-03244",
1299          "text": " For each element of <code>pSignalSemaphores</code> created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> the corresponding element of <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a>::pSignalSemaphoreValues <strong class=\"purple\">must</strong> have a value which does not differ from the current value of the semaphore or the value of any outstanding semaphore wait or signal operation on that semaphore by more than <a href=\"#limits-maxTimelineSemaphoreValueDifference\"><code>maxTimelineSemaphoreValueDifference</code></a>"
1300        }
1301      ],
1302      "(VK_NV_mesh_shader)": [
1303        {
1304          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-02089",
1305          "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>"
1306        },
1307        {
1308          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-02090",
1309          "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>"
1310        }
1311      ]
1312    },
1313    "VkTimelineSemaphoreSubmitInfo": {
1314      "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
1315        {
1316          "vuid": "VUID-VkTimelineSemaphoreSubmitInfo-sType-sType",
1317          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO</code>"
1318        },
1319        {
1320          "vuid": "VUID-VkTimelineSemaphoreSubmitInfo-pWaitSemaphoreValues-parameter",
1321          "text": " If <code>waitSemaphoreValueCount</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>waitSemaphoreValueCount</code> <code>uint64_t</code> values"
1322        },
1323        {
1324          "vuid": "VUID-VkTimelineSemaphoreSubmitInfo-pSignalSemaphoreValues-parameter",
1325          "text": " If <code>signalSemaphoreValueCount</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>signalSemaphoreValueCount</code> <code>uint64_t</code> values"
1326        }
1327      ]
1328    },
1329    "VkD3D12FenceSubmitInfoKHR": {
1330      "(VK_KHR_external_semaphore_win32)": [
1331        {
1332          "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-waitSemaphoreValuesCount-00079",
1333          "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"
1334        },
1335        {
1336          "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-signalSemaphoreValuesCount-00080",
1337          "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"
1338        },
1339        {
1340          "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-sType-sType",
1341          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR</code>"
1342        },
1343        {
1344          "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-pWaitSemaphoreValues-parameter",
1345          "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"
1346        },
1347        {
1348          "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-pSignalSemaphoreValues-parameter",
1349          "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"
1350        }
1351      ]
1352    },
1353    "VkWin32KeyedMutexAcquireReleaseInfoKHR": {
1354      "(VK_KHR_win32_keyed_mutex)": [
1355        {
1356          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireSyncs-00081",
1357          "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>"
1358        },
1359        {
1360          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-sType-sType",
1361          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR</code>"
1362        },
1363        {
1364          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireSyncs-parameter",
1365          "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 <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handles"
1366        },
1367        {
1368          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireKeys-parameter",
1369          "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"
1370        },
1371        {
1372          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireTimeouts-parameter",
1373          "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"
1374        },
1375        {
1376          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pReleaseSyncs-parameter",
1377          "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 <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handles"
1378        },
1379        {
1380          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pReleaseKeys-parameter",
1381          "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"
1382        },
1383        {
1384          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-commonparent",
1385          "text": " Both of the elements of <code>pAcquireSyncs</code>, and the elements of <code>pReleaseSyncs</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
1386        }
1387      ]
1388    },
1389    "VkWin32KeyedMutexAcquireReleaseInfoNV": {
1390      "(VK_NV_win32_keyed_mutex)": [
1391        {
1392          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-sType-sType",
1393          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV</code>"
1394        },
1395        {
1396          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireSyncs-parameter",
1397          "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 <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handles"
1398        },
1399        {
1400          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireKeys-parameter",
1401          "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"
1402        },
1403        {
1404          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireTimeoutMilliseconds-parameter",
1405          "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"
1406        },
1407        {
1408          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pReleaseSyncs-parameter",
1409          "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 <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handles"
1410        },
1411        {
1412          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pReleaseKeys-parameter",
1413          "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"
1414        },
1415        {
1416          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-commonparent",
1417          "text": " Both of the elements of <code>pAcquireSyncs</code>, and the elements of <code>pReleaseSyncs</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
1418        }
1419      ]
1420    },
1421    "VkProtectedSubmitInfo": {
1422      "(VK_VERSION_1_1)": [
1423        {
1424          "vuid": "VUID-VkProtectedSubmitInfo-protectedSubmit-01816",
1425          "text": " If the protected memory feature is not enabled, <code>protectedSubmit</code> <strong class=\"purple\">must</strong> not be <code>VK_TRUE</code>"
1426        },
1427        {
1428          "vuid": "VUID-VkProtectedSubmitInfo-protectedSubmit-01817",
1429          "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"
1430        },
1431        {
1432          "vuid": "VUID-VkProtectedSubmitInfo-protectedSubmit-01818",
1433          "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"
1434        },
1435        {
1436          "vuid": "VUID-VkProtectedSubmitInfo-pNext-01819",
1437          "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"
1438        },
1439        {
1440          "vuid": "VUID-VkProtectedSubmitInfo-sType-sType",
1441          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO</code>"
1442        }
1443      ]
1444    },
1445    "VkDeviceGroupSubmitInfo": {
1446      "(VK_VERSION_1_1,VK_KHR_device_group)": [
1447        {
1448          "vuid": "VUID-VkDeviceGroupSubmitInfo-waitSemaphoreCount-00082",
1449          "text": " <code>waitSemaphoreCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>waitSemaphoreCount</code>"
1450        },
1451        {
1452          "vuid": "VUID-VkDeviceGroupSubmitInfo-commandBufferCount-00083",
1453          "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>commandBufferCount</code>"
1454        },
1455        {
1456          "vuid": "VUID-VkDeviceGroupSubmitInfo-signalSemaphoreCount-00084",
1457          "text": " <code>signalSemaphoreCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>signalSemaphoreCount</code>"
1458        },
1459        {
1460          "vuid": "VUID-VkDeviceGroupSubmitInfo-pWaitSemaphoreDeviceIndices-00085",
1461          "text": " All elements of <code>pWaitSemaphoreDeviceIndices</code> and <code>pSignalSemaphoreDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices"
1462        },
1463        {
1464          "vuid": "VUID-VkDeviceGroupSubmitInfo-pCommandBufferDeviceMasks-00086",
1465          "text": " All elements of <code>pCommandBufferDeviceMasks</code> <strong class=\"purple\">must</strong> be valid device masks"
1466        },
1467        {
1468          "vuid": "VUID-VkDeviceGroupSubmitInfo-sType-sType",
1469          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO</code>"
1470        },
1471        {
1472          "vuid": "VUID-VkDeviceGroupSubmitInfo-pWaitSemaphoreDeviceIndices-parameter",
1473          "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"
1474        },
1475        {
1476          "vuid": "VUID-VkDeviceGroupSubmitInfo-pCommandBufferDeviceMasks-parameter",
1477          "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"
1478        },
1479        {
1480          "vuid": "VUID-VkDeviceGroupSubmitInfo-pSignalSemaphoreDeviceIndices-parameter",
1481          "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"
1482        }
1483      ]
1484    },
1485    "VkPerformanceQuerySubmitInfoKHR": {
1486      "(VK_KHR_performance_query)": [
1487        {
1488          "vuid": "VUID-VkPerformanceQuerySubmitInfoKHR-counterPassIndex-03221",
1489          "text": " <code>counterPassIndex</code> <strong class=\"purple\">must</strong> be less than the number of counter passes required by any queries within the batch. The required number of counter passes for a performance query is obtained by calling <a href=\"#vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR\">vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR</a>"
1490        },
1491        {
1492          "vuid": "VUID-VkPerformanceQuerySubmitInfoKHR-sType-sType",
1493          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR</code>"
1494        }
1495      ]
1496    },
1497    "vkCmdExecuteCommands": {
1498      "core": [
1499        {
1500          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00088",
1501          "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>"
1502        },
1503        {
1504          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00089",
1505          "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">pending or executable state</a>"
1506        },
1507        {
1508          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00091",
1509          "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>"
1510        },
1511        {
1512          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00092",
1513          "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>"
1514        },
1515        {
1516          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00093",
1517          "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>"
1518        },
1519        {
1520          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00094",
1521          "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"
1522        },
1523        {
1524          "vuid": "VUID-vkCmdExecuteCommands-contents-00095",
1525          "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>"
1526        },
1527        {
1528          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00096",
1529          "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>"
1530        },
1531        {
1532          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00097",
1533          "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"
1534        },
1535        {
1536          "vuid": "VUID-vkCmdExecuteCommands-pInheritanceInfo-00098",
1537          "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, the render passes specified in the <code>pBeginInfo-&gt;pInheritanceInfo-&gt;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"
1538        },
1539        {
1540          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00099",
1541          "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, and any element of <code>pCommandBuffers</code> was recorded with <a href=\"#VkCommandBufferInheritanceInfo\">VkCommandBufferInheritanceInfo</a>::<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"
1542        },
1543        {
1544          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00100",
1545          "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>"
1546        },
1547        {
1548          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00101",
1549          "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>"
1550        },
1551        {
1552          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00102",
1553          "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>"
1554        },
1555        {
1556          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00103",
1557          "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"
1558        },
1559        {
1560          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00104",
1561          "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"
1562        },
1563        {
1564          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00105",
1565          "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>"
1566        },
1567        {
1568          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-parameter",
1569          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
1570        },
1571        {
1572          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-parameter",
1573          "text": " <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>commandBufferCount</code> valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handles"
1574        },
1575        {
1576          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-recording",
1577          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
1578        },
1579        {
1580          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-cmdpool",
1581          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
1582        },
1583        {
1584          "vuid": "VUID-vkCmdExecuteCommands-bufferlevel",
1585          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
1586        },
1587        {
1588          "vuid": "VUID-vkCmdExecuteCommands-commandBufferCount-arraylength",
1589          "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
1590        },
1591        {
1592          "vuid": "VUID-vkCmdExecuteCommands-commonparent",
1593          "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 <a href=\"#VkDevice\">VkDevice</a>"
1594        }
1595      ],
1596      "(VK_QCOM_render_pass_transform)": [
1597        {
1598          "vuid": "VUID-vkCmdExecuteCommands-pNext-02865",
1599          "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance that included <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a> in the <code>pNext</code> chain of <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a>, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <a href=\"#VkCommandBufferInheritanceRenderPassTransformInfoQCOM\">VkCommandBufferInheritanceRenderPassTransformInfoQCOM</a> in the <code>pNext</code> chain of <a href=\"#VkCommandBufferBeginInfo\">VkCommandBufferBeginInfo</a>"
1600        },
1601        {
1602          "vuid": "VUID-vkCmdExecuteCommands-pNext-02866",
1603          "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance that included <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a> in the <code>pNext</code> chain of <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a>, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <a href=\"#VkCommandBufferInheritanceRenderPassTransformInfoQCOM\">VkCommandBufferInheritanceRenderPassTransformInfoQCOM</a>::<code>transform</code> identical to <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a>::<code>transform</code>"
1604        },
1605        {
1606          "vuid": "VUID-vkCmdExecuteCommands-pNext-02867",
1607          "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance that included <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a> in the <code>pNext</code> chain of <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a>, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <a href=\"#VkCommandBufferInheritanceRenderPassTransformInfoQCOM\">VkCommandBufferInheritanceRenderPassTransformInfoQCOM</a>::<code>renderArea</code> identical to <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a>::<code>renderArea</code>"
1608        }
1609      ],
1610      "(VK_VERSION_1_1)": [
1611        {
1612          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-01820",
1613          "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"
1614        },
1615        {
1616          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-01821",
1617          "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"
1618        }
1619      ],
1620      "(VK_EXT_transform_feedback)": [
1621        {
1622          "vuid": "VUID-vkCmdExecuteCommands-None-02286",
1623          "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
1624        }
1625      ]
1626    },
1627    "VkDeviceGroupCommandBufferBeginInfo": {
1628      "(VK_VERSION_1_1,VK_KHR_device_group)": [
1629        {
1630          "vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-deviceMask-00106",
1631          "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value"
1632        },
1633        {
1634          "vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-deviceMask-00107",
1635          "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
1636        },
1637        {
1638          "vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-sType-sType",
1639          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO</code>"
1640        }
1641      ]
1642    },
1643    "vkCmdSetDeviceMask": {
1644      "(VK_VERSION_1_1,VK_KHR_device_group)": [
1645        {
1646          "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00108",
1647          "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value"
1648        },
1649        {
1650          "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00109",
1651          "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
1652        },
1653        {
1654          "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00110",
1655          "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"
1656        },
1657        {
1658          "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00111",
1659          "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"
1660        },
1661        {
1662          "vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-parameter",
1663          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
1664        },
1665        {
1666          "vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-recording",
1667          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
1668        },
1669        {
1670          "vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-cmdpool",
1671          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations"
1672        }
1673      ]
1674    },
1675    "vkCreateFence": {
1676      "core": [
1677        {
1678          "vuid": "VUID-vkCreateFence-device-parameter",
1679          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
1680        },
1681        {
1682          "vuid": "VUID-vkCreateFence-pCreateInfo-parameter",
1683          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkFenceCreateInfo\">VkFenceCreateInfo</a> structure"
1684        },
1685        {
1686          "vuid": "VUID-vkCreateFence-pAllocator-parameter",
1687          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
1688        },
1689        {
1690          "vuid": "VUID-vkCreateFence-pFence-parameter",
1691          "text": " <code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkFence\">VkFence</a> handle"
1692        }
1693      ]
1694    },
1695    "VkFenceCreateInfo": {
1696      "core": [
1697        {
1698          "vuid": "VUID-VkFenceCreateInfo-sType-sType",
1699          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_CREATE_INFO</code>"
1700        },
1701        {
1702          "vuid": "VUID-VkFenceCreateInfo-pNext-pNext",
1703          "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>"
1704        },
1705        {
1706          "vuid": "VUID-VkFenceCreateInfo-sType-unique",
1707          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
1708        },
1709        {
1710          "vuid": "VUID-VkFenceCreateInfo-flags-parameter",
1711          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceCreateFlagBits\">VkFenceCreateFlagBits</a> values"
1712        }
1713      ]
1714    },
1715    "VkExportFenceCreateInfo": {
1716      "(VK_VERSION_1_1,VK_KHR_external_fence)": [
1717        {
1718          "vuid": "VUID-VkExportFenceCreateInfo-handleTypes-01446",
1719          "text": " The bits in <code>handleTypes</code> <strong class=\"purple\">must</strong> be supported and compatible, as reported by <a href=\"#VkExternalFenceProperties\">VkExternalFenceProperties</a>"
1720        },
1721        {
1722          "vuid": "VUID-VkExportFenceCreateInfo-sType-sType",
1723          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO</code>"
1724        },
1725        {
1726          "vuid": "VUID-VkExportFenceCreateInfo-handleTypes-parameter",
1727          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> values"
1728        }
1729      ]
1730    },
1731    "VkExportFenceWin32HandleInfoKHR": {
1732      "(VK_KHR_external_fence_win32)": [
1733        {
1734          "vuid": "VUID-VkExportFenceWin32HandleInfoKHR-handleTypes-01447",
1735          "text": " If <a href=\"#VkExportFenceCreateInfo\">VkExportFenceCreateInfo</a>::<code>handleTypes</code> does not include <code>VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, a <code>VkExportFenceWin32HandleInfoKHR</code> structure <strong class=\"purple\">must</strong> not be included in the <code>pNext</code> chain of <a href=\"#VkFenceCreateInfo\">VkFenceCreateInfo</a>"
1736        },
1737        {
1738          "vuid": "VUID-VkExportFenceWin32HandleInfoKHR-sType-sType",
1739          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR</code>"
1740        },
1741        {
1742          "vuid": "VUID-VkExportFenceWin32HandleInfoKHR-pAttributes-parameter",
1743          "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"
1744        }
1745      ]
1746    },
1747    "vkGetFenceWin32HandleKHR": {
1748      "(VK_KHR_external_fence_win32)": [
1749        {
1750          "vuid": "VUID-vkGetFenceWin32HandleKHR-device-parameter",
1751          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
1752        },
1753        {
1754          "vuid": "VUID-vkGetFenceWin32HandleKHR-pGetWin32HandleInfo-parameter",
1755          "text": " <code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkFenceGetWin32HandleInfoKHR\">VkFenceGetWin32HandleInfoKHR</a> structure"
1756        },
1757        {
1758          "vuid": "VUID-vkGetFenceWin32HandleKHR-pHandle-parameter",
1759          "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value"
1760        }
1761      ]
1762    },
1763    "VkFenceGetWin32HandleInfoKHR": {
1764      "(VK_KHR_external_fence_win32)": [
1765        {
1766          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01448",
1767          "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"
1768        },
1769        {
1770          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01449",
1771          "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>"
1772        },
1773        {
1774          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-fence-01450",
1775          "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>"
1776        },
1777        {
1778          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01451",
1779          "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"
1780        },
1781        {
1782          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01452",
1783          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle"
1784        },
1785        {
1786          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-sType-sType",
1787          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR</code>"
1788        },
1789        {
1790          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-pNext-pNext",
1791          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
1792        },
1793        {
1794          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-fence-parameter",
1795          "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle"
1796        },
1797        {
1798          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-parameter",
1799          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
1800        }
1801      ]
1802    },
1803    "vkGetFenceFdKHR": {
1804      "(VK_KHR_external_fence_fd)": [
1805        {
1806          "vuid": "VUID-vkGetFenceFdKHR-device-parameter",
1807          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
1808        },
1809        {
1810          "vuid": "VUID-vkGetFenceFdKHR-pGetFdInfo-parameter",
1811          "text": " <code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkFenceGetFdInfoKHR\">VkFenceGetFdInfoKHR</a> structure"
1812        },
1813        {
1814          "vuid": "VUID-vkGetFenceFdKHR-pFd-parameter",
1815          "text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>int</code> value"
1816        }
1817      ]
1818    },
1819    "VkFenceGetFdInfoKHR": {
1820      "(VK_KHR_external_fence_fd)": [
1821        {
1822          "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01453",
1823          "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"
1824        },
1825        {
1826          "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01454",
1827          "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"
1828        },
1829        {
1830          "vuid": "VUID-VkFenceGetFdInfoKHR-fence-01455",
1831          "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>"
1832        },
1833        {
1834          "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01456",
1835          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle"
1836        },
1837        {
1838          "vuid": "VUID-VkFenceGetFdInfoKHR-sType-sType",
1839          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR</code>"
1840        },
1841        {
1842          "vuid": "VUID-VkFenceGetFdInfoKHR-pNext-pNext",
1843          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
1844        },
1845        {
1846          "vuid": "VUID-VkFenceGetFdInfoKHR-fence-parameter",
1847          "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle"
1848        },
1849        {
1850          "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-parameter",
1851          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
1852        }
1853      ]
1854    },
1855    "vkDestroyFence": {
1856      "core": [
1857        {
1858          "vuid": "VUID-vkDestroyFence-fence-01120",
1859          "text": " All <a href=\"#devsandqueues-submission\">queue submission</a> commands that refer to <code>fence</code> <strong class=\"purple\">must</strong> have completed execution"
1860        },
1861        {
1862          "vuid": "VUID-vkDestroyFence-fence-01121",
1863          "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"
1864        },
1865        {
1866          "vuid": "VUID-vkDestroyFence-fence-01122",
1867          "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>"
1868        },
1869        {
1870          "vuid": "VUID-vkDestroyFence-device-parameter",
1871          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
1872        },
1873        {
1874          "vuid": "VUID-vkDestroyFence-fence-parameter",
1875          "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 <a href=\"#VkFence\">VkFence</a> handle"
1876        },
1877        {
1878          "vuid": "VUID-vkDestroyFence-pAllocator-parameter",
1879          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
1880        },
1881        {
1882          "vuid": "VUID-vkDestroyFence-fence-parent",
1883          "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>"
1884        }
1885      ]
1886    },
1887    "vkGetFenceStatus": {
1888      "core": [
1889        {
1890          "vuid": "VUID-vkGetFenceStatus-device-parameter",
1891          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
1892        },
1893        {
1894          "vuid": "VUID-vkGetFenceStatus-fence-parameter",
1895          "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle"
1896        },
1897        {
1898          "vuid": "VUID-vkGetFenceStatus-fence-parent",
1899          "text": " <code>fence</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
1900        }
1901      ]
1902    },
1903    "vkResetFences": {
1904      "core": [
1905        {
1906          "vuid": "VUID-vkResetFences-pFences-01123",
1907          "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"
1908        },
1909        {
1910          "vuid": "VUID-vkResetFences-device-parameter",
1911          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
1912        },
1913        {
1914          "vuid": "VUID-vkResetFences-pFences-parameter",
1915          "text": " <code>pFences</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>fenceCount</code> valid <a href=\"#VkFence\">VkFence</a> handles"
1916        },
1917        {
1918          "vuid": "VUID-vkResetFences-fenceCount-arraylength",
1919          "text": " <code>fenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
1920        },
1921        {
1922          "vuid": "VUID-vkResetFences-pFences-parent",
1923          "text": " Each element of <code>pFences</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
1924        }
1925      ]
1926    },
1927    "vkWaitForFences": {
1928      "core": [
1929        {
1930          "vuid": "VUID-vkWaitForFences-device-parameter",
1931          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
1932        },
1933        {
1934          "vuid": "VUID-vkWaitForFences-pFences-parameter",
1935          "text": " <code>pFences</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>fenceCount</code> valid <a href=\"#VkFence\">VkFence</a> handles"
1936        },
1937        {
1938          "vuid": "VUID-vkWaitForFences-fenceCount-arraylength",
1939          "text": " <code>fenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
1940        },
1941        {
1942          "vuid": "VUID-vkWaitForFences-pFences-parent",
1943          "text": " Each element of <code>pFences</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
1944        }
1945      ]
1946    },
1947    "vkRegisterDeviceEventEXT": {
1948      "(VK_EXT_display_control)": [
1949        {
1950          "vuid": "VUID-vkRegisterDeviceEventEXT-device-parameter",
1951          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
1952        },
1953        {
1954          "vuid": "VUID-vkRegisterDeviceEventEXT-pDeviceEventInfo-parameter",
1955          "text": " <code>pDeviceEventInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDeviceEventInfoEXT\">VkDeviceEventInfoEXT</a> structure"
1956        },
1957        {
1958          "vuid": "VUID-vkRegisterDeviceEventEXT-pAllocator-parameter",
1959          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
1960        },
1961        {
1962          "vuid": "VUID-vkRegisterDeviceEventEXT-pFence-parameter",
1963          "text": " <code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkFence\">VkFence</a> handle"
1964        }
1965      ]
1966    },
1967    "VkDeviceEventInfoEXT": {
1968      "(VK_EXT_display_control)": [
1969        {
1970          "vuid": "VUID-VkDeviceEventInfoEXT-sType-sType",
1971          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT</code>"
1972        },
1973        {
1974          "vuid": "VUID-VkDeviceEventInfoEXT-pNext-pNext",
1975          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
1976        },
1977        {
1978          "vuid": "VUID-VkDeviceEventInfoEXT-deviceEvent-parameter",
1979          "text": " <code>deviceEvent</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceEventTypeEXT\">VkDeviceEventTypeEXT</a> value"
1980        }
1981      ]
1982    },
1983    "vkRegisterDisplayEventEXT": {
1984      "(VK_EXT_display_control)": [
1985        {
1986          "vuid": "VUID-vkRegisterDisplayEventEXT-device-parameter",
1987          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
1988        },
1989        {
1990          "vuid": "VUID-vkRegisterDisplayEventEXT-display-parameter",
1991          "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle"
1992        },
1993        {
1994          "vuid": "VUID-vkRegisterDisplayEventEXT-pDisplayEventInfo-parameter",
1995          "text": " <code>pDisplayEventInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDisplayEventInfoEXT\">VkDisplayEventInfoEXT</a> structure"
1996        },
1997        {
1998          "vuid": "VUID-vkRegisterDisplayEventEXT-pAllocator-parameter",
1999          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
2000        },
2001        {
2002          "vuid": "VUID-vkRegisterDisplayEventEXT-pFence-parameter",
2003          "text": " <code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkFence\">VkFence</a> handle"
2004        },
2005        {
2006          "vuid": "VUID-vkRegisterDisplayEventEXT-commonparent",
2007          "text": " Both of <code>device</code>, and <code>display</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a>"
2008        }
2009      ]
2010    },
2011    "VkDisplayEventInfoEXT": {
2012      "(VK_EXT_display_control)": [
2013        {
2014          "vuid": "VUID-VkDisplayEventInfoEXT-sType-sType",
2015          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT</code>"
2016        },
2017        {
2018          "vuid": "VUID-VkDisplayEventInfoEXT-pNext-pNext",
2019          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2020        },
2021        {
2022          "vuid": "VUID-VkDisplayEventInfoEXT-displayEvent-parameter",
2023          "text": " <code>displayEvent</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayEventTypeEXT\">VkDisplayEventTypeEXT</a> value"
2024        }
2025      ]
2026    },
2027    "vkImportFenceWin32HandleKHR": {
2028      "(VK_KHR_external_fence_win32)": [
2029        {
2030          "vuid": "VUID-vkImportFenceWin32HandleKHR-device-parameter",
2031          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2032        },
2033        {
2034          "vuid": "VUID-vkImportFenceWin32HandleKHR-pImportFenceWin32HandleInfo-parameter",
2035          "text": " <code>pImportFenceWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImportFenceWin32HandleInfoKHR\">VkImportFenceWin32HandleInfoKHR</a> structure"
2036        }
2037      ]
2038    },
2039    "VkImportFenceWin32HandleInfoKHR": {
2040      "(VK_KHR_external_fence_win32)": [
2041        {
2042          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01457",
2043          "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 <code>VkImportFenceWin32HandleInfoKHR</code></a> table"
2044        },
2045        {
2046          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01459",
2047          "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>"
2048        },
2049        {
2050          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01460",
2051          "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>"
2052        },
2053        {
2054          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01461",
2055          "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>"
2056        },
2057        {
2058          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handle-01462",
2059          "text": " If <code>handle</code> is not <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2060        },
2061        {
2062          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handle-01539",
2063          "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>"
2064        },
2065        {
2066          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-name-01540",
2067          "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>"
2068        },
2069        {
2070          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-sType-sType",
2071          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR</code>"
2072        },
2073        {
2074          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-pNext-pNext",
2075          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2076        },
2077        {
2078          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-fence-parameter",
2079          "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle"
2080        },
2081        {
2082          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-flags-parameter",
2083          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceImportFlagBits\">VkFenceImportFlagBits</a> values"
2084        },
2085        {
2086          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-parameter",
2087          "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"
2088        }
2089      ]
2090    },
2091    "vkImportFenceFdKHR": {
2092      "(VK_KHR_external_fence_fd)": [
2093        {
2094          "vuid": "VUID-vkImportFenceFdKHR-fence-01463",
2095          "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"
2096        },
2097        {
2098          "vuid": "VUID-vkImportFenceFdKHR-device-parameter",
2099          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2100        },
2101        {
2102          "vuid": "VUID-vkImportFenceFdKHR-pImportFenceFdInfo-parameter",
2103          "text": " <code>pImportFenceFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImportFenceFdInfoKHR\">VkImportFenceFdInfoKHR</a> structure"
2104        }
2105      ]
2106    },
2107    "VkImportFenceFdInfoKHR": {
2108      "(VK_KHR_external_fence_fd)": [
2109        {
2110          "vuid": "VUID-VkImportFenceFdInfoKHR-handleType-01464",
2111          "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 <code>VkImportFenceFdInfoKHR</code></a> table"
2112        },
2113        {
2114          "vuid": "VUID-VkImportFenceFdInfoKHR-fd-01541",
2115          "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>"
2116        },
2117        {
2118          "vuid": "VUID-VkImportFenceFdInfoKHR-sType-sType",
2119          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR</code>"
2120        },
2121        {
2122          "vuid": "VUID-VkImportFenceFdInfoKHR-pNext-pNext",
2123          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2124        },
2125        {
2126          "vuid": "VUID-VkImportFenceFdInfoKHR-fence-parameter",
2127          "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle"
2128        },
2129        {
2130          "vuid": "VUID-VkImportFenceFdInfoKHR-flags-parameter",
2131          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceImportFlagBits\">VkFenceImportFlagBits</a> values"
2132        },
2133        {
2134          "vuid": "VUID-VkImportFenceFdInfoKHR-handleType-parameter",
2135          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
2136        }
2137      ]
2138    },
2139    "vkCreateSemaphore": {
2140      "core": [
2141        {
2142          "vuid": "VUID-vkCreateSemaphore-device-parameter",
2143          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2144        },
2145        {
2146          "vuid": "VUID-vkCreateSemaphore-pCreateInfo-parameter",
2147          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSemaphoreCreateInfo\">VkSemaphoreCreateInfo</a> structure"
2148        },
2149        {
2150          "vuid": "VUID-vkCreateSemaphore-pAllocator-parameter",
2151          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
2152        },
2153        {
2154          "vuid": "VUID-vkCreateSemaphore-pSemaphore-parameter",
2155          "text": " <code>pSemaphore</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSemaphore\">VkSemaphore</a> handle"
2156        }
2157      ]
2158    },
2159    "VkSemaphoreCreateInfo": {
2160      "core": [
2161        {
2162          "vuid": "VUID-VkSemaphoreCreateInfo-sType-sType",
2163          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO</code>"
2164        },
2165        {
2166          "vuid": "VUID-VkSemaphoreCreateInfo-pNext-pNext",
2167          "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>, <a href=\"#VkExportSemaphoreWin32HandleInfoKHR\">VkExportSemaphoreWin32HandleInfoKHR</a>, or <a href=\"#VkSemaphoreTypeCreateInfo\">VkSemaphoreTypeCreateInfo</a>"
2168        },
2169        {
2170          "vuid": "VUID-VkSemaphoreCreateInfo-sType-unique",
2171          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
2172        },
2173        {
2174          "vuid": "VUID-VkSemaphoreCreateInfo-flags-zerobitmask",
2175          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
2176        }
2177      ]
2178    },
2179    "VkSemaphoreTypeCreateInfo": {
2180      "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
2181        {
2182          "vuid": "VUID-VkSemaphoreTypeCreateInfo-sType-sType",
2183          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO</code>"
2184        },
2185        {
2186          "vuid": "VUID-VkSemaphoreTypeCreateInfo-semaphoreType-parameter",
2187          "text": " <code>semaphoreType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> value"
2188        },
2189        {
2190          "vuid": "VUID-VkSemaphoreTypeCreateInfo-timelineSemaphore-03252",
2191          "text": " If the <a href=\"#features-timelineSemaphore\"><code>timelineSemaphore</code></a> feature is not enabled, <code>semaphoreType</code> <strong class=\"purple\">must</strong> not equal <code>VK_SEMAPHORE_TYPE_TIMELINE</code>"
2192        },
2193        {
2194          "vuid": "VUID-VkSemaphoreTypeCreateInfo-semaphoreType-03279",
2195          "text": " If <code>semaphoreType</code> is <code>VK_SEMAPHORE_TYPE_BINARY</code>, <code>initialValue</code> <strong class=\"purple\">must</strong> be zero"
2196        }
2197      ]
2198    },
2199    "VkExportSemaphoreCreateInfo": {
2200      "(VK_VERSION_1_1,VK_KHR_external_semaphore)": [
2201        {
2202          "vuid": "VUID-VkExportSemaphoreCreateInfo-handleTypes-01124",
2203          "text": " The bits in <code>handleTypes</code> <strong class=\"purple\">must</strong> be supported and compatible, as reported by <a href=\"#VkExternalSemaphoreProperties\">VkExternalSemaphoreProperties</a>"
2204        },
2205        {
2206          "vuid": "VUID-VkExportSemaphoreCreateInfo-sType-sType",
2207          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO</code>"
2208        },
2209        {
2210          "vuid": "VUID-VkExportSemaphoreCreateInfo-handleTypes-parameter",
2211          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> values"
2212        }
2213      ]
2214    },
2215    "VkExportSemaphoreWin32HandleInfoKHR": {
2216      "(VK_KHR_external_semaphore_win32)": [
2217        {
2218          "vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-handleTypes-01125",
2219          "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 included in the <code>pNext</code> chain of <a href=\"#VkSemaphoreCreateInfo\">VkSemaphoreCreateInfo</a>"
2220        },
2221        {
2222          "vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-sType-sType",
2223          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR</code>"
2224        },
2225        {
2226          "vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-pAttributes-parameter",
2227          "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"
2228        }
2229      ]
2230    },
2231    "vkGetSemaphoreWin32HandleKHR": {
2232      "(VK_KHR_external_semaphore_win32)": [
2233        {
2234          "vuid": "VUID-vkGetSemaphoreWin32HandleKHR-device-parameter",
2235          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2236        },
2237        {
2238          "vuid": "VUID-vkGetSemaphoreWin32HandleKHR-pGetWin32HandleInfo-parameter",
2239          "text": " <code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSemaphoreGetWin32HandleInfoKHR\">VkSemaphoreGetWin32HandleInfoKHR</a> structure"
2240        },
2241        {
2242          "vuid": "VUID-vkGetSemaphoreWin32HandleKHR-pHandle-parameter",
2243          "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value"
2244        }
2245      ]
2246    },
2247    "VkSemaphoreGetWin32HandleInfoKHR": {
2248      "(VK_KHR_external_semaphore_win32)": [
2249        {
2250          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01126",
2251          "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"
2252        },
2253        {
2254          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01127",
2255          "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>"
2256        },
2257        {
2258          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-01128",
2259          "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>"
2260        },
2261        {
2262          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01129",
2263          "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>"
2264        },
2265        {
2266          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01130",
2267          "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"
2268        },
2269        {
2270          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01131",
2271          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle"
2272        },
2273        {
2274          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-sType-sType",
2275          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR</code>"
2276        },
2277        {
2278          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-pNext-pNext",
2279          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2280        },
2281        {
2282          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-parameter",
2283          "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle"
2284        },
2285        {
2286          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-parameter",
2287          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
2288        }
2289      ]
2290    },
2291    "vkGetSemaphoreFdKHR": {
2292      "(VK_KHR_external_semaphore_fd)": [
2293        {
2294          "vuid": "VUID-vkGetSemaphoreFdKHR-device-parameter",
2295          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2296        },
2297        {
2298          "vuid": "VUID-vkGetSemaphoreFdKHR-pGetFdInfo-parameter",
2299          "text": " <code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSemaphoreGetFdInfoKHR\">VkSemaphoreGetFdInfoKHR</a> structure"
2300        },
2301        {
2302          "vuid": "VUID-vkGetSemaphoreFdKHR-pFd-parameter",
2303          "text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>int</code> value"
2304        }
2305      ]
2306    },
2307    "VkSemaphoreGetFdInfoKHR": {
2308      "(VK_KHR_external_semaphore_fd)": [
2309        {
2310          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01132",
2311          "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"
2312        },
2313        {
2314          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-semaphore-01133",
2315          "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>"
2316        },
2317        {
2318          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01134",
2319          "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>"
2320        },
2321        {
2322          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01135",
2323          "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"
2324        },
2325        {
2326          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01136",
2327          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle"
2328        },
2329        {
2330          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-sType-sType",
2331          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR</code>"
2332        },
2333        {
2334          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-pNext-pNext",
2335          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2336        },
2337        {
2338          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-semaphore-parameter",
2339          "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle"
2340        },
2341        {
2342          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-parameter",
2343          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
2344        }
2345      ],
2346      "(VK_KHR_external_semaphore_fd)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
2347        {
2348          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-03253",
2349          "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>semaphore</code> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_BINARY</code>"
2350        },
2351        {
2352          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-03254",
2353          "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>semaphore</code> <strong class=\"purple\">must</strong> have an associated semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends (if any) <strong class=\"purple\">must</strong> have also been submitted for execution"
2354        }
2355      ]
2356    },
2357    "vkDestroySemaphore": {
2358      "core": [
2359        {
2360          "vuid": "VUID-vkDestroySemaphore-semaphore-01137",
2361          "text": " All submitted batches that refer to <code>semaphore</code> <strong class=\"purple\">must</strong> have completed execution"
2362        },
2363        {
2364          "vuid": "VUID-vkDestroySemaphore-semaphore-01138",
2365          "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"
2366        },
2367        {
2368          "vuid": "VUID-vkDestroySemaphore-semaphore-01139",
2369          "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>"
2370        },
2371        {
2372          "vuid": "VUID-vkDestroySemaphore-device-parameter",
2373          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2374        },
2375        {
2376          "vuid": "VUID-vkDestroySemaphore-semaphore-parameter",
2377          "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 <a href=\"#VkSemaphore\">VkSemaphore</a> handle"
2378        },
2379        {
2380          "vuid": "VUID-vkDestroySemaphore-pAllocator-parameter",
2381          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
2382        },
2383        {
2384          "vuid": "VUID-vkDestroySemaphore-semaphore-parent",
2385          "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>"
2386        }
2387      ]
2388    },
2389    "vkGetSemaphoreCounterValue": {
2390      "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
2391        {
2392          "vuid": "VUID-vkGetSemaphoreCounterValue-semaphore-03255",
2393          "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code>"
2394        },
2395        {
2396          "vuid": "VUID-vkGetSemaphoreCounterValue-device-parameter",
2397          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2398        },
2399        {
2400          "vuid": "VUID-vkGetSemaphoreCounterValue-semaphore-parameter",
2401          "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle"
2402        },
2403        {
2404          "vuid": "VUID-vkGetSemaphoreCounterValue-pValue-parameter",
2405          "text": " <code>pValue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint64_t</code> value"
2406        },
2407        {
2408          "vuid": "VUID-vkGetSemaphoreCounterValue-semaphore-parent",
2409          "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
2410        }
2411      ]
2412    },
2413    "vkWaitSemaphores": {
2414      "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
2415        {
2416          "vuid": "VUID-vkWaitSemaphores-device-parameter",
2417          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2418        },
2419        {
2420          "vuid": "VUID-vkWaitSemaphores-pWaitInfo-parameter",
2421          "text": " <code>pWaitInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSemaphoreWaitInfo\">VkSemaphoreWaitInfo</a> structure"
2422        }
2423      ]
2424    },
2425    "VkSemaphoreWaitInfo": {
2426      "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
2427        {
2428          "vuid": "VUID-VkSemaphoreWaitInfo-pSemaphores-03256",
2429          "text": " All of the elements of <code>pSemaphores</code> <strong class=\"purple\">must</strong> reference a semaphore that was created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code>"
2430        },
2431        {
2432          "vuid": "VUID-VkSemaphoreWaitInfo-sType-sType",
2433          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO</code>"
2434        },
2435        {
2436          "vuid": "VUID-VkSemaphoreWaitInfo-pNext-pNext",
2437          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2438        },
2439        {
2440          "vuid": "VUID-VkSemaphoreWaitInfo-flags-parameter",
2441          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSemaphoreWaitFlagBits\">VkSemaphoreWaitFlagBits</a> values"
2442        },
2443        {
2444          "vuid": "VUID-VkSemaphoreWaitInfo-pSemaphores-parameter",
2445          "text": " <code>pSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>semaphoreCount</code> valid <a href=\"#VkSemaphore\">VkSemaphore</a> handles"
2446        },
2447        {
2448          "vuid": "VUID-VkSemaphoreWaitInfo-pValues-parameter",
2449          "text": " <code>pValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>semaphoreCount</code> <code>uint64_t</code> values"
2450        },
2451        {
2452          "vuid": "VUID-VkSemaphoreWaitInfo-semaphoreCount-arraylength",
2453          "text": " <code>semaphoreCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
2454        }
2455      ]
2456    },
2457    "vkSignalSemaphore": {
2458      "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
2459        {
2460          "vuid": "VUID-vkSignalSemaphore-device-parameter",
2461          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2462        },
2463        {
2464          "vuid": "VUID-vkSignalSemaphore-pSignalInfo-parameter",
2465          "text": " <code>pSignalInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSemaphoreSignalInfo\">VkSemaphoreSignalInfo</a> structure"
2466        }
2467      ]
2468    },
2469    "VkSemaphoreSignalInfo": {
2470      "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
2471        {
2472          "vuid": "VUID-VkSemaphoreSignalInfo-semaphore-03257",
2473          "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code>"
2474        },
2475        {
2476          "vuid": "VUID-VkSemaphoreSignalInfo-value-03258",
2477          "text": " <code>value</code> <strong class=\"purple\">must</strong> have a value greater than the current value of the semaphore"
2478        },
2479        {
2480          "vuid": "VUID-VkSemaphoreSignalInfo-value-03259",
2481          "text": " <code>value</code> <strong class=\"purple\">must</strong> be less than the value of any pending semaphore signal operations"
2482        },
2483        {
2484          "vuid": "VUID-VkSemaphoreSignalInfo-value-03260",
2485          "text": " <code>value</code> <strong class=\"purple\">must</strong> have a value which does not differ from the current value of the semaphore or the value of any outstanding semaphore wait or signal operation on <code>semaphore</code> by more than <a href=\"#limits-maxTimelineSemaphoreValueDifference\"><code>maxTimelineSemaphoreValueDifference</code></a>"
2486        },
2487        {
2488          "vuid": "VUID-VkSemaphoreSignalInfo-sType-sType",
2489          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO</code>"
2490        },
2491        {
2492          "vuid": "VUID-VkSemaphoreSignalInfo-pNext-pNext",
2493          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2494        },
2495        {
2496          "vuid": "VUID-VkSemaphoreSignalInfo-semaphore-parameter",
2497          "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle"
2498        }
2499      ]
2500    },
2501    "vkImportSemaphoreWin32HandleKHR": {
2502      "(VK_KHR_external_semaphore_win32)": [
2503        {
2504          "vuid": "VUID-vkImportSemaphoreWin32HandleKHR-device-parameter",
2505          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2506        },
2507        {
2508          "vuid": "VUID-vkImportSemaphoreWin32HandleKHR-pImportSemaphoreWin32HandleInfo-parameter",
2509          "text": " <code>pImportSemaphoreWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImportSemaphoreWin32HandleInfoKHR\">VkImportSemaphoreWin32HandleInfoKHR</a> structure"
2510        }
2511      ]
2512    },
2513    "VkImportSemaphoreWin32HandleInfoKHR": {
2514      "(VK_KHR_external_semaphore_win32)": [
2515        {
2516          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01140",
2517          "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 <code>VkImportSemaphoreWin32HandleInfoKHR</code></a> table"
2518        },
2519        {
2520          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01466",
2521          "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>"
2522        },
2523        {
2524          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01467",
2525          "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>"
2526        },
2527        {
2528          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01468",
2529          "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>"
2530        },
2531        {
2532          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01469",
2533          "text": " If <code>handle</code> is not <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2534        },
2535        {
2536          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01542",
2537          "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>"
2538        },
2539        {
2540          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-name-01543",
2541          "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>"
2542        },
2543        {
2544          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-03261",
2545          "text": " If <code>handleType</code> is <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code> or <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT</code>, the <a href=\"#VkSemaphoreCreateInfo\">VkSemaphoreCreateInfo</a>::<code>flags</code> field <strong class=\"purple\">must</strong> match that of the semaphore from which <code>handle</code> or <code>name</code> was exported"
2546        },
2547        {
2548          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-sType-sType",
2549          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR</code>"
2550        },
2551        {
2552          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-pNext-pNext",
2553          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2554        },
2555        {
2556          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-semaphore-parameter",
2557          "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle"
2558        },
2559        {
2560          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-flags-parameter",
2561          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSemaphoreImportFlagBits\">VkSemaphoreImportFlagBits</a> values"
2562        },
2563        {
2564          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-parameter",
2565          "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"
2566        }
2567      ],
2568      "(VK_KHR_external_semaphore_win32)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
2569        {
2570          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-03262",
2571          "text": " If <code>handleType</code> is <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code> or <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT</code>, the <a href=\"#VkSemaphoreTypeCreateInfo\">VkSemaphoreTypeCreateInfo</a>::<code>semaphoreType</code> field <strong class=\"purple\">must</strong> match that of the semaphore from which <code>handle</code> or <code>name</code> was exported"
2572        },
2573        {
2574          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-flags-03322",
2575          "text": " If <code>flags</code> contains <code>VK_SEMAPHORE_IMPORT_TEMPORARY_BIT</code>, the <a href=\"#VkSemaphoreTypeCreateInfo\">VkSemaphoreTypeCreateInfo</a>::<code>semaphoreType</code> field of the semaphore from which <code>handle</code> or <code>name</code> was exported <strong class=\"purple\">must</strong> not be <code>VK_SEMAPHORE_TYPE_TIMELINE</code>"
2576        }
2577      ]
2578    },
2579    "vkImportSemaphoreFdKHR": {
2580      "(VK_KHR_external_semaphore_fd)": [
2581        {
2582          "vuid": "VUID-vkImportSemaphoreFdKHR-semaphore-01142",
2583          "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"
2584        },
2585        {
2586          "vuid": "VUID-vkImportSemaphoreFdKHR-device-parameter",
2587          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2588        },
2589        {
2590          "vuid": "VUID-vkImportSemaphoreFdKHR-pImportSemaphoreFdInfo-parameter",
2591          "text": " <code>pImportSemaphoreFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImportSemaphoreFdInfoKHR\">VkImportSemaphoreFdInfoKHR</a> structure"
2592        }
2593      ]
2594    },
2595    "VkImportSemaphoreFdInfoKHR": {
2596      "(VK_KHR_external_semaphore_fd)": [
2597        {
2598          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-01143",
2599          "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 <code>VkImportSemaphoreFdInfoKHR</code></a> table"
2600        },
2601        {
2602          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-fd-01544",
2603          "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>"
2604        },
2605        {
2606          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-03263",
2607          "text": " If <code>handleType</code> is <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT</code>, the <a href=\"#VkSemaphoreCreateInfo\">VkSemaphoreCreateInfo</a>::<code>flags</code> field <strong class=\"purple\">must</strong> match that of the semaphore from which <code>fd</code> was exported"
2608        },
2609        {
2610          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-sType-sType",
2611          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR</code>"
2612        },
2613        {
2614          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-pNext-pNext",
2615          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2616        },
2617        {
2618          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-semaphore-parameter",
2619          "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle"
2620        },
2621        {
2622          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-flags-parameter",
2623          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSemaphoreImportFlagBits\">VkSemaphoreImportFlagBits</a> values"
2624        },
2625        {
2626          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-parameter",
2627          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
2628        }
2629      ],
2630      "(VK_KHR_external_semaphore_fd)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
2631        {
2632          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-03264",
2633          "text": " If <code>handleType</code> is <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT</code>, the <a href=\"#VkSemaphoreTypeCreateInfo\">VkSemaphoreTypeCreateInfo</a>::<code>semaphoreType</code> field <strong class=\"purple\">must</strong> match that of the semaphore from which <code>fd</code> was exported"
2634        },
2635        {
2636          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-flags-03323",
2637          "text": " If <code>flags</code> contains <code>VK_SEMAPHORE_IMPORT_TEMPORARY_BIT</code>, the <a href=\"#VkSemaphoreTypeCreateInfo\">VkSemaphoreTypeCreateInfo</a>::<code>semaphoreType</code> field of the semaphore from which <code>fd</code> was exported <strong class=\"purple\">must</strong> not be <code>VK_SEMAPHORE_TYPE_TIMELINE</code>"
2638        }
2639      ]
2640    },
2641    "vkCreateEvent": {
2642      "core": [
2643        {
2644          "vuid": "VUID-vkCreateEvent-device-parameter",
2645          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2646        },
2647        {
2648          "vuid": "VUID-vkCreateEvent-pCreateInfo-parameter",
2649          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkEventCreateInfo\">VkEventCreateInfo</a> structure"
2650        },
2651        {
2652          "vuid": "VUID-vkCreateEvent-pAllocator-parameter",
2653          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
2654        },
2655        {
2656          "vuid": "VUID-vkCreateEvent-pEvent-parameter",
2657          "text": " <code>pEvent</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkEvent\">VkEvent</a> handle"
2658        }
2659      ]
2660    },
2661    "VkEventCreateInfo": {
2662      "core": [
2663        {
2664          "vuid": "VUID-VkEventCreateInfo-sType-sType",
2665          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EVENT_CREATE_INFO</code>"
2666        },
2667        {
2668          "vuid": "VUID-VkEventCreateInfo-pNext-pNext",
2669          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2670        },
2671        {
2672          "vuid": "VUID-VkEventCreateInfo-flags-zerobitmask",
2673          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
2674        }
2675      ]
2676    },
2677    "vkDestroyEvent": {
2678      "core": [
2679        {
2680          "vuid": "VUID-vkDestroyEvent-event-01145",
2681          "text": " All submitted commands that refer to <code>event</code> <strong class=\"purple\">must</strong> have completed execution"
2682        },
2683        {
2684          "vuid": "VUID-vkDestroyEvent-event-01146",
2685          "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"
2686        },
2687        {
2688          "vuid": "VUID-vkDestroyEvent-event-01147",
2689          "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>"
2690        },
2691        {
2692          "vuid": "VUID-vkDestroyEvent-device-parameter",
2693          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2694        },
2695        {
2696          "vuid": "VUID-vkDestroyEvent-event-parameter",
2697          "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 <a href=\"#VkEvent\">VkEvent</a> handle"
2698        },
2699        {
2700          "vuid": "VUID-vkDestroyEvent-pAllocator-parameter",
2701          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
2702        },
2703        {
2704          "vuid": "VUID-vkDestroyEvent-event-parent",
2705          "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>"
2706        }
2707      ]
2708    },
2709    "vkGetEventStatus": {
2710      "core": [
2711        {
2712          "vuid": "VUID-vkGetEventStatus-device-parameter",
2713          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2714        },
2715        {
2716          "vuid": "VUID-vkGetEventStatus-event-parameter",
2717          "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkEvent\">VkEvent</a> handle"
2718        },
2719        {
2720          "vuid": "VUID-vkGetEventStatus-event-parent",
2721          "text": " <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
2722        }
2723      ]
2724    },
2725    "vkSetEvent": {
2726      "core": [
2727        {
2728          "vuid": "VUID-vkSetEvent-device-parameter",
2729          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2730        },
2731        {
2732          "vuid": "VUID-vkSetEvent-event-parameter",
2733          "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkEvent\">VkEvent</a> handle"
2734        },
2735        {
2736          "vuid": "VUID-vkSetEvent-event-parent",
2737          "text": " <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
2738        }
2739      ]
2740    },
2741    "vkResetEvent": {
2742      "core": [
2743        {
2744          "vuid": "VUID-vkResetEvent-event-01148",
2745          "text": " <code>event</code> <strong class=\"purple\">must</strong> not be waited on by a <code>vkCmdWaitEvents</code> command that is currently executing"
2746        },
2747        {
2748          "vuid": "VUID-vkResetEvent-device-parameter",
2749          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2750        },
2751        {
2752          "vuid": "VUID-vkResetEvent-event-parameter",
2753          "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkEvent\">VkEvent</a> handle"
2754        },
2755        {
2756          "vuid": "VUID-vkResetEvent-event-parent",
2757          "text": " <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
2758        }
2759      ]
2760    },
2761    "vkCmdSetEvent": {
2762      "core": [
2763        {
2764          "vuid": "VUID-vkCmdSetEvent-stageMask-04090",
2765          "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
2766        },
2767        {
2768          "vuid": "VUID-vkCmdSetEvent-stageMask-04091",
2769          "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, pname:stageMask <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>"
2770        },
2771        {
2772          "vuid": "VUID-vkCmdSetEvent-stageMask-4098",
2773          "text": " Any pipeline stage included in pname:stageMask <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>"
2774        },
2775        {
2776          "vuid": "VUID-vkCmdSetEvent-stageMask-01149",
2777          "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>"
2778        },
2779        {
2780          "vuid": "VUID-vkCmdSetEvent-commandBuffer-parameter",
2781          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
2782        },
2783        {
2784          "vuid": "VUID-vkCmdSetEvent-event-parameter",
2785          "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkEvent\">VkEvent</a> handle"
2786        },
2787        {
2788          "vuid": "VUID-vkCmdSetEvent-stageMask-parameter",
2789          "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
2790        },
2791        {
2792          "vuid": "VUID-vkCmdSetEvent-stageMask-requiredbitmask",
2793          "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
2794        },
2795        {
2796          "vuid": "VUID-vkCmdSetEvent-commandBuffer-recording",
2797          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
2798        },
2799        {
2800          "vuid": "VUID-vkCmdSetEvent-commandBuffer-cmdpool",
2801          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
2802        },
2803        {
2804          "vuid": "VUID-vkCmdSetEvent-renderpass",
2805          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
2806        },
2807        {
2808          "vuid": "VUID-vkCmdSetEvent-commonparent",
2809          "text": " Both of <code>commandBuffer</code>, and <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
2810        }
2811      ],
2812      "(VK_EXT_conditional_rendering)": [
2813        {
2814          "vuid": "VUID-vkCmdSetEvent-stageMask-04092",
2815          "text": " If the <a href=\"#features-conditionalRendering\">conditional rendering</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>"
2816        }
2817      ],
2818      "(VK_EXT_fragment_density_map)": [
2819        {
2820          "vuid": "VUID-vkCmdSetEvent-stageMask-04093",
2821          "text": " If the <a href=\"#features-fragmentDensityMap\">fragment density map</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>"
2822        }
2823      ],
2824      "(VK_EXT_transform_feedback)": [
2825        {
2826          "vuid": "VUID-vkCmdSetEvent-stageMask-04094",
2827          "text": " If the <a href=\"#features-transformFeedback\">transform feedback</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>"
2828        }
2829      ],
2830      "(VK_NV_mesh_shader)": [
2831        {
2832          "vuid": "VUID-vkCmdSetEvent-stageMask-04095",
2833          "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
2834        },
2835        {
2836          "vuid": "VUID-vkCmdSetEvent-stageMask-04096",
2837          "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
2838        }
2839      ],
2840      "(VK_NV_shading_rate_image)": [
2841        {
2842          "vuid": "VUID-vkCmdSetEvent-stageMask-04097",
2843          "text": " If the <a href=\"#features-shadingRateImage\">shading rate image</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV</code>"
2844        }
2845      ],
2846      "(VK_VERSION_1_1,VK_KHR_device_group)": [
2847        {
2848          "vuid": "VUID-vkCmdSetEvent-commandBuffer-01152",
2849          "text": " <code>commandBuffer</code>&#8217;s current device mask <strong class=\"purple\">must</strong> include exactly one physical device"
2850        }
2851      ]
2852    },
2853    "vkCmdResetEvent": {
2854      "core": [
2855        {
2856          "vuid": "VUID-vkCmdResetEvent-stageMask-04090",
2857          "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
2858        },
2859        {
2860          "vuid": "VUID-vkCmdResetEvent-stageMask-04091",
2861          "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, pname:stageMask <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>"
2862        },
2863        {
2864          "vuid": "VUID-vkCmdResetEvent-stageMask-4098",
2865          "text": " Any pipeline stage included in pname:stageMask <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>"
2866        },
2867        {
2868          "vuid": "VUID-vkCmdResetEvent-stageMask-01153",
2869          "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>"
2870        },
2871        {
2872          "vuid": "VUID-vkCmdResetEvent-event-01156",
2873          "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"
2874        },
2875        {
2876          "vuid": "VUID-vkCmdResetEvent-commandBuffer-parameter",
2877          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
2878        },
2879        {
2880          "vuid": "VUID-vkCmdResetEvent-event-parameter",
2881          "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkEvent\">VkEvent</a> handle"
2882        },
2883        {
2884          "vuid": "VUID-vkCmdResetEvent-stageMask-parameter",
2885          "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
2886        },
2887        {
2888          "vuid": "VUID-vkCmdResetEvent-stageMask-requiredbitmask",
2889          "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
2890        },
2891        {
2892          "vuid": "VUID-vkCmdResetEvent-commandBuffer-recording",
2893          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
2894        },
2895        {
2896          "vuid": "VUID-vkCmdResetEvent-commandBuffer-cmdpool",
2897          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
2898        },
2899        {
2900          "vuid": "VUID-vkCmdResetEvent-renderpass",
2901          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
2902        },
2903        {
2904          "vuid": "VUID-vkCmdResetEvent-commonparent",
2905          "text": " Both of <code>commandBuffer</code>, and <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
2906        }
2907      ],
2908      "(VK_EXT_conditional_rendering)": [
2909        {
2910          "vuid": "VUID-vkCmdResetEvent-stageMask-04092",
2911          "text": " If the <a href=\"#features-conditionalRendering\">conditional rendering</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>"
2912        }
2913      ],
2914      "(VK_EXT_fragment_density_map)": [
2915        {
2916          "vuid": "VUID-vkCmdResetEvent-stageMask-04093",
2917          "text": " If the <a href=\"#features-fragmentDensityMap\">fragment density map</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>"
2918        }
2919      ],
2920      "(VK_EXT_transform_feedback)": [
2921        {
2922          "vuid": "VUID-vkCmdResetEvent-stageMask-04094",
2923          "text": " If the <a href=\"#features-transformFeedback\">transform feedback</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>"
2924        }
2925      ],
2926      "(VK_NV_mesh_shader)": [
2927        {
2928          "vuid": "VUID-vkCmdResetEvent-stageMask-04095",
2929          "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
2930        },
2931        {
2932          "vuid": "VUID-vkCmdResetEvent-stageMask-04096",
2933          "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
2934        }
2935      ],
2936      "(VK_NV_shading_rate_image)": [
2937        {
2938          "vuid": "VUID-vkCmdResetEvent-stageMask-04097",
2939          "text": " If the <a href=\"#features-shadingRateImage\">shading rate image</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV</code>"
2940        }
2941      ],
2942      "(VK_VERSION_1_1,VK_KHR_device_group)": [
2943        {
2944          "vuid": "VUID-vkCmdResetEvent-commandBuffer-01157",
2945          "text": " <code>commandBuffer</code>&#8217;s current device mask <strong class=\"purple\">must</strong> include exactly one physical device"
2946        }
2947      ]
2948    },
2949    "vkCmdWaitEvents": {
2950      "core": [
2951        {
2952          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04090",
2953          "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
2954        },
2955        {
2956          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04091",
2957          "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, pname:srcStageMask <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>"
2958        },
2959        {
2960          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-4098",
2961          "text": " Any pipeline stage included in pname:srcStageMask <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>"
2962        },
2963        {
2964          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04090",
2965          "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
2966        },
2967        {
2968          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04091",
2969          "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, pname:dstStageMask <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>"
2970        },
2971        {
2972          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-4098",
2973          "text": " Any pipeline stage included in pname:dstStageMask <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>"
2974        },
2975        {
2976          "vuid": "VUID-vkCmdWaitEvents-srcAccessMask-02815",
2977          "text": " The <code>srcAccessMask</code> member of each element of <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> only include access flags that are supported by one or more of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>"
2978        },
2979        {
2980          "vuid": "VUID-vkCmdWaitEvents-dstAccessMask-02816",
2981          "text": " The <code>dstAccessMask</code> member of each element of <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> only include access flags that are supported by one or more of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>"
2982        },
2983        {
2984          "vuid": "VUID-vkCmdWaitEvents-pBufferMemoryBarriers-02817",
2985          "text": " For any element of <code>pBufferMemoryBarriers</code>, if its <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members are equal, or if its <code>srcQueueFamilyIndex</code> is the queue family index that was used to create the command pool that <code>commandBuffer</code> was allocated from, then its <code>srcAccessMask</code> member <strong class=\"purple\">must</strong> only contain access flags that are supported by one or more of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>"
2986        },
2987        {
2988          "vuid": "VUID-vkCmdWaitEvents-pBufferMemoryBarriers-02818",
2989          "text": " For any element of <code>pBufferMemoryBarriers</code>, if its <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members are equal, or if its <code>dstQueueFamilyIndex</code> is the queue family index that was used to create the command pool that <code>commandBuffer</code> was allocated from, then its <code>dstAccessMask</code> member <strong class=\"purple\">must</strong> only contain access flags that are supported by one or more of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>"
2990        },
2991        {
2992          "vuid": "VUID-vkCmdWaitEvents-pImageMemoryBarriers-02819",
2993          "text": " For any element of <code>pImageMemoryBarriers</code>, if its <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members are equal, or if its <code>srcQueueFamilyIndex</code> is the queue family index that was used to create the command pool that <code>commandBuffer</code> was allocated from, then its <code>srcAccessMask</code> member <strong class=\"purple\">must</strong> only contain access flags that are supported by one or more of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>"
2994        },
2995        {
2996          "vuid": "VUID-vkCmdWaitEvents-pImageMemoryBarriers-02820",
2997          "text": " For any element of <code>pImageMemoryBarriers</code>, if its <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members are equal, or if its <code>dstQueueFamilyIndex</code> is the queue family index that was used to create the command pool that <code>commandBuffer</code> was allocated from, then its <code>dstAccessMask</code> member <strong class=\"purple\">must</strong> only contain access flags that are supported by one or more of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>"
2998        },
2999        {
3000          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-01158",
3001          "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>"
3002        },
3003        {
3004          "vuid": "VUID-vkCmdWaitEvents-pEvents-01163",
3005          "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"
3006        },
3007        {
3008          "vuid": "VUID-vkCmdWaitEvents-srcQueueFamilyIndex-02803",
3009          "text": " The <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members of any element of <code>pBufferMemoryBarriers</code> or <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal"
3010        },
3011        {
3012          "vuid": "VUID-vkCmdWaitEvents-commandBuffer-parameter",
3013          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
3014        },
3015        {
3016          "vuid": "VUID-vkCmdWaitEvents-pEvents-parameter",
3017          "text": " <code>pEvents</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>eventCount</code> valid <a href=\"#VkEvent\">VkEvent</a> handles"
3018        },
3019        {
3020          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-parameter",
3021          "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
3022        },
3023        {
3024          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-requiredbitmask",
3025          "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
3026        },
3027        {
3028          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-parameter",
3029          "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
3030        },
3031        {
3032          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-requiredbitmask",
3033          "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
3034        },
3035        {
3036          "vuid": "VUID-vkCmdWaitEvents-pMemoryBarriers-parameter",
3037          "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 <a href=\"#VkMemoryBarrier\">VkMemoryBarrier</a> structures"
3038        },
3039        {
3040          "vuid": "VUID-vkCmdWaitEvents-pBufferMemoryBarriers-parameter",
3041          "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 <a href=\"#VkBufferMemoryBarrier\">VkBufferMemoryBarrier</a> structures"
3042        },
3043        {
3044          "vuid": "VUID-vkCmdWaitEvents-pImageMemoryBarriers-parameter",
3045          "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 <a href=\"#VkImageMemoryBarrier\">VkImageMemoryBarrier</a> structures"
3046        },
3047        {
3048          "vuid": "VUID-vkCmdWaitEvents-commandBuffer-recording",
3049          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
3050        },
3051        {
3052          "vuid": "VUID-vkCmdWaitEvents-commandBuffer-cmdpool",
3053          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
3054        },
3055        {
3056          "vuid": "VUID-vkCmdWaitEvents-eventCount-arraylength",
3057          "text": " <code>eventCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
3058        },
3059        {
3060          "vuid": "VUID-vkCmdWaitEvents-commonparent",
3061          "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 <a href=\"#VkDevice\">VkDevice</a>"
3062        }
3063      ],
3064      "(VK_EXT_conditional_rendering)": [
3065        {
3066          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04092",
3067          "text": " If the <a href=\"#features-conditionalRendering\">conditional rendering</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>"
3068        },
3069        {
3070          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04092",
3071          "text": " If the <a href=\"#features-conditionalRendering\">conditional rendering</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>"
3072        }
3073      ],
3074      "(VK_EXT_fragment_density_map)": [
3075        {
3076          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04093",
3077          "text": " If the <a href=\"#features-fragmentDensityMap\">fragment density map</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>"
3078        },
3079        {
3080          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04093",
3081          "text": " If the <a href=\"#features-fragmentDensityMap\">fragment density map</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>"
3082        }
3083      ],
3084      "(VK_EXT_transform_feedback)": [
3085        {
3086          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04094",
3087          "text": " If the <a href=\"#features-transformFeedback\">transform feedback</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>"
3088        },
3089        {
3090          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04094",
3091          "text": " If the <a href=\"#features-transformFeedback\">transform feedback</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>"
3092        }
3093      ],
3094      "(VK_NV_mesh_shader)": [
3095        {
3096          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04095",
3097          "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
3098        },
3099        {
3100          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04096",
3101          "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
3102        },
3103        {
3104          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04095",
3105          "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
3106        },
3107        {
3108          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04096",
3109          "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
3110        }
3111      ],
3112      "(VK_NV_shading_rate_image)": [
3113        {
3114          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04097",
3115          "text": " If the <a href=\"#features-shadingRateImage\">shading rate image</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV</code>"
3116        },
3117        {
3118          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04097",
3119          "text": " If the <a href=\"#features-shadingRateImage\">shading rate image</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV</code>"
3120        }
3121      ],
3122      "(VK_VERSION_1_1,VK_KHR_device_group)": [
3123        {
3124          "vuid": "VUID-vkCmdWaitEvents-commandBuffer-01167",
3125          "text": " <code>commandBuffer</code>&#8217;s current device mask <strong class=\"purple\">must</strong> include exactly one physical device"
3126        }
3127      ]
3128    },
3129    "vkCmdPipelineBarrier": {
3130      "core": [
3131        {
3132          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04090",
3133          "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
3134        },
3135        {
3136          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04091",
3137          "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, pname:srcStageMask <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>"
3138        },
3139        {
3140          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-4098",
3141          "text": " Any pipeline stage included in pname:srcStageMask <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>"
3142        },
3143        {
3144          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04090",
3145          "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
3146        },
3147        {
3148          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04091",
3149          "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, pname:dstStageMask <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>"
3150        },
3151        {
3152          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-4098",
3153          "text": " Any pipeline stage included in pname:dstStageMask <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>"
3154        },
3155        {
3156          "vuid": "VUID-vkCmdPipelineBarrier-srcAccessMask-02815",
3157          "text": " The <code>srcAccessMask</code> member of each element of <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> only include access flags that are supported by one or more of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>"
3158        },
3159        {
3160          "vuid": "VUID-vkCmdPipelineBarrier-dstAccessMask-02816",
3161          "text": " The <code>dstAccessMask</code> member of each element of <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> only include access flags that are supported by one or more of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>"
3162        },
3163        {
3164          "vuid": "VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-02817",
3165          "text": " For any element of <code>pBufferMemoryBarriers</code>, if its <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members are equal, or if its <code>srcQueueFamilyIndex</code> is the queue family index that was used to create the command pool that <code>commandBuffer</code> was allocated from, then its <code>srcAccessMask</code> member <strong class=\"purple\">must</strong> only contain access flags that are supported by one or more of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>"
3166        },
3167        {
3168          "vuid": "VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-02818",
3169          "text": " For any element of <code>pBufferMemoryBarriers</code>, if its <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members are equal, or if its <code>dstQueueFamilyIndex</code> is the queue family index that was used to create the command pool that <code>commandBuffer</code> was allocated from, then its <code>dstAccessMask</code> member <strong class=\"purple\">must</strong> only contain access flags that are supported by one or more of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>"
3170        },
3171        {
3172          "vuid": "VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-02819",
3173          "text": " For any element of <code>pImageMemoryBarriers</code>, if its <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members are equal, or if its <code>srcQueueFamilyIndex</code> is the queue family index that was used to create the command pool that <code>commandBuffer</code> was allocated from, then its <code>srcAccessMask</code> member <strong class=\"purple\">must</strong> only contain access flags that are supported by one or more of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>"
3174        },
3175        {
3176          "vuid": "VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-02820",
3177          "text": " For any element of <code>pImageMemoryBarriers</code>, if its <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members are equal, or if its <code>dstQueueFamilyIndex</code> is the queue family index that was used to create the command pool that <code>commandBuffer</code> was allocated from, then its <code>dstAccessMask</code> member <strong class=\"purple\">must</strong> only contain access flags that are supported by one or more of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>"
3178        },
3179        {
3180          "vuid": "VUID-vkCmdPipelineBarrier-pDependencies-02285",
3181          "text": " If fname:vkCmdPipelineBarrier is called within a render pass instance, the render pass <strong class=\"purple\">must</strong> have been created with at least one <a href=\"#VkSubpassDependency\">VkSubpassDependency</a> instance in <code>VkRenderPassCreateInfo</code>::<code>pDependencies</code> that expresses a dependency from the current subpass to itself, with <a href=\"#synchronization-dependencies-scopes\">synchronization scopes</a> and <a href=\"#synchronization-dependencies-access-scopes\">access scopes</a> that are all supersets of the scopes defined in this command"
3182        },
3183        {
3184          "vuid": "VUID-vkCmdPipelineBarrier-bufferMemoryBarrierCount-01178",
3185          "text": " If fname:vkCmdPipelineBarrier is called within a render pass instance, it <strong class=\"purple\">must</strong> not include any buffer memory barriers"
3186        },
3187        {
3188          "vuid": "VUID-vkCmdPipelineBarrier-image-04073",
3189          "text": " If fname:vkCmdPipelineBarrier is called within a render pass instance, the <code>image</code> member of any image memory barrier included in this command <strong class=\"purple\">must</strong> be an attachment used in the current subpass both as an input attachment, and as either a color or depth/stencil attachment"
3190        },
3191        {
3192          "vuid": "VUID-vkCmdPipelineBarrier-oldLayout-01181",
3193          "text": " If fname:vkCmdPipelineBarrier is called within a render pass instance, the <code>oldLayout</code> and <code>newLayout</code> members of any image memory barrier included in this command <strong class=\"purple\">must</strong> be equal"
3194        },
3195        {
3196          "vuid": "VUID-vkCmdPipelineBarrier-srcQueueFamilyIndex-01182",
3197          "text": " If fname:vkCmdPipelineBarrier is called within a render pass instance, the <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members of any image memory barrier included in this command <strong class=\"purple\">must</strong> be equal"
3198        },
3199        {
3200          "vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-parameter",
3201          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
3202        },
3203        {
3204          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-parameter",
3205          "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
3206        },
3207        {
3208          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-requiredbitmask",
3209          "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
3210        },
3211        {
3212          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-parameter",
3213          "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
3214        },
3215        {
3216          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-requiredbitmask",
3217          "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
3218        },
3219        {
3220          "vuid": "VUID-vkCmdPipelineBarrier-dependencyFlags-parameter",
3221          "text": " <code>dependencyFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDependencyFlagBits\">VkDependencyFlagBits</a> values"
3222        },
3223        {
3224          "vuid": "VUID-vkCmdPipelineBarrier-pMemoryBarriers-parameter",
3225          "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 <a href=\"#VkMemoryBarrier\">VkMemoryBarrier</a> structures"
3226        },
3227        {
3228          "vuid": "VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-parameter",
3229          "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 <a href=\"#VkBufferMemoryBarrier\">VkBufferMemoryBarrier</a> structures"
3230        },
3231        {
3232          "vuid": "VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-parameter",
3233          "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 <a href=\"#VkImageMemoryBarrier\">VkImageMemoryBarrier</a> structures"
3234        },
3235        {
3236          "vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-recording",
3237          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
3238        },
3239        {
3240          "vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-cmdpool",
3241          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
3242        }
3243      ],
3244      "(VK_EXT_conditional_rendering)": [
3245        {
3246          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04092",
3247          "text": " If the <a href=\"#features-conditionalRendering\">conditional rendering</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>"
3248        },
3249        {
3250          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04092",
3251          "text": " If the <a href=\"#features-conditionalRendering\">conditional rendering</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>"
3252        }
3253      ],
3254      "(VK_EXT_fragment_density_map)": [
3255        {
3256          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04093",
3257          "text": " If the <a href=\"#features-fragmentDensityMap\">fragment density map</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>"
3258        },
3259        {
3260          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04093",
3261          "text": " If the <a href=\"#features-fragmentDensityMap\">fragment density map</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>"
3262        }
3263      ],
3264      "(VK_EXT_transform_feedback)": [
3265        {
3266          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04094",
3267          "text": " If the <a href=\"#features-transformFeedback\">transform feedback</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>"
3268        },
3269        {
3270          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04094",
3271          "text": " If the <a href=\"#features-transformFeedback\">transform feedback</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>"
3272        }
3273      ],
3274      "(VK_NV_mesh_shader)": [
3275        {
3276          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04095",
3277          "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
3278        },
3279        {
3280          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04096",
3281          "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
3282        },
3283        {
3284          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04095",
3285          "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
3286        },
3287        {
3288          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04096",
3289          "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
3290        }
3291      ],
3292      "(VK_NV_shading_rate_image)": [
3293        {
3294          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04097",
3295          "text": " If the <a href=\"#features-shadingRateImage\">shading rate image</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV</code>"
3296        },
3297        {
3298          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04097",
3299          "text": " If the <a href=\"#features-shadingRateImage\">shading rate image</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV</code>"
3300        }
3301      ],
3302      "(VK_VERSION_1_1,VK_KHR_multiview)": [
3303        {
3304          "vuid": "VUID-vkCmdPipelineBarrier-dependencyFlags-01186",
3305          "text": " If fname:vkCmdPipelineBarrier is called outside of a render pass instance, <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code> <strong class=\"purple\">must</strong> not be included in the dependency flags"
3306        }
3307      ]
3308    },
3309    "VkMemoryBarrier": {
3310      "core": [
3311        {
3312          "vuid": "VUID-VkMemoryBarrier-sType-sType",
3313          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_BARRIER</code>"
3314        },
3315        {
3316          "vuid": "VUID-VkMemoryBarrier-pNext-pNext",
3317          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
3318        },
3319        {
3320          "vuid": "VUID-VkMemoryBarrier-srcAccessMask-parameter",
3321          "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
3322        },
3323        {
3324          "vuid": "VUID-VkMemoryBarrier-dstAccessMask-parameter",
3325          "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
3326        }
3327      ]
3328    },
3329    "VkBufferMemoryBarrier": {
3330      "core": [
3331        {
3332          "vuid": "VUID-VkBufferMemoryBarrier-offset-01187",
3333          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
3334        },
3335        {
3336          "vuid": "VUID-VkBufferMemoryBarrier-size-01188",
3337          "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>"
3338        },
3339        {
3340          "vuid": "VUID-VkBufferMemoryBarrier-size-01189",
3341          "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>"
3342        },
3343        {
3344          "vuid": "VUID-VkBufferMemoryBarrier-buffer-01931",
3345          "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"
3346        },
3347        {
3348          "vuid": "VUID-VkBufferMemoryBarrier-sType-sType",
3349          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER</code>"
3350        },
3351        {
3352          "vuid": "VUID-VkBufferMemoryBarrier-pNext-pNext",
3353          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
3354        },
3355        {
3356          "vuid": "VUID-VkBufferMemoryBarrier-buffer-parameter",
3357          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
3358        }
3359      ],
3360      "!(VK_VERSION_1_1,VK_KHR_external_memory)": [
3361        {
3362          "vuid": "VUID-VkBufferMemoryBarrier-buffer-04086",
3363          "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 equal, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be valid queue families"
3364        },
3365        {
3366          "vuid": "VUID-VkBufferMemoryBarrier-buffer-01190",
3367          "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>"
3368        }
3369      ],
3370      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
3371        {
3372          "vuid": "VUID-VkBufferMemoryBarrier-srcQueueFamilyIndex-04087",
3373          "text": " If <code>srcQueueFamilyIndex</code> is not equal to <code>dstQueueFamilyIndex</code>, at least one <strong class=\"purple\">must</strong> not be a special queue family reserved for external memory ownership transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>"
3374        },
3375        {
3376          "vuid": "VUID-VkBufferMemoryBarrier-buffer-04088",
3377          "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> are not equal, and one of <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> is a special queue family values reserved for external memory transfers, the other <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code>"
3378        },
3379        {
3380          "vuid": "VUID-VkBufferMemoryBarrier-buffer-04089",
3381          "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 equal, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> both be valid queue families, or one of the special queue family values reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>"
3382        },
3383        {
3384          "vuid": "VUID-VkBufferMemoryBarrier-buffer-01191",
3385          "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>"
3386        }
3387      ]
3388    },
3389    "VkImageMemoryBarrier": {
3390      "core": [
3391        {
3392          "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01486",
3393          "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"
3394        },
3395        {
3396          "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01724",
3397          "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"
3398        },
3399        {
3400          "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01488",
3401          "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"
3402        },
3403        {
3404          "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01725",
3405          "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"
3406        },
3407        {
3408          "vuid": "VUID-VkImageMemoryBarrier-image-01932",
3409          "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"
3410        },
3411        {
3412          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01208",
3413          "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <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"
3414        },
3415        {
3416          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01209",
3417          "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <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"
3418        },
3419        {
3420          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01210",
3421          "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <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"
3422        },
3423        {
3424          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01211",
3425          "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <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"
3426        },
3427        {
3428          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01212",
3429          "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <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"
3430        },
3431        {
3432          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01213",
3433          "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <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"
3434        },
3435        {
3436          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01197",
3437          "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, <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"
3438        },
3439        {
3440          "vuid": "VUID-VkImageMemoryBarrier-newLayout-01198",
3441          "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, <code>newLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>"
3442        },
3443        {
3444          "vuid": "VUID-VkImageMemoryBarrier-sType-sType",
3445          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER</code>"
3446        },
3447        {
3448          "vuid": "VUID-VkImageMemoryBarrier-pNext-pNext",
3449          "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>"
3450        },
3451        {
3452          "vuid": "VUID-VkImageMemoryBarrier-sType-unique",
3453          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
3454        },
3455        {
3456          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-parameter",
3457          "text": " <code>oldLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
3458        },
3459        {
3460          "vuid": "VUID-VkImageMemoryBarrier-newLayout-parameter",
3461          "text": " <code>newLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
3462        },
3463        {
3464          "vuid": "VUID-VkImageMemoryBarrier-image-parameter",
3465          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
3466        },
3467        {
3468          "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-parameter",
3469          "text": " <code>subresourceRange</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> structure"
3470        }
3471      ],
3472      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
3473        {
3474          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01658",
3475          "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <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"
3476        },
3477        {
3478          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01659",
3479          "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <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"
3480        }
3481      ],
3482      "(VK_VERSION_1_2,VK_EXT_separate_depth_stencil_layouts)": [
3483        {
3484          "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04065",
3485          "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with at least one of <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> set"
3486        },
3487        {
3488          "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04066",
3489          "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set"
3490        },
3491        {
3492          "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04067",
3493          "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with at least one of <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> set"
3494        },
3495        {
3496          "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04068",
3497          "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set"
3498        }
3499      ],
3500      "(VK_NV_shading_rate_image)": [
3501        {
3502          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-02088",
3503          "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <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"
3504        }
3505      ],
3506      "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
3507        {
3508          "vuid": "VUID-VkImageMemoryBarrier-image-02902",
3509          "text": " If <code>image</code> has a color format, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>"
3510        }
3511      ],
3512      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
3513        {
3514          "vuid": "VUID-VkImageMemoryBarrier-image-01671",
3515          "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>"
3516        },
3517        {
3518          "vuid": "VUID-VkImageMemoryBarrier-image-01672",
3519          "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>"
3520        },
3521        {
3522          "vuid": "VUID-VkImageMemoryBarrier-image-01673",
3523          "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>"
3524        }
3525      ],
3526      "!(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
3527        {
3528          "vuid": "VUID-VkImageMemoryBarrier-image-01207",
3529          "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>"
3530        }
3531      ],
3532      "(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
3533        {
3534          "vuid": "VUID-VkImageMemoryBarrier-image-03319",
3535          "text": " If <code>image</code> has a depth/stencil format with both depth and stencil and the <a href=\"#features-separateDepthStencilLayouts\">separateDepthStencilLayouts</a> feature is enabled, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> include either or both <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>"
3536        },
3537        {
3538          "vuid": "VUID-VkImageMemoryBarrier-image-03320",
3539          "text": " If <code>image</code> has a depth/stencil format with both depth and stencil and the <a href=\"#features-separateDepthStencilLayouts\">separateDepthStencilLayouts</a> feature is not enabled, 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>"
3540        }
3541      ],
3542      "!(VK_VERSION_1_1,VK_KHR_external_memory)": [
3543        {
3544          "vuid": "VUID-VkImageMemoryBarrier-image-04069",
3545          "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 equal, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be valid queue families"
3546        },
3547        {
3548          "vuid": "VUID-VkImageMemoryBarrier-image-01199",
3549          "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>"
3550        }
3551      ],
3552      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
3553        {
3554          "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04070",
3555          "text": " If <code>srcQueueFamilyIndex</code> is not equal to <code>dstQueueFamilyIndex</code>, at least one <strong class=\"purple\">must</strong> not be a special queue family reserved for external memory ownership transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>"
3556        },
3557        {
3558          "vuid": "VUID-VkImageMemoryBarrier-image-04071",
3559          "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> are not equal, and one of <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> is a special queue family values reserved for external memory transfers, the other <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code>"
3560        },
3561        {
3562          "vuid": "VUID-VkImageMemoryBarrier-image-04072",
3563          "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 equal, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> both be valid queue families, or one of the special queue family values reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>"
3564        },
3565        {
3566          "vuid": "VUID-VkImageMemoryBarrier-image-01381",
3567          "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>"
3568        }
3569      ]
3570    },
3571    "vkQueueWaitIdle": {
3572      "core": [
3573        {
3574          "vuid": "VUID-vkQueueWaitIdle-queue-parameter",
3575          "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle"
3576        }
3577      ]
3578    },
3579    "vkDeviceWaitIdle": {
3580      "core": [
3581        {
3582          "vuid": "VUID-vkDeviceWaitIdle-device-parameter",
3583          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
3584        }
3585      ]
3586    },
3587    "vkGetCalibratedTimestampsEXT": {
3588      "(VK_EXT_calibrated_timestamps)": [
3589        {
3590          "vuid": "VUID-vkGetCalibratedTimestampsEXT-device-parameter",
3591          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
3592        },
3593        {
3594          "vuid": "VUID-vkGetCalibratedTimestampsEXT-pTimestampInfos-parameter",
3595          "text": " <code>pTimestampInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>timestampCount</code> valid <a href=\"#VkCalibratedTimestampInfoEXT\">VkCalibratedTimestampInfoEXT</a> structures"
3596        },
3597        {
3598          "vuid": "VUID-vkGetCalibratedTimestampsEXT-pTimestamps-parameter",
3599          "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"
3600        },
3601        {
3602          "vuid": "VUID-vkGetCalibratedTimestampsEXT-pMaxDeviation-parameter",
3603          "text": " <code>pMaxDeviation</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint64_t</code> value"
3604        },
3605        {
3606          "vuid": "VUID-vkGetCalibratedTimestampsEXT-timestampCount-arraylength",
3607          "text": " <code>timestampCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
3608        }
3609      ]
3610    },
3611    "VkCalibratedTimestampInfoEXT": {
3612      "(VK_EXT_calibrated_timestamps)": [
3613        {
3614          "vuid": "VUID-VkCalibratedTimestampInfoEXT-timeDomain-02354",
3615          "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>"
3616        },
3617        {
3618          "vuid": "VUID-VkCalibratedTimestampInfoEXT-sType-sType",
3619          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT</code>"
3620        },
3621        {
3622          "vuid": "VUID-VkCalibratedTimestampInfoEXT-pNext-pNext",
3623          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
3624        },
3625        {
3626          "vuid": "VUID-VkCalibratedTimestampInfoEXT-timeDomain-parameter",
3627          "text": " <code>timeDomain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkTimeDomainEXT\">VkTimeDomainEXT</a> value"
3628        }
3629      ]
3630    },
3631    "vkCreateRenderPass": {
3632      "core": [
3633        {
3634          "vuid": "VUID-vkCreateRenderPass-device-parameter",
3635          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
3636        },
3637        {
3638          "vuid": "VUID-vkCreateRenderPass-pCreateInfo-parameter",
3639          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkRenderPassCreateInfo\">VkRenderPassCreateInfo</a> structure"
3640        },
3641        {
3642          "vuid": "VUID-vkCreateRenderPass-pAllocator-parameter",
3643          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
3644        },
3645        {
3646          "vuid": "VUID-vkCreateRenderPass-pRenderPass-parameter",
3647          "text": " <code>pRenderPass</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkRenderPass\">VkRenderPass</a> handle"
3648        }
3649      ]
3650    },
3651    "VkRenderPassCreateInfo": {
3652      "core": [
3653        {
3654          "vuid": "VUID-VkRenderPassCreateInfo-attachment-00834",
3655          "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>"
3656        },
3657        {
3658          "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-00836",
3659          "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>"
3660        },
3661        {
3662          "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-02511",
3663          "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>"
3664        },
3665        {
3666          "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-00837",
3667          "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"
3668        },
3669        {
3670          "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-00838",
3671          "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 destination subpass"
3672        },
3673        {
3674          "vuid": "VUID-VkRenderPassCreateInfo-srcSubpass-02517",
3675          "text": " The <code>srcSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>"
3676        },
3677        {
3678          "vuid": "VUID-VkRenderPassCreateInfo-dstSubpass-02518",
3679          "text": " The <code>dstSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>"
3680        },
3681        {
3682          "vuid": "VUID-VkRenderPassCreateInfo-sType-sType",
3683          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO</code>"
3684        },
3685        {
3686          "vuid": "VUID-VkRenderPassCreateInfo-pNext-pNext",
3687          "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>"
3688        },
3689        {
3690          "vuid": "VUID-VkRenderPassCreateInfo-sType-unique",
3691          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
3692        },
3693        {
3694          "vuid": "VUID-VkRenderPassCreateInfo-flags-parameter",
3695          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkRenderPassCreateFlagBits\">VkRenderPassCreateFlagBits</a> values"
3696        },
3697        {
3698          "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-parameter",
3699          "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 <a href=\"#VkAttachmentDescription\">VkAttachmentDescription</a> structures"
3700        },
3701        {
3702          "vuid": "VUID-VkRenderPassCreateInfo-pSubpasses-parameter",
3703          "text": " <code>pSubpasses</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>subpassCount</code> valid <a href=\"#VkSubpassDescription\">VkSubpassDescription</a> structures"
3704        },
3705        {
3706          "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-parameter",
3707          "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 <a href=\"#VkSubpassDependency\">VkSubpassDependency</a> structures"
3708        },
3709        {
3710          "vuid": "VUID-VkRenderPassCreateInfo-subpassCount-arraylength",
3711          "text": " <code>subpassCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
3712        }
3713      ],
3714      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
3715        {
3716          "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-01566",
3717          "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>"
3718        },
3719        {
3720          "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-01567",
3721          "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>"
3722        },
3723        {
3724          "vuid": "VUID-VkRenderPassCreateInfo-pNext-01926",
3725          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a> structure, 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>"
3726        },
3727        {
3728          "vuid": "VUID-VkRenderPassCreateInfo-pNext-01927",
3729          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a> structure, 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"
3730        },
3731        {
3732          "vuid": "VUID-VkRenderPassCreateInfo-pNext-01963",
3733          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a> structure, 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>"
3734        }
3735      ],
3736      "(VK_VERSION_1_1,VK_KHR_multiview)": [
3737        {
3738          "vuid": "VUID-VkRenderPassCreateInfo-pNext-01928",
3739          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> structure, 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>"
3740        },
3741        {
3742          "vuid": "VUID-VkRenderPassCreateInfo-pNext-01929",
3743          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> structure, if its <code>dependencyCount</code> member is not zero, it <strong class=\"purple\">must</strong> be equal to <code>dependencyCount</code>"
3744        },
3745        {
3746          "vuid": "VUID-VkRenderPassCreateInfo-pNext-01930",
3747          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> structure, 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"
3748        },
3749        {
3750          "vuid": "VUID-VkRenderPassCreateInfo-pNext-02512",
3751          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> structure, for any element of <code>pDependencies</code> with a <code>dependencyFlags</code> member that does not 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>"
3752        },
3753        {
3754          "vuid": "VUID-VkRenderPassCreateInfo-pNext-02513",
3755          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> structure, 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>"
3756        },
3757        {
3758          "vuid": "VUID-VkRenderPassCreateInfo-pNext-02514",
3759          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> structure, 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>"
3760        },
3761        {
3762          "vuid": "VUID-VkRenderPassCreateInfo-pNext-02515",
3763          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> structure, 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>"
3764        },
3765        {
3766          "vuid": "VUID-VkRenderPassCreateInfo-pNext-02516",
3767          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> structure, each element of its <code>pViewMask</code> member <strong class=\"purple\">must</strong> not have a bit set at an index greater than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxFramebufferLayers</code>"
3768        }
3769      ]
3770    },
3771    "VkRenderPassMultiviewCreateInfo": {
3772      "(VK_VERSION_1_1,VK_KHR_multiview)": [
3773        {
3774          "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pCorrelationMasks-00841",
3775          "text": " Each view index <strong class=\"purple\">must</strong> not be set in more than one element of <code>pCorrelationMasks</code>"
3776        },
3777        {
3778          "vuid": "VUID-VkRenderPassMultiviewCreateInfo-sType-sType",
3779          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO</code>"
3780        },
3781        {
3782          "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pViewMasks-parameter",
3783          "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"
3784        },
3785        {
3786          "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pViewOffsets-parameter",
3787          "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"
3788        },
3789        {
3790          "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pCorrelationMasks-parameter",
3791          "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"
3792        }
3793      ]
3794    },
3795    "VkRenderPassFragmentDensityMapCreateInfoEXT": {
3796      "(VK_EXT_fragment_density_map)": [
3797        {
3798          "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02547",
3799          "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>"
3800        },
3801        {
3802          "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02548",
3803          "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"
3804        },
3805        {
3806          "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02549",
3807          "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>"
3808        },
3809        {
3810          "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02550",
3811          "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>"
3812        },
3813        {
3814          "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02551",
3815          "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>"
3816        },
3817        {
3818          "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-sType-sType",
3819          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT</code>"
3820        },
3821        {
3822          "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-parameter",
3823          "text": " <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentReference\">VkAttachmentReference</a> structure"
3824        }
3825      ]
3826    },
3827    "VkAttachmentDescription": {
3828      "core": [
3829        {
3830          "vuid": "VUID-VkAttachmentDescription-finalLayout-00843",
3831          "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>"
3832        },
3833        {
3834          "vuid": "VUID-VkAttachmentDescription-format-03280",
3835          "text": " If <code>format</code> is a color format, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>"
3836        },
3837        {
3838          "vuid": "VUID-VkAttachmentDescription-format-03281",
3839          "text": " If <code>format</code> is a depth/stencil format, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code>"
3840        },
3841        {
3842          "vuid": "VUID-VkAttachmentDescription-format-03282",
3843          "text": " If <code>format</code> is a color format, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>"
3844        },
3845        {
3846          "vuid": "VUID-VkAttachmentDescription-format-03283",
3847          "text": " If <code>format</code> is a depth/stencil format, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code>"
3848        },
3849        {
3850          "vuid": "VUID-VkAttachmentDescription-flags-parameter",
3851          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAttachmentDescriptionFlagBits\">VkAttachmentDescriptionFlagBits</a> values"
3852        },
3853        {
3854          "vuid": "VUID-VkAttachmentDescription-format-parameter",
3855          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
3856        },
3857        {
3858          "vuid": "VUID-VkAttachmentDescription-samples-parameter",
3859          "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
3860        },
3861        {
3862          "vuid": "VUID-VkAttachmentDescription-loadOp-parameter",
3863          "text": " <code>loadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value"
3864        },
3865        {
3866          "vuid": "VUID-VkAttachmentDescription-storeOp-parameter",
3867          "text": " <code>storeOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value"
3868        },
3869        {
3870          "vuid": "VUID-VkAttachmentDescription-stencilLoadOp-parameter",
3871          "text": " <code>stencilLoadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value"
3872        },
3873        {
3874          "vuid": "VUID-VkAttachmentDescription-stencilStoreOp-parameter",
3875          "text": " <code>stencilStoreOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value"
3876        },
3877        {
3878          "vuid": "VUID-VkAttachmentDescription-initialLayout-parameter",
3879          "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
3880        },
3881        {
3882          "vuid": "VUID-VkAttachmentDescription-finalLayout-parameter",
3883          "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
3884        }
3885      ],
3886      "(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
3887        {
3888          "vuid": "VUID-VkAttachmentDescription-separateDepthStencilLayouts-03284",
3889          "text": " If the <a href=\"#features-separateDepthStencilLayouts\"><code>separateDepthStencilLayouts</code></a> feature is not enabled, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>"
3890        },
3891        {
3892          "vuid": "VUID-VkAttachmentDescription-separateDepthStencilLayouts-03285",
3893          "text": " If the <a href=\"#features-separateDepthStencilLayouts\"><code>separateDepthStencilLayouts</code></a> feature is not enabled, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>"
3894        },
3895        {
3896          "vuid": "VUID-VkAttachmentDescription-format-03286",
3897          "text": " If <code>format</code> is a color format, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>"
3898        },
3899        {
3900          "vuid": "VUID-VkAttachmentDescription-format-03287",
3901          "text": " If <code>format</code> is a color format, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>"
3902        },
3903        {
3904          "vuid": "VUID-VkAttachmentDescription-format-03288",
3905          "text": " If <code>format</code> is a depth/stencil format which includes both depth and stencil aspects, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>"
3906        },
3907        {
3908          "vuid": "VUID-VkAttachmentDescription-format-03289",
3909          "text": " If <code>format</code> is a depth/stencil format which includes both depth and stencil aspects, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>"
3910        },
3911        {
3912          "vuid": "VUID-VkAttachmentDescription-format-03290",
3913          "text": " If <code>format</code> is a depth/stencil format which includes only the depth aspect, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>"
3914        },
3915        {
3916          "vuid": "VUID-VkAttachmentDescription-format-03291",
3917          "text": " If <code>format</code> is a depth/stencil format which includes only the depth aspect, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>"
3918        },
3919        {
3920          "vuid": "VUID-VkAttachmentDescription-format-03292",
3921          "text": " If <code>format</code> is a depth/stencil format which includes only the stencil aspect, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>"
3922        },
3923        {
3924          "vuid": "VUID-VkAttachmentDescription-format-03293",
3925          "text": " If <code>format</code> is a depth/stencil format which includes only the stencil aspect, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>"
3926        }
3927      ]
3928    },
3929    "VkRenderPassInputAttachmentAspectCreateInfo": {
3930      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
3931        {
3932          "vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-sType-sType",
3933          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO</code>"
3934        },
3935        {
3936          "vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-pAspectReferences-parameter",
3937          "text": " <code>pAspectReferences</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>aspectReferenceCount</code> valid <a href=\"#VkInputAttachmentAspectReference\">VkInputAttachmentAspectReference</a> structures"
3938        },
3939        {
3940          "vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-aspectReferenceCount-arraylength",
3941          "text": " <code>aspectReferenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
3942        }
3943      ]
3944    },
3945    "VkInputAttachmentAspectReference": {
3946      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
3947        {
3948          "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-01964",
3949          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_METADATA_BIT</code>"
3950        },
3951        {
3952          "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-parameter",
3953          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
3954        },
3955        {
3956          "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-requiredbitmask",
3957          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
3958        }
3959      ],
3960      "(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_EXT_image_drm_format_modifier)": [
3961        {
3962          "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-02250",
3963          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT</code> for any index <code>i</code>"
3964        }
3965      ]
3966    },
3967    "VkSubpassDescription": {
3968      "core": [
3969        {
3970          "vuid": "VUID-VkSubpassDescription-pipelineBindPoint-00844",
3971          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
3972        },
3973        {
3974          "vuid": "VUID-VkSubpassDescription-colorAttachmentCount-00845",
3975          "text": " <code>colorAttachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxColorAttachments</code>"
3976        },
3977        {
3978          "vuid": "VUID-VkSubpassDescription-loadOp-00846",
3979          "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>"
3980        },
3981        {
3982          "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00847",
3983          "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>"
3984        },
3985        {
3986          "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00848",
3987          "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>"
3988        },
3989        {
3990          "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00849",
3991          "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>"
3992        },
3993        {
3994          "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00850",
3995          "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"
3996        },
3997        {
3998          "vuid": "VUID-VkSubpassDescription-pColorAttachments-01417",
3999          "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"
4000        },
4001        {
4002          "vuid": "VUID-VkSubpassDescription-pInputAttachments-02647",
4003          "text": " All attachments in <code>pInputAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have image formats whose <a href=\"#potential-format-features\">potential format features</a> contain at least <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code> or <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
4004        },
4005        {
4006          "vuid": "VUID-VkSubpassDescription-pColorAttachments-02648",
4007          "text": " All attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have image formats whose <a href=\"#potential-format-features\">potential format features</a> contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>"
4008        },
4009        {
4010          "vuid": "VUID-VkSubpassDescription-pResolveAttachments-02649",
4011          "text": " All attachments in <code>pResolveAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have image formats whose <a href=\"#potential-format-features\">potential format features</a> contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>"
4012        },
4013        {
4014          "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-02650",
4015          "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 image format whose <a href=\"#potential-format-features\">potential format features</a> contain <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
4016        },
4017        {
4018          "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-01418",
4019          "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"
4020        },
4021        {
4022          "vuid": "VUID-VkSubpassDescription-attachment-00853",
4023          "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>"
4024        },
4025        {
4026          "vuid": "VUID-VkSubpassDescription-pPreserveAttachments-00854",
4027          "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"
4028        },
4029        {
4030          "vuid": "VUID-VkSubpassDescription-layout-02519",
4031          "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>"
4032        },
4033        {
4034          "vuid": "VUID-VkSubpassDescription-flags-parameter",
4035          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSubpassDescriptionFlagBits\">VkSubpassDescriptionFlagBits</a> values"
4036        },
4037        {
4038          "vuid": "VUID-VkSubpassDescription-pipelineBindPoint-parameter",
4039          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
4040        },
4041        {
4042          "vuid": "VUID-VkSubpassDescription-pInputAttachments-parameter",
4043          "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 <a href=\"#VkAttachmentReference\">VkAttachmentReference</a> structures"
4044        },
4045        {
4046          "vuid": "VUID-VkSubpassDescription-pColorAttachments-parameter",
4047          "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 <a href=\"#VkAttachmentReference\">VkAttachmentReference</a> structures"
4048        },
4049        {
4050          "vuid": "VUID-VkSubpassDescription-pResolveAttachments-parameter",
4051          "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 <a href=\"#VkAttachmentReference\">VkAttachmentReference</a> structures"
4052        },
4053        {
4054          "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-parameter",
4055          "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 <a href=\"#VkAttachmentReference\">VkAttachmentReference</a> structure"
4056        },
4057        {
4058          "vuid": "VUID-VkSubpassDescription-pPreserveAttachments-parameter",
4059          "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"
4060        }
4061      ],
4062      "(VK_AMD_mixed_attachment_samples)": [
4063        {
4064          "vuid": "VUID-VkSubpassDescription-pColorAttachments-01506",
4065          "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>"
4066        }
4067      ],
4068      "(VK_NVX_multiview_per_view_attributes)": [
4069        {
4070          "vuid": "VUID-VkSubpassDescription-flags-00856",
4071          "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>"
4072        }
4073      ],
4074      "(VK_QCOM_render_pass_shader_resolve)": [
4075        {
4076          "vuid": "VUID-VkSubpassDescription-flags-03341",
4077          "text": " If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM</code>, and if <code>pResolveAttachments</code> is not <code>NULL</code>, then each resolve attachment <strong class=\"purple\">must</strong> be <code>VK_ATTACHMENT_UNUSED</code>"
4078        },
4079        {
4080          "vuid": "VUID-VkSubpassDescription-flags-03342",
4081          "text": " If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM</code>, and if <code>pDepthStencilResolveAttachmentKHR</code> is not <code>NULL</code>, then the depth/stencil resolve attachment <strong class=\"purple\">must</strong> be <code>VK_ATTACHMENT_UNUSED</code>"
4082        },
4083        {
4084          "vuid": "VUID-VkSubpassDescription-flags-03343",
4085          "text": " If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM</code>, then the subpass <strong class=\"purple\">must</strong> be the last subpass in a subpass dependency chain"
4086        },
4087        {
4088          "vuid": "VUID-VkSubpassDescription-flags-03344",
4089          "text": " If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM</code>, then the sample count of the input attachments <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code>"
4090        },
4091        {
4092          "vuid": "VUID-VkSubpassDescription-flags-03345",
4093          "text": " If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM</code>, and if <code>sampleShadingEnable</code> is enabled (explicitly or implicitly) then <code>minSampleShading</code> <strong class=\"purple\">must</strong> equal 0.0"
4094        }
4095      ],
4096      "(VK_QCOM_render_pass_transform)": [
4097        {
4098          "vuid": "VUID-VkSubpassDescription-pInputAttachments-02868",
4099          "text": " If the render pass is created with <code>VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM</code> each of the elements of <code>pInputAttachments</code> <strong class=\"purple\">must</strong> be <code>VK_ATTACHMENT_UNUSED</code>"
4100        }
4101      ]
4102    },
4103    "VkAttachmentReference": {
4104      "core": [
4105        {
4106          "vuid": "VUID-VkAttachmentReference-layout-00857",
4107          "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>, <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>, <code>VK_IMAGE_LAYOUT_PRESENT_SRC_KHR</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR</code>"
4108        },
4109        {
4110          "vuid": "VUID-VkAttachmentReference-layout-parameter",
4111          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
4112        }
4113      ]
4114    },
4115    "VkSubpassDependency": {
4116      "core": [
4117        {
4118          "vuid": "VUID-VkSubpassDependency-srcStageMask-00860",
4119          "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>"
4120        },
4121        {
4122          "vuid": "VUID-VkSubpassDependency-dstStageMask-00861",
4123          "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>"
4124        },
4125        {
4126          "vuid": "VUID-VkSubpassDependency-srcStageMask-00862",
4127          "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>"
4128        },
4129        {
4130          "vuid": "VUID-VkSubpassDependency-dstStageMask-00863",
4131          "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>"
4132        },
4133        {
4134          "vuid": "VUID-VkSubpassDependency-srcSubpass-00864",
4135          "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"
4136        },
4137        {
4138          "vuid": "VUID-VkSubpassDependency-srcSubpass-00865",
4139          "text": " <code>srcSubpass</code> and <code>dstSubpass</code> <strong class=\"purple\">must</strong> not both be equal to <code>VK_SUBPASS_EXTERNAL</code>"
4140        },
4141        {
4142          "vuid": "VUID-VkSubpassDependency-srcSubpass-00867",
4143          "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>"
4144        },
4145        {
4146          "vuid": "VUID-VkSubpassDependency-srcAccessMask-00868",
4147          "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>"
4148        },
4149        {
4150          "vuid": "VUID-VkSubpassDependency-dstAccessMask-00869",
4151          "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>"
4152        },
4153        {
4154          "vuid": "VUID-VkSubpassDependency-srcSubpass-02243",
4155          "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>"
4156        },
4157        {
4158          "vuid": "VUID-VkSubpassDependency-srcStageMask-parameter",
4159          "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
4160        },
4161        {
4162          "vuid": "VUID-VkSubpassDependency-srcStageMask-requiredbitmask",
4163          "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
4164        },
4165        {
4166          "vuid": "VUID-VkSubpassDependency-dstStageMask-parameter",
4167          "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
4168        },
4169        {
4170          "vuid": "VUID-VkSubpassDependency-dstStageMask-requiredbitmask",
4171          "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
4172        },
4173        {
4174          "vuid": "VUID-VkSubpassDependency-srcAccessMask-parameter",
4175          "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
4176        },
4177        {
4178          "vuid": "VUID-VkSubpassDependency-dstAccessMask-parameter",
4179          "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
4180        },
4181        {
4182          "vuid": "VUID-VkSubpassDependency-dependencyFlags-parameter",
4183          "text": " <code>dependencyFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDependencyFlagBits\">VkDependencyFlagBits</a> values"
4184        }
4185      ],
4186      "(VK_VERSION_1_1,VK_KHR_multiview)": [
4187        {
4188          "vuid": "VUID-VkSubpassDependency-dependencyFlags-02520",
4189          "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>"
4190        },
4191        {
4192          "vuid": "VUID-VkSubpassDependency-dependencyFlags-02521",
4193          "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>"
4194        },
4195        {
4196          "vuid": "VUID-VkSubpassDependency-srcSubpass-00872",
4197          "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>"
4198        }
4199      ],
4200      "(VK_NV_mesh_shader)": [
4201        {
4202          "vuid": "VUID-VkSubpassDependency-srcStageMask-02099",
4203          "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>"
4204        },
4205        {
4206          "vuid": "VUID-VkSubpassDependency-srcStageMask-02100",
4207          "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>"
4208        },
4209        {
4210          "vuid": "VUID-VkSubpassDependency-dstStageMask-02101",
4211          "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>"
4212        },
4213        {
4214          "vuid": "VUID-VkSubpassDependency-dstStageMask-02102",
4215          "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>"
4216        }
4217      ]
4218    },
4219    "vkCreateRenderPass2": {
4220      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
4221        {
4222          "vuid": "VUID-vkCreateRenderPass2-device-parameter",
4223          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
4224        },
4225        {
4226          "vuid": "VUID-vkCreateRenderPass2-pCreateInfo-parameter",
4227          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkRenderPassCreateInfo2\">VkRenderPassCreateInfo2</a> structure"
4228        },
4229        {
4230          "vuid": "VUID-vkCreateRenderPass2-pAllocator-parameter",
4231          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
4232        },
4233        {
4234          "vuid": "VUID-vkCreateRenderPass2-pRenderPass-parameter",
4235          "text": " <code>pRenderPass</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkRenderPass\">VkRenderPass</a> handle"
4236        }
4237      ]
4238    },
4239    "VkRenderPassCreateInfo2": {
4240      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
4241        {
4242          "vuid": "VUID-VkRenderPassCreateInfo2-None-03049",
4243          "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"
4244        },
4245        {
4246          "vuid": "VUID-VkRenderPassCreateInfo2-attachment-03050",
4247          "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>VkAttachmentDescription2</code> structures describing them <strong class=\"purple\">must</strong> include <code>VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT</code> in <code>flags</code>"
4248        },
4249        {
4250          "vuid": "VUID-VkRenderPassCreateInfo2-attachment-03051",
4251          "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>"
4252        },
4253        {
4254          "vuid": "VUID-VkRenderPassCreateInfo2-pAttachments-02522",
4255          "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>"
4256        },
4257        {
4258          "vuid": "VUID-VkRenderPassCreateInfo2-pAttachments-02523",
4259          "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>"
4260        },
4261        {
4262          "vuid": "VUID-VkRenderPassCreateInfo2-pDependencies-03054",
4263          "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"
4264        },
4265        {
4266          "vuid": "VUID-VkRenderPassCreateInfo2-pDependencies-03055",
4267          "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 destination subpass"
4268        },
4269        {
4270          "vuid": "VUID-VkRenderPassCreateInfo2-pCorrelatedViewMasks-03056",
4271          "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>"
4272        },
4273        {
4274          "vuid": "VUID-VkRenderPassCreateInfo2-viewMask-03057",
4275          "text": " If the <a href=\"#VkSubpassDescription2\">VkSubpassDescription2</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>"
4276        },
4277        {
4278          "vuid": "VUID-VkRenderPassCreateInfo2-viewMask-03058",
4279          "text": " The <a href=\"#VkSubpassDescription2\">VkSubpassDescription2</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>"
4280        },
4281        {
4282          "vuid": "VUID-VkRenderPassCreateInfo2-viewMask-03059",
4283          "text": " If the <a href=\"#VkSubpassDescription2\">VkSubpassDescription2</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>"
4284        },
4285        {
4286          "vuid": "VUID-VkRenderPassCreateInfo2-pDependencies-03060",
4287          "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>"
4288        },
4289        {
4290          "vuid": "VUID-VkRenderPassCreateInfo2-viewMask-02524",
4291          "text": " The <code>viewMask</code> member <strong class=\"purple\">must</strong> not have a bit set at an index greater than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxFramebufferLayers</code>"
4292        },
4293        {
4294          "vuid": "VUID-VkRenderPassCreateInfo2-attachment-02525",
4295          "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>"
4296        },
4297        {
4298          "vuid": "VUID-VkRenderPassCreateInfo2-srcSubpass-02526",
4299          "text": " The <code>srcSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>"
4300        },
4301        {
4302          "vuid": "VUID-VkRenderPassCreateInfo2-dstSubpass-02527",
4303          "text": " The <code>dstSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>"
4304        },
4305        {
4306          "vuid": "VUID-VkRenderPassCreateInfo2-sType-sType",
4307          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2</code>"
4308        },
4309        {
4310          "vuid": "VUID-VkRenderPassCreateInfo2-pNext-pNext",
4311          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkRenderPassFragmentDensityMapCreateInfoEXT\">VkRenderPassFragmentDensityMapCreateInfoEXT</a>"
4312        },
4313        {
4314          "vuid": "VUID-VkRenderPassCreateInfo2-sType-unique",
4315          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
4316        },
4317        {
4318          "vuid": "VUID-VkRenderPassCreateInfo2-flags-parameter",
4319          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkRenderPassCreateFlagBits\">VkRenderPassCreateFlagBits</a> values"
4320        },
4321        {
4322          "vuid": "VUID-VkRenderPassCreateInfo2-pAttachments-parameter",
4323          "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 <a href=\"#VkAttachmentDescription2\">VkAttachmentDescription2</a> structures"
4324        },
4325        {
4326          "vuid": "VUID-VkRenderPassCreateInfo2-pSubpasses-parameter",
4327          "text": " <code>pSubpasses</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>subpassCount</code> valid <a href=\"#VkSubpassDescription2\">VkSubpassDescription2</a> structures"
4328        },
4329        {
4330          "vuid": "VUID-VkRenderPassCreateInfo2-pDependencies-parameter",
4331          "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 <a href=\"#VkSubpassDependency2\">VkSubpassDependency2</a> structures"
4332        },
4333        {
4334          "vuid": "VUID-VkRenderPassCreateInfo2-pCorrelatedViewMasks-parameter",
4335          "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"
4336        },
4337        {
4338          "vuid": "VUID-VkRenderPassCreateInfo2-subpassCount-arraylength",
4339          "text": " <code>subpassCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
4340        }
4341      ]
4342    },
4343    "VkAttachmentDescription2": {
4344      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
4345        {
4346          "vuid": "VUID-VkAttachmentDescription2-finalLayout-03061",
4347          "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>"
4348        },
4349        {
4350          "vuid": "VUID-VkAttachmentDescription2-format-03294",
4351          "text": " If <code>format</code> is a color format, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>"
4352        },
4353        {
4354          "vuid": "VUID-VkAttachmentDescription2-format-03295",
4355          "text": " If <code>format</code> is a depth/stencil format, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code>"
4356        },
4357        {
4358          "vuid": "VUID-VkAttachmentDescription2-format-03296",
4359          "text": " If <code>format</code> is a color format, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>"
4360        },
4361        {
4362          "vuid": "VUID-VkAttachmentDescription2-format-03297",
4363          "text": " If <code>format</code> is a depth/stencil format, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code>"
4364        },
4365        {
4366          "vuid": "VUID-VkAttachmentDescription2-sType-sType",
4367          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2</code>"
4368        },
4369        {
4370          "vuid": "VUID-VkAttachmentDescription2-flags-parameter",
4371          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAttachmentDescriptionFlagBits\">VkAttachmentDescriptionFlagBits</a> values"
4372        },
4373        {
4374          "vuid": "VUID-VkAttachmentDescription2-format-parameter",
4375          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
4376        },
4377        {
4378          "vuid": "VUID-VkAttachmentDescription2-samples-parameter",
4379          "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
4380        },
4381        {
4382          "vuid": "VUID-VkAttachmentDescription2-loadOp-parameter",
4383          "text": " <code>loadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value"
4384        },
4385        {
4386          "vuid": "VUID-VkAttachmentDescription2-storeOp-parameter",
4387          "text": " <code>storeOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value"
4388        },
4389        {
4390          "vuid": "VUID-VkAttachmentDescription2-stencilLoadOp-parameter",
4391          "text": " <code>stencilLoadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value"
4392        },
4393        {
4394          "vuid": "VUID-VkAttachmentDescription2-stencilStoreOp-parameter",
4395          "text": " <code>stencilStoreOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value"
4396        },
4397        {
4398          "vuid": "VUID-VkAttachmentDescription2-initialLayout-parameter",
4399          "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
4400        },
4401        {
4402          "vuid": "VUID-VkAttachmentDescription2-finalLayout-parameter",
4403          "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
4404        }
4405      ],
4406      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
4407        {
4408          "vuid": "VUID-VkAttachmentDescription2-separateDepthStencilLayouts-03298",
4409          "text": " If the <a href=\"#features-separateDepthStencilLayouts\"><code>separateDepthStencilLayouts</code></a> feature is not enabled, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>"
4410        },
4411        {
4412          "vuid": "VUID-VkAttachmentDescription2-separateDepthStencilLayouts-03299",
4413          "text": " If the <a href=\"#features-separateDepthStencilLayouts\"><code>separateDepthStencilLayouts</code></a> feature is not enabled, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>"
4414        },
4415        {
4416          "vuid": "VUID-VkAttachmentDescription2-format-03300",
4417          "text": " If <code>format</code> is a color format, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>"
4418        },
4419        {
4420          "vuid": "VUID-VkAttachmentDescription2-format-03301",
4421          "text": " If <code>format</code> is a color format, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>"
4422        },
4423        {
4424          "vuid": "VUID-VkAttachmentDescription2-format-03302",
4425          "text": " If <code>format</code> is a depth/stencil format which includes both depth and stencil aspects, and <code>initialLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkAttachmentDescriptionStencilLayout\">VkAttachmentDescriptionStencilLayout</a> structure"
4426        },
4427        {
4428          "vuid": "VUID-VkAttachmentDescription2-format-03303",
4429          "text": " If <code>format</code> is a depth/stencil format which includes both depth and stencil aspects, and <code>finalLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkAttachmentDescriptionStencilLayout\">VkAttachmentDescriptionStencilLayout</a> structure"
4430        },
4431        {
4432          "vuid": "VUID-VkAttachmentDescription2-format-03304",
4433          "text": " If <code>format</code> is a depth/stencil format which includes only the depth aspect, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>"
4434        },
4435        {
4436          "vuid": "VUID-VkAttachmentDescription2-format-03305",
4437          "text": " If <code>format</code> is a depth/stencil format which includes only the depth aspect, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>"
4438        },
4439        {
4440          "vuid": "VUID-VkAttachmentDescription2-format-03306",
4441          "text": " If <code>format</code> is a depth/stencil format which includes only the stencil aspect, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>"
4442        },
4443        {
4444          "vuid": "VUID-VkAttachmentDescription2-format-03307",
4445          "text": " If <code>format</code> is a depth/stencil format which includes only the stencil aspect, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>"
4446        }
4447      ]
4448    },
4449    "VkAttachmentDescriptionStencilLayout": {
4450      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
4451        {
4452          "vuid": "VUID-VkAttachmentDescriptionStencilLayout-stencilInitialLayout-03308",
4453          "text": " <code>stencilInitialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>"
4454        },
4455        {
4456          "vuid": "VUID-VkAttachmentDescriptionStencilLayout-stencilFinalLayout-03309",
4457          "text": " <code>stencilFinalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>"
4458        },
4459        {
4460          "vuid": "VUID-VkAttachmentDescriptionStencilLayout-stencilFinalLayout-03310",
4461          "text": " <code>stencilFinalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>"
4462        },
4463        {
4464          "vuid": "VUID-VkAttachmentDescriptionStencilLayout-sType-sType",
4465          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT</code>"
4466        },
4467        {
4468          "vuid": "VUID-VkAttachmentDescriptionStencilLayout-stencilInitialLayout-parameter",
4469          "text": " <code>stencilInitialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
4470        },
4471        {
4472          "vuid": "VUID-VkAttachmentDescriptionStencilLayout-stencilFinalLayout-parameter",
4473          "text": " <code>stencilFinalLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
4474        }
4475      ]
4476    },
4477    "VkSubpassDescription2": {
4478      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
4479        {
4480          "vuid": "VUID-VkSubpassDescription2-pipelineBindPoint-03062",
4481          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
4482        },
4483        {
4484          "vuid": "VUID-VkSubpassDescription2-colorAttachmentCount-03063",
4485          "text": " <code>colorAttachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxColorAttachments</code>"
4486        },
4487        {
4488          "vuid": "VUID-VkSubpassDescription2-loadOp-03064",
4489          "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>"
4490        },
4491        {
4492          "vuid": "VUID-VkSubpassDescription2-pResolveAttachments-03065",
4493          "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>"
4494        },
4495        {
4496          "vuid": "VUID-VkSubpassDescription2-pResolveAttachments-03066",
4497          "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>"
4498        },
4499        {
4500          "vuid": "VUID-VkSubpassDescription2-pResolveAttachments-03067",
4501          "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>"
4502        },
4503        {
4504          "vuid": "VUID-VkSubpassDescription2-pResolveAttachments-03068",
4505          "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"
4506        },
4507        {
4508          "vuid": "VUID-VkSubpassDescription2-pColorAttachments-03069",
4509          "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"
4510        },
4511        {
4512          "vuid": "VUID-VkSubpassDescription2-pInputAttachments-02897",
4513          "text": " All attachments in <code>pInputAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have image formats whose <a href=\"#potential-format-features\">potential format features</a> contain at least <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code> or <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
4514        },
4515        {
4516          "vuid": "VUID-VkSubpassDescription2-pColorAttachments-02898",
4517          "text": " All attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have image formats whose <a href=\"#potential-format-features\">potential format features</a> contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>"
4518        },
4519        {
4520          "vuid": "VUID-VkSubpassDescription2-pResolveAttachments-02899",
4521          "text": " All attachments in <code>pResolveAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have image formats whose <a href=\"#potential-format-features\">potential format features</a> contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>"
4522        },
4523        {
4524          "vuid": "VUID-VkSubpassDescription2-pDepthStencilAttachment-02900",
4525          "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 image format whose <a href=\"#potential-format-features\">potential format features</a> contain <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
4526        },
4527        {
4528          "vuid": "VUID-VkSubpassDescription2-pDepthStencilAttachment-03071",
4529          "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"
4530        },
4531        {
4532          "vuid": "VUID-VkSubpassDescription2-attachment-03073",
4533          "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>"
4534        },
4535        {
4536          "vuid": "VUID-VkSubpassDescription2-pPreserveAttachments-03074",
4537          "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"
4538        },
4539        {
4540          "vuid": "VUID-VkSubpassDescription2-layout-02528",
4541          "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>"
4542        },
4543        {
4544          "vuid": "VUID-VkSubpassDescription2-attachment-02799",
4545          "text": " If the <code>attachment</code> member of any element of <code>pInputAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, then the <code>aspectMask</code> member <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a>"
4546        },
4547        {
4548          "vuid": "VUID-VkSubpassDescription2-attachment-02800",
4549          "text": " If the <code>attachment</code> member of any element of <code>pInputAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, then the <code>aspectMask</code> member <strong class=\"purple\">must</strong> not be <code>0</code>"
4550        },
4551        {
4552          "vuid": "VUID-VkSubpassDescription2-attachment-02801",
4553          "text": " If the <code>attachment</code> member of any element of <code>pInputAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, then the <code>aspectMask</code> member <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_METADATA_BIT</code>"
4554        },
4555        {
4556          "vuid": "VUID-VkSubpassDescription2-sType-sType",
4557          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2</code>"
4558        },
4559        {
4560          "vuid": "VUID-VkSubpassDescription2-flags-parameter",
4561          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSubpassDescriptionFlagBits\">VkSubpassDescriptionFlagBits</a> values"
4562        },
4563        {
4564          "vuid": "VUID-VkSubpassDescription2-pipelineBindPoint-parameter",
4565          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
4566        },
4567        {
4568          "vuid": "VUID-VkSubpassDescription2-pInputAttachments-parameter",
4569          "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 <a href=\"#VkAttachmentReference2\">VkAttachmentReference2</a> structures"
4570        },
4571        {
4572          "vuid": "VUID-VkSubpassDescription2-pColorAttachments-parameter",
4573          "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 <a href=\"#VkAttachmentReference2\">VkAttachmentReference2</a> structures"
4574        },
4575        {
4576          "vuid": "VUID-VkSubpassDescription2-pResolveAttachments-parameter",
4577          "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 <a href=\"#VkAttachmentReference2\">VkAttachmentReference2</a> structures"
4578        },
4579        {
4580          "vuid": "VUID-VkSubpassDescription2-pDepthStencilAttachment-parameter",
4581          "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 <a href=\"#VkAttachmentReference2\">VkAttachmentReference2</a> structure"
4582        },
4583        {
4584          "vuid": "VUID-VkSubpassDescription2-pPreserveAttachments-parameter",
4585          "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"
4586        }
4587      ],
4588      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_AMD_mixed_attachment_samples)": [
4589        {
4590          "vuid": "VUID-VkSubpassDescription2-pColorAttachments-03070",
4591          "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>"
4592        }
4593      ],
4594      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_NVX_multiview_per_view_attributes)": [
4595        {
4596          "vuid": "VUID-VkSubpassDescription2-flags-03076",
4597          "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>"
4598        }
4599      ]
4600    },
4601    "VkSubpassDescriptionDepthStencilResolve": {
4602      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_depth_stencil_resolve)": [
4603        {
4604          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03177",
4605          "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>"
4606        },
4607        {
4608          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03178",
4609          "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</code>"
4610        },
4611        {
4612          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03179",
4613          "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>"
4614        },
4615        {
4616          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03180",
4617          "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>"
4618        },
4619        {
4620          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-02651",
4621          "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>"
4622        },
4623        {
4624          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03181",
4625          "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"
4626        },
4627        {
4628          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03182",
4629          "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"
4630        },
4631        {
4632          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-depthResolveMode-03183",
4633          "text": " The value of <code>depthResolveMode</code> <strong class=\"purple\">must</strong> be one of the bits set in <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>::<code>supportedDepthResolveModes</code> or <code>VK_RESOLVE_MODE_NONE</code>"
4634        },
4635        {
4636          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-stencilResolveMode-03184",
4637          "text": " The value of <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be one of the bits set in <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>::<code>supportedStencilResolveModes</code> or <code>VK_RESOLVE_MODE_NONE</code>"
4638        },
4639        {
4640          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03185",
4641          "text": " If the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilResolveAttachment</code> has both depth and stencil components, <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>::<code>independentResolve</code> is <code>VK_FALSE</code>, and <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</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"
4642        },
4643        {
4644          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03186",
4645          "text": " If the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilResolveAttachment</code> has both depth and stencil components, <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>::<code>independentResolve</code> is <code>VK_FALSE</code> and <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</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</code>"
4646        },
4647        {
4648          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-sType-sType",
4649          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE</code>"
4650        },
4651        {
4652          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-depthResolveMode-parameter",
4653          "text": " <code>depthResolveMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkResolveModeFlagBits\">VkResolveModeFlagBits</a> value"
4654        },
4655        {
4656          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-stencilResolveMode-parameter",
4657          "text": " <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkResolveModeFlagBits\">VkResolveModeFlagBits</a> value"
4658        },
4659        {
4660          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-parameter",
4661          "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 <a href=\"#VkAttachmentReference2\">VkAttachmentReference2</a> structure"
4662        }
4663      ]
4664    },
4665    "VkAttachmentReference2": {
4666      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
4667        {
4668          "vuid": "VUID-VkAttachmentReference2-layout-03077",
4669          "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>, <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>, or <code>VK_IMAGE_LAYOUT_PRESENT_SRC_KHR</code>"
4670        },
4671        {
4672          "vuid": "VUID-VkAttachmentReference2-attachment-03311",
4673          "text": " If <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, and <code>aspectMask</code> does not include <code>VK_IMAGE_ASPECT_STENCIL_BIT</code> or <code>VK_IMAGE_ASPECT_DEPTH_BIT</code>, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>"
4674        },
4675        {
4676          "vuid": "VUID-VkAttachmentReference2-attachment-03312",
4677          "text": " If <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, and <code>aspectMask</code> does not include <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code>"
4678        },
4679        {
4680          "vuid": "VUID-VkAttachmentReference2-sType-sType",
4681          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2</code>"
4682        },
4683        {
4684          "vuid": "VUID-VkAttachmentReference2-layout-parameter",
4685          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
4686        }
4687      ],
4688      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
4689        {
4690          "vuid": "VUID-VkAttachmentReference2-separateDepthStencilLayouts-03313",
4691          "text": " If the <a href=\"#features-separateDepthStencilLayouts\"><code>separateDepthStencilLayouts</code></a> feature is not enabled, and <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>,"
4692        },
4693        {
4694          "vuid": "VUID-VkAttachmentReference2-attachment-03314",
4695          "text": " If <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, and <code>aspectMask</code> includes <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>,"
4696        },
4697        {
4698          "vuid": "VUID-VkAttachmentReference2-attachment-03315",
4699          "text": " If <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, and <code>aspectMask</code> includes both <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>, and <code>layout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkAttachmentReferenceStencilLayout\">VkAttachmentReferenceStencilLayout</a> structure"
4700        },
4701        {
4702          "vuid": "VUID-VkAttachmentReference2-attachment-03316",
4703          "text": " If <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, and <code>aspectMask</code> includes only <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> then <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>"
4704        },
4705        {
4706          "vuid": "VUID-VkAttachmentReference2-attachment-03317",
4707          "text": " If <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, and <code>aspectMask</code> includes only <code>VK_IMAGE_ASPECT_STENCIL_BIT</code> then <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>"
4708        }
4709      ]
4710    },
4711    "VkAttachmentReferenceStencilLayout": {
4712      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
4713        {
4714          "vuid": "VUID-VkAttachmentReferenceStencilLayout-stencilLayout-03318",
4715          "text": " <code>stencilLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code>, <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>, <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_PRESENT_SRC_KHR</code>"
4716        },
4717        {
4718          "vuid": "VUID-VkAttachmentReferenceStencilLayout-sType-sType",
4719          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT</code>"
4720        },
4721        {
4722          "vuid": "VUID-VkAttachmentReferenceStencilLayout-stencilLayout-parameter",
4723          "text": " <code>stencilLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
4724        }
4725      ]
4726    },
4727    "VkSubpassDependency2": {
4728      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
4729        {
4730          "vuid": "VUID-VkSubpassDependency2-srcStageMask-03080",
4731          "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>"
4732        },
4733        {
4734          "vuid": "VUID-VkSubpassDependency2-dstStageMask-03081",
4735          "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>"
4736        },
4737        {
4738          "vuid": "VUID-VkSubpassDependency2-srcStageMask-03082",
4739          "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>"
4740        },
4741        {
4742          "vuid": "VUID-VkSubpassDependency2-dstStageMask-03083",
4743          "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>"
4744        },
4745        {
4746          "vuid": "VUID-VkSubpassDependency2-srcSubpass-03084",
4747          "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"
4748        },
4749        {
4750          "vuid": "VUID-VkSubpassDependency2-srcSubpass-03085",
4751          "text": " <code>srcSubpass</code> and <code>dstSubpass</code> <strong class=\"purple\">must</strong> not both be equal to <code>VK_SUBPASS_EXTERNAL</code>"
4752        },
4753        {
4754          "vuid": "VUID-VkSubpassDependency2-srcSubpass-03087",
4755          "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>"
4756        },
4757        {
4758          "vuid": "VUID-VkSubpassDependency2-srcAccessMask-03088",
4759          "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>"
4760        },
4761        {
4762          "vuid": "VUID-VkSubpassDependency2-dstAccessMask-03089",
4763          "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>"
4764        },
4765        {
4766          "vuid": "VUID-VkSubpassDependency2-dependencyFlags-03090",
4767          "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>"
4768        },
4769        {
4770          "vuid": "VUID-VkSubpassDependency2-dependencyFlags-03091",
4771          "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>"
4772        },
4773        {
4774          "vuid": "VUID-VkSubpassDependency2-srcSubpass-02245",
4775          "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>"
4776        },
4777        {
4778          "vuid": "VUID-VkSubpassDependency2-viewOffset-02530",
4779          "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>"
4780        },
4781        {
4782          "vuid": "VUID-VkSubpassDependency2-dependencyFlags-03092",
4783          "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>"
4784        },
4785        {
4786          "vuid": "VUID-VkSubpassDependency2-sType-sType",
4787          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2</code>"
4788        },
4789        {
4790          "vuid": "VUID-VkSubpassDependency2-srcStageMask-parameter",
4791          "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
4792        },
4793        {
4794          "vuid": "VUID-VkSubpassDependency2-srcStageMask-requiredbitmask",
4795          "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
4796        },
4797        {
4798          "vuid": "VUID-VkSubpassDependency2-dstStageMask-parameter",
4799          "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
4800        },
4801        {
4802          "vuid": "VUID-VkSubpassDependency2-dstStageMask-requiredbitmask",
4803          "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
4804        },
4805        {
4806          "vuid": "VUID-VkSubpassDependency2-srcAccessMask-parameter",
4807          "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
4808        },
4809        {
4810          "vuid": "VUID-VkSubpassDependency2-dstAccessMask-parameter",
4811          "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
4812        },
4813        {
4814          "vuid": "VUID-VkSubpassDependency2-dependencyFlags-parameter",
4815          "text": " <code>dependencyFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDependencyFlagBits\">VkDependencyFlagBits</a> values"
4816        }
4817      ],
4818      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_NV_mesh_shader)": [
4819        {
4820          "vuid": "VUID-VkSubpassDependency2-srcStageMask-02103",
4821          "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>"
4822        },
4823        {
4824          "vuid": "VUID-VkSubpassDependency2-srcStageMask-02104",
4825          "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>"
4826        },
4827        {
4828          "vuid": "VUID-VkSubpassDependency2-dstStageMask-02105",
4829          "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>"
4830        },
4831        {
4832          "vuid": "VUID-VkSubpassDependency2-dstStageMask-02106",
4833          "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>"
4834        }
4835      ]
4836    },
4837    "vkDestroyRenderPass": {
4838      "core": [
4839        {
4840          "vuid": "VUID-vkDestroyRenderPass-renderPass-00873",
4841          "text": " All submitted commands that refer to <code>renderPass</code> <strong class=\"purple\">must</strong> have completed execution"
4842        },
4843        {
4844          "vuid": "VUID-vkDestroyRenderPass-renderPass-00874",
4845          "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"
4846        },
4847        {
4848          "vuid": "VUID-vkDestroyRenderPass-renderPass-00875",
4849          "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>"
4850        },
4851        {
4852          "vuid": "VUID-vkDestroyRenderPass-device-parameter",
4853          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
4854        },
4855        {
4856          "vuid": "VUID-vkDestroyRenderPass-renderPass-parameter",
4857          "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 <a href=\"#VkRenderPass\">VkRenderPass</a> handle"
4858        },
4859        {
4860          "vuid": "VUID-vkDestroyRenderPass-pAllocator-parameter",
4861          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
4862        },
4863        {
4864          "vuid": "VUID-vkDestroyRenderPass-renderPass-parent",
4865          "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>"
4866        }
4867      ]
4868    },
4869    "vkCreateFramebuffer": {
4870      "core": [
4871        {
4872          "vuid": "VUID-vkCreateFramebuffer-pCreateInfo-02777",
4873          "text": " If <code>pCreateInfo-&gt;flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, and <code>attachmentCount</code> is not <code>0</code>, each element of <code>pCreateInfo-&gt;pAttachments</code> <strong class=\"purple\">must</strong> have been created on <code>device</code>"
4874        },
4875        {
4876          "vuid": "VUID-vkCreateFramebuffer-device-parameter",
4877          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
4878        },
4879        {
4880          "vuid": "VUID-vkCreateFramebuffer-pCreateInfo-parameter",
4881          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a> structure"
4882        },
4883        {
4884          "vuid": "VUID-vkCreateFramebuffer-pAllocator-parameter",
4885          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
4886        },
4887        {
4888          "vuid": "VUID-vkCreateFramebuffer-pFramebuffer-parameter",
4889          "text": " <code>pFramebuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkFramebuffer\">VkFramebuffer</a> handle"
4890        }
4891      ]
4892    },
4893    "VkFramebufferCreateInfo": {
4894      "core": [
4895        {
4896          "vuid": "VUID-VkFramebufferCreateInfo-attachmentCount-00876",
4897          "text": " <code>attachmentCount</code> <strong class=\"purple\">must</strong> be equal to the attachment count specified in <code>renderPass</code>"
4898        },
4899        {
4900          "vuid": "VUID-VkFramebufferCreateInfo-flags-02778",
4901          "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, and <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 <a href=\"#VkImageView\">VkImageView</a> handles"
4902        },
4903        {
4904          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00877",
4905          "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, 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>"
4906        },
4907        {
4908          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02633",
4909          "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, 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>"
4910        },
4911        {
4912          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00879",
4913          "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, 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>"
4914        },
4915        {
4916          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00880",
4917          "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with a <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>"
4918        },
4919        {
4920          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00881",
4921          "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, 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>"
4922        },
4923        {
4924          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00883",
4925          "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> only specify a single mip level"
4926        },
4927        {
4928          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00884",
4929          "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with the identity swizzle"
4930        },
4931        {
4932          "vuid": "VUID-VkFramebufferCreateInfo-width-00885",
4933          "text": " <code>width</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
4934        },
4935        {
4936          "vuid": "VUID-VkFramebufferCreateInfo-width-00886",
4937          "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferWidth</code>"
4938        },
4939        {
4940          "vuid": "VUID-VkFramebufferCreateInfo-height-00887",
4941          "text": " <code>height</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
4942        },
4943        {
4944          "vuid": "VUID-VkFramebufferCreateInfo-height-00888",
4945          "text": " <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferHeight</code>"
4946        },
4947        {
4948          "vuid": "VUID-VkFramebufferCreateInfo-layers-00889",
4949          "text": " <code>layers</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
4950        },
4951        {
4952          "vuid": "VUID-VkFramebufferCreateInfo-layers-00890",
4953          "text": " <code>layers</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferLayers</code>"
4954        },
4955        {
4956          "vuid": "VUID-VkFramebufferCreateInfo-flags-03188",
4957          "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, and <code>attachmentCount</code> is not 0, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <a href=\"#VkImageView\">VkImageView</a> handles"
4958        },
4959        {
4960          "vuid": "VUID-VkFramebufferCreateInfo-flags-04113",
4961          "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkImageViewCreateInfo\">VkImageViewCreateInfo</a>::<code>viewType</code> not equal to <code>VK_IMAGE_VIEW_TYPE_3D</code>"
4962        },
4963        {
4964          "vuid": "VUID-VkFramebufferCreateInfo-sType-sType",
4965          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO</code>"
4966        },
4967        {
4968          "vuid": "VUID-VkFramebufferCreateInfo-pNext-pNext",
4969          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a>"
4970        },
4971        {
4972          "vuid": "VUID-VkFramebufferCreateInfo-sType-unique",
4973          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
4974        },
4975        {
4976          "vuid": "VUID-VkFramebufferCreateInfo-flags-parameter",
4977          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFramebufferCreateFlagBits\">VkFramebufferCreateFlagBits</a> values"
4978        },
4979        {
4980          "vuid": "VUID-VkFramebufferCreateInfo-renderPass-parameter",
4981          "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRenderPass\">VkRenderPass</a> handle"
4982        },
4983        {
4984          "vuid": "VUID-VkFramebufferCreateInfo-commonparent",
4985          "text": " Both of <code>renderPass</code>, and the elements of <code>pAttachments</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
4986        }
4987      ],
4988      "(VK_VERSION_1_2,VK_KHR_depth_stencil_resolve)": [
4989        {
4990          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02634",
4991          "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, 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>"
4992        }
4993      ],
4994      "(VK_EXT_fragment_density_map)": [
4995        {
4996          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02552",
4997          "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>"
4998        },
4999        {
5000          "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02553",
5001          "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"
5002        },
5003        {
5004          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02554",
5005          "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, 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>"
5006        },
5007        {
5008          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02555",
5009          "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, 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 \\(\\left\\lceil{\\frac{width}{maxFragmentDensityTexelSize_{width}}}\\right\\rceil\\)"
5010        },
5011        {
5012          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02556",
5013          "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, 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 \\(\\left\\lceil{\\frac{height}{maxFragmentDensityTexelSize_{height}}}\\right\\rceil\\)"
5014        }
5015      ],
5016      "!(VK_EXT_fragment_density_map)": [
5017        {
5018          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00882",
5019          "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have dimensions at least as large as the corresponding framebuffer dimension"
5020        }
5021      ],
5022      "!(VK_EXT_fragment_density_map)+(VK_VERSION_1_1,VK_KHR_multiview)": [
5023        {
5024          "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02743",
5025          "text": " If <code>renderPass</code> was specified with non-zero view masks, each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have a <code>layerCount</code> greater than the index of the most significant bit set in any of those view masks"
5026        }
5027      ],
5028      "(VK_EXT_fragment_density_map)+!(VK_VERSION_1_1,VK_KHR_multiview)": [
5029        {
5030          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02744",
5031          "text": " An element of <code>pAttachments</code> that is referenced by <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> have a <code>layerCount</code> equal to <code>1</code>"
5032        }
5033      ],
5034      "(VK_EXT_fragment_density_map)+(VK_VERSION_1_1,VK_KHR_multiview)": [
5035        {
5036          "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02745",
5037          "text": " If <code>renderPass</code> was specified with non-zero view masks, each element of <code>pAttachments</code> that is not referenced by <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> have a <code>layerCount</code> greater than the index of the most significant bit set in any of those view masks"
5038        },
5039        {
5040          "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02746",
5041          "text": " If <code>renderPass</code> was specified with non-zero view masks, each element of <code>pAttachments</code> that is referenced by <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> have a <code>layerCount</code> equal to <code>1</code> or greater than the index of the most significant bit set in any of those view masks"
5042        },
5043        {
5044          "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02747",
5045          "text": " If <code>renderPass</code> was not specified with non-zero view masks, each element of <code>pAttachments</code> that is referenced by <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> have a <code>layerCount</code> equal to <code>1</code>"
5046        }
5047      ],
5048      "(VK_VERSION_1_1,VK_KHR_multiview)": [
5049        {
5050          "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02531",
5051          "text": " If <code>renderPass</code> was specified with non-zero view masks, <code>layers</code> <strong class=\"purple\">must</strong> be <code>1</code>"
5052        }
5053      ],
5054      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
5055        {
5056          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00891",
5057          "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, 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"
5058        }
5059      ],
5060      "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)": [
5061        {
5062          "vuid": "VUID-VkFramebufferCreateInfo-flags-03189",
5063          "text": " If the <a href=\"#features-imagelessFramebuffer\">imageless framebuffer</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>"
5064        },
5065        {
5066          "vuid": "VUID-VkFramebufferCreateInfo-flags-03190",
5067          "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure"
5068        },
5069        {
5070          "vuid": "VUID-VkFramebufferCreateInfo-flags-03191",
5071          "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>attachmentImageInfoCount</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be equal to either zero or <code>attachmentCount</code>"
5072        },
5073        {
5074          "vuid": "VUID-VkFramebufferCreateInfo-flags-03201",
5075          "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>usage</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain that refers to an attachment used as a color attachment or resolve attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> include <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>"
5076        },
5077        {
5078          "vuid": "VUID-VkFramebufferCreateInfo-flags-03202",
5079          "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>usage</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain that refers to an attachment used as a depth/stencil attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> include <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
5080        },
5081        {
5082          "vuid": "VUID-VkFramebufferCreateInfo-flags-03204",
5083          "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>usage</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain that refers to an attachment used as an input attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> include <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>"
5084        },
5085        {
5086          "vuid": "VUID-VkFramebufferCreateInfo-flags-03205",
5087          "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, at least one element of the <code>pViewFormats</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be equal to the corresponding value of <a href=\"#VkAttachmentDescription\">VkAttachmentDescription</a>::<code>format</code> used to create <code>renderPass</code>"
5088        }
5089      ],
5090      "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)+!(VK_EXT_fragment_density_map)": [
5091        {
5092          "vuid": "VUID-VkFramebufferCreateInfo-flags-03192",
5093          "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>width</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be greater than or equal to <code>width</code>"
5094        },
5095        {
5096          "vuid": "VUID-VkFramebufferCreateInfo-flags-03193",
5097          "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>height</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be greater than or equal to <code>height</code>"
5098        }
5099      ],
5100      "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)+(VK_EXT_fragment_density_map)": [
5101        {
5102          "vuid": "VUID-VkFramebufferCreateInfo-flags-03194",
5103          "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>width</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be greater than or equal to <code>width</code>, except for any element that is referenced by <a href=\"#VkRenderPassFragmentDensityMapCreateInfoEXT\">VkRenderPassFragmentDensityMapCreateInfoEXT</a>::<code>fragmentDensityMapAttachment</code> in <code>renderPass</code>"
5104        },
5105        {
5106          "vuid": "VUID-VkFramebufferCreateInfo-flags-03195",
5107          "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>height</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be greater than or equal to <code>height</code>, except for any element that is referenced by <a href=\"#VkRenderPassFragmentDensityMapCreateInfoEXT\">VkRenderPassFragmentDensityMapCreateInfoEXT</a>::<code>fragmentDensityMapAttachment</code> in <code>renderPass</code>"
5108        },
5109        {
5110          "vuid": "VUID-VkFramebufferCreateInfo-flags-03196",
5111          "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>width</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain that is referenced by <a href=\"#VkRenderPassFragmentDensityMapCreateInfoEXT\">VkRenderPassFragmentDensityMapCreateInfoEXT</a>::<code>fragmentDensityMapAttachment</code> in <code>renderPass</code> <strong class=\"purple\">must</strong> be greater than or equal to \\(\\left\\lceil{\\frac{width}{maxFragmentDensityTexelSize_{width}}}\\right\\rceil\\)"
5112        },
5113        {
5114          "vuid": "VUID-VkFramebufferCreateInfo-flags-03197",
5115          "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>height</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain that is referenced by <a href=\"#VkRenderPassFragmentDensityMapCreateInfoEXT\">VkRenderPassFragmentDensityMapCreateInfoEXT</a>::<code>fragmentDensityMapAttachment</code> in <code>renderPass</code> <strong class=\"purple\">must</strong> be greater than or equal to \\(\\left\\lceil{\\frac{height}{maxFragmentDensityTexelSize_{height}}}\\right\\rceil\\)"
5116        }
5117      ],
5118      "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)+(VK_VERSION_1_1,VK_KHR_multiview)": [
5119        {
5120          "vuid": "VUID-VkFramebufferCreateInfo-renderPass-03198",
5121          "text": " If multiview is enabled for <code>renderPass</code>, and <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>layerCount</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be greater than the maximum bit index set in the view mask in the subpasses in which it is used in <code>renderPass</code>"
5122        },
5123        {
5124          "vuid": "VUID-VkFramebufferCreateInfo-renderPass-03199",
5125          "text": " If multiview is not enabled for <code>renderPass</code>, and <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>layerCount</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be greater than or equal to <code>layers</code>"
5126        }
5127      ],
5128      "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)+!(VK_VERSION_1_1+VK_KHR_multiview)": [
5129        {
5130          "vuid": "VUID-VkFramebufferCreateInfo-flags-03200",
5131          "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>layerCount</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be greater than or equal to <code>layers</code>"
5132        }
5133      ],
5134      "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)+(VK_KHR_depth_stencil_resolve)": [
5135        {
5136          "vuid": "VUID-VkFramebufferCreateInfo-flags-03203",
5137          "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>usage</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain that refers to an attachment used as a depth/stencil resolve attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> include <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
5138        }
5139      ]
5140    },
5141    "VkFramebufferAttachmentsCreateInfo": {
5142      "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)": [
5143        {
5144          "vuid": "VUID-VkFramebufferAttachmentsCreateInfo-sType-sType",
5145          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO</code>"
5146        },
5147        {
5148          "vuid": "VUID-VkFramebufferAttachmentsCreateInfo-pAttachmentImageInfos-parameter",
5149          "text": " If <code>attachmentImageInfoCount</code> is not <code>0</code>, <code>pAttachmentImageInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentImageInfoCount</code> valid <a href=\"#VkFramebufferAttachmentImageInfo\">VkFramebufferAttachmentImageInfo</a> structures"
5150        }
5151      ]
5152    },
5153    "VkFramebufferAttachmentImageInfo": {
5154      "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)": [
5155        {
5156          "vuid": "VUID-VkFramebufferAttachmentImageInfo-sType-sType",
5157          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO</code>"
5158        },
5159        {
5160          "vuid": "VUID-VkFramebufferAttachmentImageInfo-pNext-pNext",
5161          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
5162        },
5163        {
5164          "vuid": "VUID-VkFramebufferAttachmentImageInfo-flags-parameter",
5165          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values"
5166        },
5167        {
5168          "vuid": "VUID-VkFramebufferAttachmentImageInfo-usage-parameter",
5169          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
5170        },
5171        {
5172          "vuid": "VUID-VkFramebufferAttachmentImageInfo-usage-requiredbitmask",
5173          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
5174        },
5175        {
5176          "vuid": "VUID-VkFramebufferAttachmentImageInfo-pViewFormats-parameter",
5177          "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"
5178        }
5179      ]
5180    },
5181    "vkDestroyFramebuffer": {
5182      "core": [
5183        {
5184          "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00892",
5185          "text": " All submitted commands that refer to <code>framebuffer</code> <strong class=\"purple\">must</strong> have completed execution"
5186        },
5187        {
5188          "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00893",
5189          "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"
5190        },
5191        {
5192          "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00894",
5193          "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>"
5194        },
5195        {
5196          "vuid": "VUID-vkDestroyFramebuffer-device-parameter",
5197          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
5198        },
5199        {
5200          "vuid": "VUID-vkDestroyFramebuffer-framebuffer-parameter",
5201          "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 <a href=\"#VkFramebuffer\">VkFramebuffer</a> handle"
5202        },
5203        {
5204          "vuid": "VUID-vkDestroyFramebuffer-pAllocator-parameter",
5205          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
5206        },
5207        {
5208          "vuid": "VUID-vkDestroyFramebuffer-framebuffer-parent",
5209          "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>"
5210        }
5211      ]
5212    },
5213    "vkCmdBeginRenderPass": {
5214      "core": [
5215        {
5216          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00895",
5217          "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>"
5218        },
5219        {
5220          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00897",
5221          "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>"
5222        },
5223        {
5224          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00898",
5225          "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>"
5226        },
5227        {
5228          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00899",
5229          "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>"
5230        },
5231        {
5232          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00900",
5233          "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>"
5234        },
5235        {
5236          "vuid": "VUID-vkCmdBeginRenderPass-srcStageMask-00901",
5237          "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"
5238        },
5239        {
5240          "vuid": "VUID-vkCmdBeginRenderPass-framebuffer-02532",
5241          "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"
5242        },
5243        {
5244          "vuid": "VUID-vkCmdBeginRenderPass-pAttachments-04102",
5245          "text": " Each element of the <code>pAttachments</code> of <code>framebuffer</code> that is referenced by any element of the <code>pInputAttachments</code> of any element of <code>pSubpasses</code> of <code>renderPass</code> <strong class=\"purple\">must</strong> have <a href=\"#resources-image-view-format-features\">image view format features</a> containing at least <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code> or <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
5246        },
5247        {
5248          "vuid": "VUID-vkCmdBeginRenderPass-pAttachments-04103",
5249          "text": " Each element of the <code>pAttachments</code> of <code>framebuffer</code> that is referenced by any element of the <code>pColorAttachments</code> of any element of <code>pSubpasses</code> of <code>renderPass</code> <strong class=\"purple\">must</strong> have <a href=\"#resources-image-view-format-features\">image view format features</a> containing <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>"
5250        },
5251        {
5252          "vuid": "VUID-vkCmdBeginRenderPass-pAttachments-04104",
5253          "text": " Each element of the <code>pAttachments</code> of <code>framebuffer</code> that is referenced by any element of the <code>pResolveAttachments</code> of any element of <code>pSubpasses</code> of <code>renderPass</code> <strong class=\"purple\">must</strong> have <a href=\"#resources-image-view-format-features\">image view format features</a> containing <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>"
5254        },
5255        {
5256          "vuid": "VUID-vkCmdBeginRenderPass-pAttachments-04105",
5257          "text": " Each element of the <code>pAttachments</code> of <code>framebuffer</code> that is referenced by any element of the <code>pDepthStencilAttachment</code> of any element of <code>pSubpasses</code> of <code>renderPass</code> <strong class=\"purple\">must</strong> have <a href=\"#resources-image-view-format-features\">image view format features</a> containing <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
5258        },
5259        {
5260          "vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-parameter",
5261          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
5262        },
5263        {
5264          "vuid": "VUID-vkCmdBeginRenderPass-pRenderPassBegin-parameter",
5265          "text": " <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a> structure"
5266        },
5267        {
5268          "vuid": "VUID-vkCmdBeginRenderPass-contents-parameter",
5269          "text": " <code>contents</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSubpassContents\">VkSubpassContents</a> value"
5270        },
5271        {
5272          "vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-recording",
5273          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
5274        },
5275        {
5276          "vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-cmdpool",
5277          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
5278        },
5279        {
5280          "vuid": "VUID-vkCmdBeginRenderPass-renderpass",
5281          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
5282        },
5283        {
5284          "vuid": "VUID-vkCmdBeginRenderPass-bufferlevel",
5285          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
5286        }
5287      ],
5288      "!(VK_VERSION_1_1,VK_KHR_maintenance2)": [
5289        {
5290          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00896",
5291          "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>"
5292        }
5293      ],
5294      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
5295        {
5296          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-01758",
5297          "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>"
5298        }
5299      ],
5300      "(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
5301        {
5302          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-02842",
5303          "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_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_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>"
5304        },
5305        {
5306          "vuid": "VUID-vkCmdBeginRenderPass-stencilInitialLayout-02843",
5307          "text": " If any of the <code>stencilInitialLayout</code> or <code>stencilFinalLayout</code> member of the <code>VkAttachmentDescriptionStencilLayout</code> structures or the <code>stencilLayout</code> member of the <code>VkAttachmentReferenceStencilLayout</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_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>"
5308        }
5309      ]
5310    },
5311    "vkCmdBeginRenderPass2": {
5312      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
5313        {
5314          "vuid": "VUID-vkCmdBeginRenderPass2-framebuffer-02779",
5315          "text": " Both the <code>framebuffer</code> and <code>renderPass</code> members of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created on the same <a href=\"#VkDevice\">VkDevice</a> that <code>commandBuffer</code> was allocated on"
5316        },
5317        {
5318          "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03094",
5319          "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>"
5320        },
5321        {
5322          "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03096",
5323          "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>"
5324        },
5325        {
5326          "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03097",
5327          "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>"
5328        },
5329        {
5330          "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03098",
5331          "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>"
5332        },
5333        {
5334          "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03099",
5335          "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>"
5336        },
5337        {
5338          "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03100",
5339          "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>"
5340        },
5341        {
5342          "vuid": "VUID-vkCmdBeginRenderPass2-srcStageMask-03101",
5343          "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"
5344        },
5345        {
5346          "vuid": "VUID-vkCmdBeginRenderPass2-framebuffer-02533",
5347          "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"
5348        },
5349        {
5350          "vuid": "VUID-vkCmdBeginRenderPass2-pAttachments-04106",
5351          "text": " Each element of the <code>pAttachments</code> of <code>framebuffer</code> that is referenced by any element of the <code>pInputAttachments</code> of any element of <code>pSubpasses</code> of <code>renderPass</code> <strong class=\"purple\">must</strong> have <a href=\"#resources-image-view-format-features\">image view format features</a> contain at least <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code> or <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
5352        },
5353        {
5354          "vuid": "VUID-vkCmdBeginRenderPass2-pAttachments-04107",
5355          "text": " Each element of the <code>pAttachments</code> of <code>framebuffer</code> that is referenced by any element of the <code>pColorAttachments</code> of any element of <code>pSubpasses</code> of <code>renderPass</code> <strong class=\"purple\">must</strong> have <a href=\"#resources-image-view-format-features\">image view format features</a> contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>"
5356        },
5357        {
5358          "vuid": "VUID-vkCmdBeginRenderPass2-pAttachments-04108",
5359          "text": " Each element of the <code>pAttachments</code> of <code>framebuffer</code> that is referenced by any element of the <code>pResolveAttachments</code> of any element of <code>pSubpasses</code> of <code>renderPass</code> <strong class=\"purple\">must</strong> have <a href=\"#resources-image-view-format-features\">image view format features</a> contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>"
5360        },
5361        {
5362          "vuid": "VUID-vkCmdBeginRenderPass2-pAttachments-04109",
5363          "text": " Each element of the <code>pAttachments</code> of <code>framebuffer</code> that is referenced by any element of the <code>pDepthStencilAttachment</code> of any element of <code>pSubpasses</code> of <code>renderPass</code> <strong class=\"purple\">must</strong> have <a href=\"#resources-image-view-format-features\">image view format features</a> contain <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
5364        },
5365        {
5366          "vuid": "VUID-vkCmdBeginRenderPass2-commandBuffer-parameter",
5367          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
5368        },
5369        {
5370          "vuid": "VUID-vkCmdBeginRenderPass2-pRenderPassBegin-parameter",
5371          "text": " <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a> structure"
5372        },
5373        {
5374          "vuid": "VUID-vkCmdBeginRenderPass2-pSubpassBeginInfo-parameter",
5375          "text": " <code>pSubpassBeginInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSubpassBeginInfo\">VkSubpassBeginInfo</a> structure"
5376        },
5377        {
5378          "vuid": "VUID-vkCmdBeginRenderPass2-commandBuffer-recording",
5379          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
5380        },
5381        {
5382          "vuid": "VUID-vkCmdBeginRenderPass2-commandBuffer-cmdpool",
5383          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
5384        },
5385        {
5386          "vuid": "VUID-vkCmdBeginRenderPass2-renderpass",
5387          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
5388        },
5389        {
5390          "vuid": "VUID-vkCmdBeginRenderPass2-bufferlevel",
5391          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
5392        }
5393      ],
5394      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
5395        {
5396          "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-02844",
5397          "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_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_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>"
5398        },
5399        {
5400          "vuid": "VUID-vkCmdBeginRenderPass2-stencilInitialLayout-02845",
5401          "text": " If any of the <code>stencilInitialLayout</code> or <code>stencilFinalLayout</code> member of the <code>VkAttachmentDescriptionStencilLayout</code> structures or the <code>stencilLayout</code> member of the <code>VkAttachmentReferenceStencilLayout</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_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>"
5402        }
5403      ]
5404    },
5405    "VkRenderPassBeginInfo": {
5406      "core": [
5407        {
5408          "vuid": "VUID-VkRenderPassBeginInfo-clearValueCount-00902",
5409          "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>"
5410        },
5411        {
5412          "vuid": "VUID-VkRenderPassBeginInfo-renderPass-00904",
5413          "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a> structure specified when creating <code>framebuffer</code>"
5414        },
5415        {
5416          "vuid": "VUID-VkRenderPassBeginInfo-sType-sType",
5417          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO</code>"
5418        },
5419        {
5420          "vuid": "VUID-VkRenderPassBeginInfo-pNext-pNext",
5421          "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>, <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a>, <a href=\"#VkRenderPassSampleLocationsBeginInfoEXT\">VkRenderPassSampleLocationsBeginInfoEXT</a>, or <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a>"
5422        },
5423        {
5424          "vuid": "VUID-VkRenderPassBeginInfo-sType-unique",
5425          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
5426        },
5427        {
5428          "vuid": "VUID-VkRenderPassBeginInfo-renderPass-parameter",
5429          "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRenderPass\">VkRenderPass</a> handle"
5430        },
5431        {
5432          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-parameter",
5433          "text": " <code>framebuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFramebuffer\">VkFramebuffer</a> handle"
5434        },
5435        {
5436          "vuid": "VUID-VkRenderPassBeginInfo-pClearValues-parameter",
5437          "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> <a href=\"#VkClearValue\">VkClearValue</a> unions"
5438        },
5439        {
5440          "vuid": "VUID-VkRenderPassBeginInfo-commonparent",
5441          "text": " Both of <code>framebuffer</code>, and <code>renderPass</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
5442        }
5443      ],
5444      "!(VK_VERSION_1_1,VK_KHR_device_group)": [
5445        {
5446          "vuid": "VUID-VkRenderPassBeginInfo-renderArea-02846",
5447          "text": " <code>renderArea.offset.x</code> <strong class=\"purple\">must</strong> be greater than or equal to 0"
5448        },
5449        {
5450          "vuid": "VUID-VkRenderPassBeginInfo-renderArea-02847",
5451          "text": " <code>renderArea.offset.y</code> <strong class=\"purple\">must</strong> be greater than or equal to 0"
5452        },
5453        {
5454          "vuid": "VUID-VkRenderPassBeginInfo-renderArea-02848",
5455          "text": " <span class=\"eq\"><code>renderArea.offset.x</code> &#43; <code>renderArea.offset.width</code></span> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>width</code> the <code>framebuffer</code> was created with"
5456        },
5457        {
5458          "vuid": "VUID-VkRenderPassBeginInfo-renderArea-02849",
5459          "text": " <span class=\"eq\"><code>renderArea.offset.y</code> &#43; <code>renderArea.offset.height</code></span> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>height</code> the <code>framebuffer</code> was created with"
5460        }
5461      ],
5462      "(VK_VERSION_1_1,VK_KHR_device_group)": [
5463        {
5464          "vuid": "VUID-VkRenderPassBeginInfo-pNext-02850",
5465          "text": " If the <code>pNext</code> chain does not contain <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> or its <code>deviceRenderAreaCount</code> member is equal to 0, <code>renderArea.offset.x</code> <strong class=\"purple\">must</strong> be greater than or equal to 0"
5466        },
5467        {
5468          "vuid": "VUID-VkRenderPassBeginInfo-pNext-02851",
5469          "text": " If the <code>pNext</code> chain does not contain <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> or its <code>deviceRenderAreaCount</code> member is equal to 0, <code>renderArea.offset.y</code> <strong class=\"purple\">must</strong> be greater than or equal to 0"
5470        },
5471        {
5472          "vuid": "VUID-VkRenderPassBeginInfo-pNext-02852",
5473          "text": " If the <code>pNext</code> chain does not contain <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> or its <code>deviceRenderAreaCount</code> member is equal to 0, <span class=\"eq\"><code>renderArea.offset.x</code> &#43; <code>renderArea.offset.width</code></span> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>width</code> the <code>framebuffer</code> was created with"
5474        },
5475        {
5476          "vuid": "VUID-VkRenderPassBeginInfo-pNext-02853",
5477          "text": " If the <code>pNext</code> chain does not contain <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> or its <code>deviceRenderAreaCount</code> member is equal to 0, <span class=\"eq\"><code>renderArea.offset.y</code> &#43; <code>renderArea.offset.height</code></span> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>height</code> the <code>framebuffer</code> was created with"
5478        },
5479        {
5480          "vuid": "VUID-VkRenderPassBeginInfo-pNext-02854",
5481          "text": " If the <code>pNext</code> chain contains <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a>, the <code>offset.x</code> member of each element of <code>pDeviceRenderAreas</code> <strong class=\"purple\">must</strong> be greater than or equal to 0"
5482        },
5483        {
5484          "vuid": "VUID-VkRenderPassBeginInfo-pNext-02855",
5485          "text": " If the <code>pNext</code> chain contains <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a>, the <code>offset.y</code> member of each element of <code>pDeviceRenderAreas</code> <strong class=\"purple\">must</strong> be greater than or equal to 0"
5486        },
5487        {
5488          "vuid": "VUID-VkRenderPassBeginInfo-pNext-02856",
5489          "text": " If the <code>pNext</code> chain contains <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a>, <span class=\"eq\"><code>offset.x</code> &#43; <code>offset.width</code></span> of each element of <code>pDeviceRenderAreas</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>width</code> the <code>framebuffer</code> was created with"
5490        },
5491        {
5492          "vuid": "VUID-VkRenderPassBeginInfo-pNext-02857",
5493          "text": " If the <code>pNext</code> chain contains <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a>, <span class=\"eq\"><code>offset.y</code> &#43; <code>offset.height</code></span> of each element of <code>pDeviceRenderAreas</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>height</code> the <code>framebuffer</code> was created with"
5494        }
5495      ],
5496      "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)": [
5497        {
5498          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03207",
5499          "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that did not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, and the <code>pNext</code> chain includes a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure, its <code>attachmentCount</code> <strong class=\"purple\">must</strong> be zero"
5500        },
5501        {
5502          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03208",
5503          "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>attachmentCount</code> of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be equal to the value of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a>::<code>attachmentImageInfoCount</code> used to create <code>framebuffer</code>"
5504        },
5505        {
5506          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-02780",
5507          "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> have been created on the same <a href=\"#VkDevice\">VkDevice</a> as <code>framebuffer</code> and <code>renderPass</code>"
5508        },
5509        {
5510          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03209",
5511          "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> of an image created with a value of <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> equal to the <code>flags</code> member of the corresponding element of <a href=\"#VkFramebufferAttachmentsCreateInfoKHR\">VkFramebufferAttachmentsCreateInfoKHR</a>::<code>pAttachments</code> used to create <code>framebuffer</code>"
5512        },
5513        {
5514          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03210",
5515          "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> of an image created with a value of <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>usage</code> equal to the <code>usage</code> member of the corresponding element of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a>::<code>pAttachments</code> used to create <code>framebuffer</code>"
5516        },
5517        {
5518          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03211",
5519          "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> with a width equal to the <code>width</code> member of the corresponding element of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a>::<code>pAttachments</code> used to create <code>framebuffer</code>"
5520        },
5521        {
5522          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03212",
5523          "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> with a height equal to the <code>height</code> member of the corresponding element of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a>::<code>pAttachments</code> used to create <code>framebuffer</code>"
5524        },
5525        {
5526          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03213",
5527          "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> of an image created with a value of <a href=\"#VkImageViewCreateInfo\">VkImageViewCreateInfo</a>::<code>subresourceRange.layerCount</code> equal to the <code>layerCount</code> member of the corresponding element of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a>::<code>pAttachments</code> used to create <code>framebuffer</code>"
5528        },
5529        {
5530          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03214",
5531          "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> of an image created with a value of <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>viewFormatCount</code> equal to the <code>viewFormatCount</code> member of the corresponding element of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a>::<code>pAttachments</code> used to create <code>framebuffer</code>"
5532        },
5533        {
5534          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03215",
5535          "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> of an image created with a set of elements in <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>pViewFormats</code> equal to the set of elements in the <code>pViewFormats</code> member of the corresponding element of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a>::<code>pAttachments</code> used to create <code>framebuffer</code>"
5536        },
5537        {
5538          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03216",
5539          "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> of an image created with a value of <a href=\"#VkImageViewCreateInfo\">VkImageViewCreateInfo</a>::<code>format</code> equal to the corresponding value of <a href=\"#VkAttachmentDescription\">VkAttachmentDescription</a>::<code>format</code> in <code>renderPass</code>"
5540        },
5541        {
5542          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03217",
5543          "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> of an image created with a value of <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>samples</code> equal to the corresponding value of <a href=\"#VkAttachmentDescription\">VkAttachmentDescription</a>::<code>samples</code> in <code>renderPass</code>"
5544        }
5545      ],
5546      "(VK_QCOM_render_pass_transform)": [
5547        {
5548          "vuid": "VUID-VkRenderPassBeginInfo-pNext-02869",
5549          "text": " If the <code>pNext</code> chain includes <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a>, <code>renderArea</code>::<code>offset</code> <strong class=\"purple\">must</strong> equal (0,0)"
5550        },
5551        {
5552          "vuid": "VUID-VkRenderPassBeginInfo-pNext-02870",
5553          "text": " If the <code>pNext</code> chain includes <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a>, <code>renderArea</code>::<code>extent</code> transformed by <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a>::<code>transform</code> <strong class=\"purple\">must</strong> equal the <code>framebuffer</code> dimensions"
5554        }
5555      ]
5556    },
5557    "VkRenderPassSampleLocationsBeginInfoEXT": {
5558      "(VK_EXT_sample_locations)": [
5559        {
5560          "vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-sType-sType",
5561          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT</code>"
5562        },
5563        {
5564          "vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-pAttachmentInitialSampleLocations-parameter",
5565          "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 <a href=\"#VkAttachmentSampleLocationsEXT\">VkAttachmentSampleLocationsEXT</a> structures"
5566        },
5567        {
5568          "vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-pPostSubpassSampleLocations-parameter",
5569          "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 <a href=\"#VkSubpassSampleLocationsEXT\">VkSubpassSampleLocationsEXT</a> structures"
5570        }
5571      ]
5572    },
5573    "VkAttachmentSampleLocationsEXT": {
5574      "(VK_EXT_sample_locations)": [
5575        {
5576          "vuid": "VUID-VkAttachmentSampleLocationsEXT-attachmentIndex-01531",
5577          "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"
5578        },
5579        {
5580          "vuid": "VUID-VkAttachmentSampleLocationsEXT-sampleLocationsInfo-parameter",
5581          "text": " <code>sampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleLocationsInfoEXT\">VkSampleLocationsInfoEXT</a> structure"
5582        }
5583      ]
5584    },
5585    "VkSubpassSampleLocationsEXT": {
5586      "(VK_EXT_sample_locations)": [
5587        {
5588          "vuid": "VUID-VkSubpassSampleLocationsEXT-subpassIndex-01532",
5589          "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"
5590        },
5591        {
5592          "vuid": "VUID-VkSubpassSampleLocationsEXT-sampleLocationsInfo-parameter",
5593          "text": " <code>sampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleLocationsInfoEXT\">VkSampleLocationsInfoEXT</a> structure"
5594        }
5595      ]
5596    },
5597    "VkRenderPassTransformBeginInfoQCOM": {
5598      "(VK_QCOM_render_pass_transform)": [
5599        {
5600          "vuid": "VUID-VkRenderPassTransformBeginInfoQCOM-transform-02871",
5601          "text": " <code>transform</code> <strong class=\"purple\">must</strong> be <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code>, <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, or <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>"
5602        },
5603        {
5604          "vuid": "VUID-VkRenderPassTransformBeginInfoQCOM-flags-02872",
5605          "text": " The <code>renderpass</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkRenderPassCreateInfo\">VkRenderPassCreateInfo</a>::<code>flags</code> containing <code>VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM</code>"
5606        },
5607        {
5608          "vuid": "VUID-VkRenderPassTransformBeginInfoQCOM-sType-sType",
5609          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM</code>"
5610        }
5611      ]
5612    },
5613    "VkSubpassBeginInfo": {
5614      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
5615        {
5616          "vuid": "VUID-VkSubpassBeginInfo-sType-sType",
5617          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO</code>"
5618        },
5619        {
5620          "vuid": "VUID-VkSubpassBeginInfo-pNext-pNext",
5621          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
5622        },
5623        {
5624          "vuid": "VUID-VkSubpassBeginInfo-contents-parameter",
5625          "text": " <code>contents</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSubpassContents\">VkSubpassContents</a> value"
5626        }
5627      ]
5628    },
5629    "VkDeviceGroupRenderPassBeginInfo": {
5630      "(VK_VERSION_1_1,VK_KHR_device_group)": [
5631        {
5632          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00905",
5633          "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value"
5634        },
5635        {
5636          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00906",
5637          "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
5638        },
5639        {
5640          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00907",
5641          "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a subset of the command buffer&#8217;s initial device mask"
5642        },
5643        {
5644          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceRenderAreaCount-00908",
5645          "text": " <code>deviceRenderAreaCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device"
5646        },
5647        {
5648          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-sType-sType",
5649          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO</code>"
5650        },
5651        {
5652          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-pDeviceRenderAreas-parameter",
5653          "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> <a href=\"#VkRect2D\">VkRect2D</a> structures"
5654        }
5655      ]
5656    },
5657    "VkRenderPassAttachmentBeginInfo": {
5658      "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)": [
5659        {
5660          "vuid": "VUID-VkRenderPassAttachmentBeginInfo-pAttachments-03218",
5661          "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> only specify a single mip level"
5662        },
5663        {
5664          "vuid": "VUID-VkRenderPassAttachmentBeginInfo-pAttachments-03219",
5665          "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with the identity swizzle"
5666        },
5667        {
5668          "vuid": "VUID-VkRenderPassAttachmentBeginInfo-pAttachments-04114",
5669          "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkImageViewCreateInfo\">VkImageViewCreateInfo</a>::<code>viewType</code> not equal to <code>VK_IMAGE_VIEW_TYPE_3D</code>"
5670        },
5671        {
5672          "vuid": "VUID-VkRenderPassAttachmentBeginInfo-sType-sType",
5673          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO</code>"
5674        },
5675        {
5676          "vuid": "VUID-VkRenderPassAttachmentBeginInfo-pAttachments-parameter",
5677          "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 <a href=\"#VkImageView\">VkImageView</a> handles"
5678        }
5679      ]
5680    },
5681    "vkGetRenderAreaGranularity": {
5682      "core": [
5683        {
5684          "vuid": "VUID-vkGetRenderAreaGranularity-device-parameter",
5685          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
5686        },
5687        {
5688          "vuid": "VUID-vkGetRenderAreaGranularity-renderPass-parameter",
5689          "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRenderPass\">VkRenderPass</a> handle"
5690        },
5691        {
5692          "vuid": "VUID-vkGetRenderAreaGranularity-pGranularity-parameter",
5693          "text": " <code>pGranularity</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkExtent2D\">VkExtent2D</a> structure"
5694        },
5695        {
5696          "vuid": "VUID-vkGetRenderAreaGranularity-renderPass-parent",
5697          "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
5698        }
5699      ]
5700    },
5701    "vkCmdNextSubpass": {
5702      "core": [
5703        {
5704          "vuid": "VUID-vkCmdNextSubpass-None-00909",
5705          "text": " The current subpass index <strong class=\"purple\">must</strong> be less than the number of subpasses in the render pass minus one"
5706        },
5707        {
5708          "vuid": "VUID-vkCmdNextSubpass-commandBuffer-parameter",
5709          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
5710        },
5711        {
5712          "vuid": "VUID-vkCmdNextSubpass-contents-parameter",
5713          "text": " <code>contents</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSubpassContents\">VkSubpassContents</a> value"
5714        },
5715        {
5716          "vuid": "VUID-vkCmdNextSubpass-commandBuffer-recording",
5717          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
5718        },
5719        {
5720          "vuid": "VUID-vkCmdNextSubpass-commandBuffer-cmdpool",
5721          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
5722        },
5723        {
5724          "vuid": "VUID-vkCmdNextSubpass-renderpass",
5725          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
5726        },
5727        {
5728          "vuid": "VUID-vkCmdNextSubpass-bufferlevel",
5729          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
5730        }
5731      ],
5732      "(VK_EXT_transform_feedback)": [
5733        {
5734          "vuid": "VUID-vkCmdNextSubpass-None-02349",
5735          "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
5736        }
5737      ]
5738    },
5739    "vkCmdNextSubpass2": {
5740      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
5741        {
5742          "vuid": "VUID-vkCmdNextSubpass2-None-03102",
5743          "text": " The current subpass index <strong class=\"purple\">must</strong> be less than the number of subpasses in the render pass minus one"
5744        },
5745        {
5746          "vuid": "VUID-vkCmdNextSubpass2-commandBuffer-parameter",
5747          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
5748        },
5749        {
5750          "vuid": "VUID-vkCmdNextSubpass2-pSubpassBeginInfo-parameter",
5751          "text": " <code>pSubpassBeginInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSubpassBeginInfo\">VkSubpassBeginInfo</a> structure"
5752        },
5753        {
5754          "vuid": "VUID-vkCmdNextSubpass2-pSubpassEndInfo-parameter",
5755          "text": " <code>pSubpassEndInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSubpassEndInfo\">VkSubpassEndInfo</a> structure"
5756        },
5757        {
5758          "vuid": "VUID-vkCmdNextSubpass2-commandBuffer-recording",
5759          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
5760        },
5761        {
5762          "vuid": "VUID-vkCmdNextSubpass2-commandBuffer-cmdpool",
5763          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
5764        },
5765        {
5766          "vuid": "VUID-vkCmdNextSubpass2-renderpass",
5767          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
5768        },
5769        {
5770          "vuid": "VUID-vkCmdNextSubpass2-bufferlevel",
5771          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
5772        }
5773      ],
5774      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_EXT_transform_feedback)": [
5775        {
5776          "vuid": "VUID-vkCmdNextSubpass2-None-02350",
5777          "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
5778        }
5779      ]
5780    },
5781    "vkCmdEndRenderPass": {
5782      "core": [
5783        {
5784          "vuid": "VUID-vkCmdEndRenderPass-None-00910",
5785          "text": " The current subpass index <strong class=\"purple\">must</strong> be equal to the number of subpasses in the render pass minus one"
5786        },
5787        {
5788          "vuid": "VUID-vkCmdEndRenderPass-commandBuffer-parameter",
5789          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
5790        },
5791        {
5792          "vuid": "VUID-vkCmdEndRenderPass-commandBuffer-recording",
5793          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
5794        },
5795        {
5796          "vuid": "VUID-vkCmdEndRenderPass-commandBuffer-cmdpool",
5797          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
5798        },
5799        {
5800          "vuid": "VUID-vkCmdEndRenderPass-renderpass",
5801          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
5802        },
5803        {
5804          "vuid": "VUID-vkCmdEndRenderPass-bufferlevel",
5805          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
5806        }
5807      ],
5808      "(VK_EXT_transform_feedback)": [
5809        {
5810          "vuid": "VUID-vkCmdEndRenderPass-None-02351",
5811          "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
5812        }
5813      ]
5814    },
5815    "vkCmdEndRenderPass2": {
5816      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
5817        {
5818          "vuid": "VUID-vkCmdEndRenderPass2-None-03103",
5819          "text": " The current subpass index <strong class=\"purple\">must</strong> be equal to the number of subpasses in the render pass minus one"
5820        },
5821        {
5822          "vuid": "VUID-vkCmdEndRenderPass2-commandBuffer-parameter",
5823          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
5824        },
5825        {
5826          "vuid": "VUID-vkCmdEndRenderPass2-pSubpassEndInfo-parameter",
5827          "text": " <code>pSubpassEndInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSubpassEndInfo\">VkSubpassEndInfo</a> structure"
5828        },
5829        {
5830          "vuid": "VUID-vkCmdEndRenderPass2-commandBuffer-recording",
5831          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
5832        },
5833        {
5834          "vuid": "VUID-vkCmdEndRenderPass2-commandBuffer-cmdpool",
5835          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
5836        },
5837        {
5838          "vuid": "VUID-vkCmdEndRenderPass2-renderpass",
5839          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
5840        },
5841        {
5842          "vuid": "VUID-vkCmdEndRenderPass2-bufferlevel",
5843          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
5844        }
5845      ],
5846      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_EXT_transform_feedback)": [
5847        {
5848          "vuid": "VUID-vkCmdEndRenderPass2-None-02352",
5849          "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
5850        }
5851      ]
5852    },
5853    "VkSubpassEndInfo": {
5854      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
5855        {
5856          "vuid": "VUID-VkSubpassEndInfo-sType-sType",
5857          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_END_INFO</code>"
5858        },
5859        {
5860          "vuid": "VUID-VkSubpassEndInfo-pNext-pNext",
5861          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
5862        }
5863      ]
5864    },
5865    "vkCreateShaderModule": {
5866      "core": [
5867        {
5868          "vuid": "VUID-vkCreateShaderModule-device-parameter",
5869          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
5870        },
5871        {
5872          "vuid": "VUID-vkCreateShaderModule-pCreateInfo-parameter",
5873          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkShaderModuleCreateInfo\">VkShaderModuleCreateInfo</a> structure"
5874        },
5875        {
5876          "vuid": "VUID-vkCreateShaderModule-pAllocator-parameter",
5877          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
5878        },
5879        {
5880          "vuid": "VUID-vkCreateShaderModule-pShaderModule-parameter",
5881          "text": " <code>pShaderModule</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkShaderModule\">VkShaderModule</a> handle"
5882        }
5883      ]
5884    },
5885    "VkShaderModuleCreateInfo": {
5886      "core": [
5887        {
5888          "vuid": "VUID-VkShaderModuleCreateInfo-codeSize-01085",
5889          "text": " <code>codeSize</code> <strong class=\"purple\">must</strong> be greater than 0"
5890        },
5891        {
5892          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01089",
5893          "text": " <code>pCode</code> <strong class=\"purple\">must</strong> declare the <code>Shader</code> capability for SPIR-V code"
5894        },
5895        {
5896          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01090",
5897          "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"
5898        },
5899        {
5900          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01091",
5901          "text": " If <code>pCode</code> declares any of the capabilities listed in the <a href=\"#spirvenv-capabilities-table\">SPIR-V Environment</a> appendix, one of the corresponding requirements <strong class=\"purple\">must</strong> be satisfied"
5902        },
5903        {
5904          "vuid": "VUID-VkShaderModuleCreateInfo-sType-sType",
5905          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO</code>"
5906        },
5907        {
5908          "vuid": "VUID-VkShaderModuleCreateInfo-pNext-pNext",
5909          "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>"
5910        },
5911        {
5912          "vuid": "VUID-VkShaderModuleCreateInfo-sType-unique",
5913          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
5914        },
5915        {
5916          "vuid": "VUID-VkShaderModuleCreateInfo-flags-zerobitmask",
5917          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
5918        },
5919        {
5920          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-parameter",
5921          "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"
5922        }
5923      ],
5924      "!(VK_NV_glsl_shader)": [
5925        {
5926          "vuid": "VUID-VkShaderModuleCreateInfo-codeSize-01086",
5927          "text": " <code>codeSize</code> <strong class=\"purple\">must</strong> be a multiple of 4"
5928        },
5929        {
5930          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01087",
5931          "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>"
5932        },
5933        {
5934          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01088",
5935          "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"
5936        }
5937      ],
5938      "(VK_NV_glsl_shader)": [
5939        {
5940          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01376",
5941          "text": " If <code>pCode</code> is a pointer to SPIR-V code, <code>codeSize</code> <strong class=\"purple\">must</strong> be a multiple of 4"
5942        },
5943        {
5944          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01377",
5945          "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"
5946        },
5947        {
5948          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01378",
5949          "text": " If <code>pCode</code> is a pointer 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"
5950        },
5951        {
5952          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01379",
5953          "text": " If <code>pCode</code> is a pointer 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"
5954        }
5955      ]
5956    },
5957    "VkShaderModuleValidationCacheCreateInfoEXT": {
5958      "(VK_EXT_validation_cache)": [
5959        {
5960          "vuid": "VUID-VkShaderModuleValidationCacheCreateInfoEXT-sType-sType",
5961          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT</code>"
5962        },
5963        {
5964          "vuid": "VUID-VkShaderModuleValidationCacheCreateInfoEXT-validationCache-parameter",
5965          "text": " <code>validationCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkValidationCacheEXT\">VkValidationCacheEXT</a> handle"
5966        }
5967      ]
5968    },
5969    "vkDestroyShaderModule": {
5970      "core": [
5971        {
5972          "vuid": "VUID-vkDestroyShaderModule-shaderModule-01092",
5973          "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"
5974        },
5975        {
5976          "vuid": "VUID-vkDestroyShaderModule-shaderModule-01093",
5977          "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>"
5978        },
5979        {
5980          "vuid": "VUID-vkDestroyShaderModule-device-parameter",
5981          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
5982        },
5983        {
5984          "vuid": "VUID-vkDestroyShaderModule-shaderModule-parameter",
5985          "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 <a href=\"#VkShaderModule\">VkShaderModule</a> handle"
5986        },
5987        {
5988          "vuid": "VUID-vkDestroyShaderModule-pAllocator-parameter",
5989          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
5990        },
5991        {
5992          "vuid": "VUID-vkDestroyShaderModule-shaderModule-parent",
5993          "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>"
5994        }
5995      ]
5996    },
5997    "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV": {
5998      "(VK_NV_cooperative_matrix)": [
5999        {
6000          "vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-physicalDevice-parameter",
6001          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
6002        },
6003        {
6004          "vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-pPropertyCount-parameter",
6005          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
6006        },
6007        {
6008          "vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-pProperties-parameter",
6009          "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> <a href=\"#VkCooperativeMatrixPropertiesNV\">VkCooperativeMatrixPropertiesNV</a> structures"
6010        }
6011      ]
6012    },
6013    "VkCooperativeMatrixPropertiesNV": {
6014      "(VK_NV_cooperative_matrix)": [
6015        {
6016          "vuid": "VUID-VkCooperativeMatrixPropertiesNV-sType-sType",
6017          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV</code>"
6018        },
6019        {
6020          "vuid": "VUID-VkCooperativeMatrixPropertiesNV-pNext-pNext",
6021          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
6022        },
6023        {
6024          "vuid": "VUID-VkCooperativeMatrixPropertiesNV-AType-parameter",
6025          "text": " <code>AType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentTypeNV\">VkComponentTypeNV</a> value"
6026        },
6027        {
6028          "vuid": "VUID-VkCooperativeMatrixPropertiesNV-BType-parameter",
6029          "text": " <code>BType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentTypeNV\">VkComponentTypeNV</a> value"
6030        },
6031        {
6032          "vuid": "VUID-VkCooperativeMatrixPropertiesNV-CType-parameter",
6033          "text": " <code>CType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentTypeNV\">VkComponentTypeNV</a> value"
6034        },
6035        {
6036          "vuid": "VUID-VkCooperativeMatrixPropertiesNV-DType-parameter",
6037          "text": " <code>DType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentTypeNV\">VkComponentTypeNV</a> value"
6038        },
6039        {
6040          "vuid": "VUID-VkCooperativeMatrixPropertiesNV-scope-parameter",
6041          "text": " <code>scope</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkScopeNV\">VkScopeNV</a> value"
6042        }
6043      ]
6044    },
6045    "vkCreateValidationCacheEXT": {
6046      "(VK_EXT_validation_cache)": [
6047        {
6048          "vuid": "VUID-vkCreateValidationCacheEXT-device-parameter",
6049          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
6050        },
6051        {
6052          "vuid": "VUID-vkCreateValidationCacheEXT-pCreateInfo-parameter",
6053          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkValidationCacheCreateInfoEXT\">VkValidationCacheCreateInfoEXT</a> structure"
6054        },
6055        {
6056          "vuid": "VUID-vkCreateValidationCacheEXT-pAllocator-parameter",
6057          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
6058        },
6059        {
6060          "vuid": "VUID-vkCreateValidationCacheEXT-pValidationCache-parameter",
6061          "text": " <code>pValidationCache</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkValidationCacheEXT\">VkValidationCacheEXT</a> handle"
6062        }
6063      ]
6064    },
6065    "VkValidationCacheCreateInfoEXT": {
6066      "(VK_EXT_validation_cache)": [
6067        {
6068          "vuid": "VUID-VkValidationCacheCreateInfoEXT-initialDataSize-01534",
6069          "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"
6070        },
6071        {
6072          "vuid": "VUID-VkValidationCacheCreateInfoEXT-initialDataSize-01535",
6073          "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>"
6074        },
6075        {
6076          "vuid": "VUID-VkValidationCacheCreateInfoEXT-sType-sType",
6077          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT</code>"
6078        },
6079        {
6080          "vuid": "VUID-VkValidationCacheCreateInfoEXT-pNext-pNext",
6081          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
6082        },
6083        {
6084          "vuid": "VUID-VkValidationCacheCreateInfoEXT-flags-zerobitmask",
6085          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
6086        },
6087        {
6088          "vuid": "VUID-VkValidationCacheCreateInfoEXT-pInitialData-parameter",
6089          "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"
6090        }
6091      ]
6092    },
6093    "vkMergeValidationCachesEXT": {
6094      "(VK_EXT_validation_cache)": [
6095        {
6096          "vuid": "VUID-vkMergeValidationCachesEXT-dstCache-01536",
6097          "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> not appear in the list of source caches"
6098        },
6099        {
6100          "vuid": "VUID-vkMergeValidationCachesEXT-device-parameter",
6101          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
6102        },
6103        {
6104          "vuid": "VUID-vkMergeValidationCachesEXT-dstCache-parameter",
6105          "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkValidationCacheEXT\">VkValidationCacheEXT</a> handle"
6106        },
6107        {
6108          "vuid": "VUID-vkMergeValidationCachesEXT-pSrcCaches-parameter",
6109          "text": " <code>pSrcCaches</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>srcCacheCount</code> valid <a href=\"#VkValidationCacheEXT\">VkValidationCacheEXT</a> handles"
6110        },
6111        {
6112          "vuid": "VUID-vkMergeValidationCachesEXT-srcCacheCount-arraylength",
6113          "text": " <code>srcCacheCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
6114        },
6115        {
6116          "vuid": "VUID-vkMergeValidationCachesEXT-dstCache-parent",
6117          "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
6118        },
6119        {
6120          "vuid": "VUID-vkMergeValidationCachesEXT-pSrcCaches-parent",
6121          "text": " Each element of <code>pSrcCaches</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
6122        }
6123      ]
6124    },
6125    "vkGetValidationCacheDataEXT": {
6126      "(VK_EXT_validation_cache)": [
6127        {
6128          "vuid": "VUID-vkGetValidationCacheDataEXT-device-parameter",
6129          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
6130        },
6131        {
6132          "vuid": "VUID-vkGetValidationCacheDataEXT-validationCache-parameter",
6133          "text": " <code>validationCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkValidationCacheEXT\">VkValidationCacheEXT</a> handle"
6134        },
6135        {
6136          "vuid": "VUID-vkGetValidationCacheDataEXT-pDataSize-parameter",
6137          "text": " <code>pDataSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value"
6138        },
6139        {
6140          "vuid": "VUID-vkGetValidationCacheDataEXT-pData-parameter",
6141          "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"
6142        },
6143        {
6144          "vuid": "VUID-vkGetValidationCacheDataEXT-validationCache-parent",
6145          "text": " <code>validationCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
6146        }
6147      ]
6148    },
6149    "vkDestroyValidationCacheEXT": {
6150      "(VK_EXT_validation_cache)": [
6151        {
6152          "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-01537",
6153          "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"
6154        },
6155        {
6156          "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-01538",
6157          "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>"
6158        },
6159        {
6160          "vuid": "VUID-vkDestroyValidationCacheEXT-device-parameter",
6161          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
6162        },
6163        {
6164          "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-parameter",
6165          "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 <a href=\"#VkValidationCacheEXT\">VkValidationCacheEXT</a> handle"
6166        },
6167        {
6168          "vuid": "VUID-vkDestroyValidationCacheEXT-pAllocator-parameter",
6169          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
6170        },
6171        {
6172          "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-parent",
6173          "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>"
6174        }
6175      ]
6176    },
6177    "vkCreateComputePipelines": {
6178      "core": [
6179        {
6180          "vuid": "VUID-vkCreateComputePipelines-flags-00695",
6181          "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"
6182        },
6183        {
6184          "vuid": "VUID-vkCreateComputePipelines-flags-00696",
6185          "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"
6186        },
6187        {
6188          "vuid": "VUID-vkCreateComputePipelines-device-parameter",
6189          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
6190        },
6191        {
6192          "vuid": "VUID-vkCreateComputePipelines-pipelineCache-parameter",
6193          "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 <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle"
6194        },
6195        {
6196          "vuid": "VUID-vkCreateComputePipelines-pCreateInfos-parameter",
6197          "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <a href=\"#VkComputePipelineCreateInfo\">VkComputePipelineCreateInfo</a> structures"
6198        },
6199        {
6200          "vuid": "VUID-vkCreateComputePipelines-pAllocator-parameter",
6201          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
6202        },
6203        {
6204          "vuid": "VUID-vkCreateComputePipelines-pPipelines-parameter",
6205          "text": " <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <a href=\"#VkPipeline\">VkPipeline</a> handles"
6206        },
6207        {
6208          "vuid": "VUID-vkCreateComputePipelines-createInfoCount-arraylength",
6209          "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
6210        },
6211        {
6212          "vuid": "VUID-vkCreateComputePipelines-pipelineCache-parent",
6213          "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>"
6214        }
6215      ],
6216      "(VK_EXT_pipeline_creation_cache_control)": [
6217        {
6218          "vuid": "VUID-vkCreateComputePipelines-pipelineCache-02873",
6219          "text": " If <code>pipelineCache</code> was created with <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT</code>, host access to <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a>"
6220        }
6221      ]
6222    },
6223    "VkComputePipelineCreateInfo": {
6224      "core": [
6225        {
6226          "vuid": "VUID-VkComputePipelineCreateInfo-flags-00697",
6227          "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>"
6228        },
6229        {
6230          "vuid": "VUID-VkComputePipelineCreateInfo-flags-00698",
6231          "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"
6232        },
6233        {
6234          "vuid": "VUID-VkComputePipelineCreateInfo-flags-00699",
6235          "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>"
6236        },
6237        {
6238          "vuid": "VUID-VkComputePipelineCreateInfo-flags-00700",
6239          "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"
6240        },
6241        {
6242          "vuid": "VUID-VkComputePipelineCreateInfo-stage-00701",
6243          "text": " The <code>stage</code> member of <code>stage</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_COMPUTE_BIT</code>"
6244        },
6245        {
6246          "vuid": "VUID-VkComputePipelineCreateInfo-stage-00702",
6247          "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"
6248        },
6249        {
6250          "vuid": "VUID-VkComputePipelineCreateInfo-layout-00703",
6251          "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>"
6252        },
6253        {
6254          "vuid": "VUID-VkComputePipelineCreateInfo-layout-01687",
6255          "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>"
6256        },
6257        {
6258          "vuid": "VUID-VkComputePipelineCreateInfo-sType-sType",
6259          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO</code>"
6260        },
6261        {
6262          "vuid": "VUID-VkComputePipelineCreateInfo-pNext-pNext",
6263          "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=\"#VkPipelineCompilerControlCreateInfoAMD\">VkPipelineCompilerControlCreateInfoAMD</a> or <a href=\"#VkPipelineCreationFeedbackCreateInfoEXT\">VkPipelineCreationFeedbackCreateInfoEXT</a>"
6264        },
6265        {
6266          "vuid": "VUID-VkComputePipelineCreateInfo-sType-unique",
6267          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
6268        },
6269        {
6270          "vuid": "VUID-VkComputePipelineCreateInfo-flags-parameter",
6271          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values"
6272        },
6273        {
6274          "vuid": "VUID-VkComputePipelineCreateInfo-stage-parameter",
6275          "text": " <code>stage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a> structure"
6276        },
6277        {
6278          "vuid": "VUID-VkComputePipelineCreateInfo-layout-parameter",
6279          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle"
6280        },
6281        {
6282          "vuid": "VUID-VkComputePipelineCreateInfo-commonparent",
6283          "text": " Both of <code>basePipelineHandle</code>, and <code>layout</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
6284        }
6285      ],
6286      "(VK_KHR_pipeline_library)": [
6287        {
6288          "vuid": "VUID-VkComputePipelineCreateInfo-flags-03364",
6289          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>"
6290        }
6291      ],
6292      "(VK_KHR_ray_tracing)": [
6293        {
6294          "vuid": "VUID-VkComputePipelineCreateInfo-flags-03365",
6295          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>"
6296        },
6297        {
6298          "vuid": "VUID-VkComputePipelineCreateInfo-flags-03366",
6299          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>"
6300        },
6301        {
6302          "vuid": "VUID-VkComputePipelineCreateInfo-flags-03367",
6303          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code>"
6304        },
6305        {
6306          "vuid": "VUID-VkComputePipelineCreateInfo-flags-03368",
6307          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>"
6308        },
6309        {
6310          "vuid": "VUID-VkComputePipelineCreateInfo-flags-03369",
6311          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR</code>"
6312        },
6313        {
6314          "vuid": "VUID-VkComputePipelineCreateInfo-flags-03370",
6315          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR</code>"
6316        }
6317      ],
6318      "(VK_NV_device_generated_commands)": [
6319        {
6320          "vuid": "VUID-VkComputePipelineCreateInfo-flags-02874",
6321          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>"
6322        }
6323      ],
6324      "(VK_EXT_pipeline_creation_cache_control)": [
6325        {
6326          "vuid": "VUID-VkComputePipelineCreateInfo-pipelineCreationCacheControl-02875",
6327          "text": " If the <a href=\"#features-pipelineCreationCacheControl\"><code>pipelineCreationCacheControl</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT</code> or <code>VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT</code>"
6328        }
6329      ]
6330    },
6331    "VkPipelineShaderStageCreateInfo": {
6332      "core": [
6333        {
6334          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00704",
6335          "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>"
6336        },
6337        {
6338          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00705",
6339          "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>"
6340        },
6341        {
6342          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00706",
6343          "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>"
6344        },
6345        {
6346          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pName-00707",
6347          "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>"
6348        },
6349        {
6350          "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxClipDistances-00708",
6351          "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>"
6352        },
6353        {
6354          "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxCullDistances-00709",
6355          "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>"
6356        },
6357        {
6358          "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxCombinedClipAndCullDistances-00710",
6359          "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>"
6360        },
6361        {
6362          "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxSampleMaskWords-00711",
6363          "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>"
6364        },
6365        {
6366          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00712",
6367          "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>"
6368        },
6369        {
6370          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00713",
6371          "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>"
6372        },
6373        {
6374          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00714",
6375          "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>"
6376        },
6377        {
6378          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00715",
6379          "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>"
6380        },
6381        {
6382          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02596",
6383          "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"
6384        },
6385        {
6386          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02597",
6387          "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"
6388        },
6389        {
6390          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00718",
6391          "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>"
6392        },
6393        {
6394          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00719",
6395          "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"
6396        },
6397        {
6398          "vuid": "VUID-VkPipelineShaderStageCreateInfo-sType-sType",
6399          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO</code>"
6400        },
6401        {
6402          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-pNext",
6403          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT</a>"
6404        },
6405        {
6406          "vuid": "VUID-VkPipelineShaderStageCreateInfo-sType-unique",
6407          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
6408        },
6409        {
6410          "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-parameter",
6411          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineShaderStageCreateFlagBits\">VkPipelineShaderStageCreateFlagBits</a> values"
6412        },
6413        {
6414          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-parameter",
6415          "text": " <code>stage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> value"
6416        },
6417        {
6418          "vuid": "VUID-VkPipelineShaderStageCreateInfo-module-parameter",
6419          "text": " <code>module</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderModule\">VkShaderModule</a> handle"
6420        },
6421        {
6422          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pName-parameter",
6423          "text": " <code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
6424        },
6425        {
6426          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-parameter",
6427          "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 <a href=\"#VkSpecializationInfo\">VkSpecializationInfo</a> structure"
6428        }
6429      ],
6430      "(VK_NV_mesh_shader)": [
6431        {
6432          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02091",
6433          "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>"
6434        },
6435        {
6436          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02092",
6437          "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>"
6438        },
6439        {
6440          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02093",
6441          "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>"
6442        },
6443        {
6444          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02094",
6445          "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>"
6446        }
6447      ],
6448      "(VK_EXT_shader_stencil_export)": [
6449        {
6450          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-01511",
6451          "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"
6452        }
6453      ],
6454      "(VK_EXT_subgroup_size_control)": [
6455        {
6456          "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-02784",
6457          "text": " If <code>flags</code> has the <code>VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT</code> flag set, the <a href=\"#features-subgroupSizeControl\"><code>subgroupSizeControl</code></a> feature <strong class=\"purple\">must</strong> be enabled"
6458        },
6459        {
6460          "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-02785",
6461          "text": " If <code>flags</code> has the <code>VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT</code> flag set, the <a href=\"#features-computeFullSubgroups\"><code>computeFullSubgroups</code></a> feature <strong class=\"purple\">must</strong> be enabled"
6462        },
6463        {
6464          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-02754",
6465          "text": " If a <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT</a> structure is included in the <code>pNext</code> chain, <code>flags</code> <strong class=\"purple\">must</strong> not have the <code>VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT</code> flag set"
6466        },
6467        {
6468          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-02755",
6469          "text": " If a <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT</a> structure is included in the <code>pNext</code> chain, the <a href=\"#features-subgroupSizeControl\"><code>subgroupSizeControl</code></a> feature <strong class=\"purple\">must</strong> be enabled, and <code>stage</code> <strong class=\"purple\">must</strong> be a valid bit specified in <a href=\"#limits-required-subgroup-size-stages\"><code>requiredSubgroupSizeStages</code></a>"
6470        },
6471        {
6472          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-02756",
6473          "text": " If a <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT</a> structure is included in the <code>pNext</code> chain and <code>stage</code> is <code>VK_SHADER_STAGE_COMPUTE_BIT</code>, the local workgroup size of the shader <strong class=\"purple\">must</strong> be less than or equal to the product of <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT</a>::<code>requiredSubgroupSize</code> and <a href=\"#limits-max-subgroups-per-workgroup\"><code>maxComputeWorkgroupSubgroups</code></a>"
6474        },
6475        {
6476          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-02757",
6477          "text": " If a <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT</a> structure is included in the <code>pNext</code> chain, and <code>flags</code> has the <code>VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT</code> flag set, the local workgroup size in the X dimension of the pipeline <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT</a>::<code>requiredSubgroupSize</code>"
6478        },
6479        {
6480          "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-02758",
6481          "text": " If <code>flags</code> has both the <code>VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT</code> and <code>VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT</code> flags set, the local workgroup size in the X dimension of the pipeline <strong class=\"purple\">must</strong> be a multiple of <a href=\"#limits-max-subgroup-size\"><code>maxSubgroupSize</code></a>"
6482        },
6483        {
6484          "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-02759",
6485          "text": " If <code>flags</code> has the <code>VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT</code> flag set and <code>flags</code> does not have the <code>VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT</code> flag set and no <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT</a> structure is included in the <code>pNext</code> chain, the local workgroup size in the X dimension of the pipeline <strong class=\"purple\">must</strong> be a multiple of <a href=\"#limits-subgroup-size\"><code>subgroupSize</code></a>"
6486        }
6487      ]
6488    },
6489    "VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT": {
6490      "(VK_EXT_subgroup_size_control)": [
6491        {
6492          "vuid": "VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT-requiredSubgroupSize-02760",
6493          "text": " <code>requiredSubgroupSize</code> <strong class=\"purple\">must</strong> be a power-of-two integer"
6494        },
6495        {
6496          "vuid": "VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT-requiredSubgroupSize-02761",
6497          "text": " <code>requiredSubgroupSize</code> <strong class=\"purple\">must</strong> be greater or equal to <a href=\"#limits-min-subgroup-size\">minSubgroupSize</a>"
6498        },
6499        {
6500          "vuid": "VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT-requiredSubgroupSize-02762",
6501          "text": " <code>requiredSubgroupSize</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-max-subgroup-size\">maxSubgroupSize</a>"
6502        },
6503        {
6504          "vuid": "VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT-sType-sType",
6505          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT</code>"
6506        }
6507      ]
6508    },
6509    "vkCreateGraphicsPipelines": {
6510      "core": [
6511        {
6512          "vuid": "VUID-vkCreateGraphicsPipelines-flags-00720",
6513          "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"
6514        },
6515        {
6516          "vuid": "VUID-vkCreateGraphicsPipelines-flags-00721",
6517          "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"
6518        },
6519        {
6520          "vuid": "VUID-vkCreateGraphicsPipelines-device-parameter",
6521          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
6522        },
6523        {
6524          "vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-parameter",
6525          "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 <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle"
6526        },
6527        {
6528          "vuid": "VUID-vkCreateGraphicsPipelines-pCreateInfos-parameter",
6529          "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a> structures"
6530        },
6531        {
6532          "vuid": "VUID-vkCreateGraphicsPipelines-pAllocator-parameter",
6533          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
6534        },
6535        {
6536          "vuid": "VUID-vkCreateGraphicsPipelines-pPipelines-parameter",
6537          "text": " <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <a href=\"#VkPipeline\">VkPipeline</a> handles"
6538        },
6539        {
6540          "vuid": "VUID-vkCreateGraphicsPipelines-createInfoCount-arraylength",
6541          "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
6542        },
6543        {
6544          "vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-parent",
6545          "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>"
6546        }
6547      ],
6548      "(VK_EXT_pipeline_creation_cache_control)": [
6549        {
6550          "vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-02876",
6551          "text": " If <code>pipelineCache</code> was created with <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT</code>, host access to <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a>"
6552        }
6553      ]
6554    },
6555    "VkGraphicsPipelineCreateInfo": {
6556      "core": [
6557        {
6558          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00722",
6559          "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>"
6560        },
6561        {
6562          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00723",
6563          "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"
6564        },
6565        {
6566          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00724",
6567          "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>"
6568        },
6569        {
6570          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00725",
6571          "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"
6572        },
6573        {
6574          "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-00726",
6575          "text": " The <code>stage</code> member of each element of <code>pStages</code> <strong class=\"purple\">must</strong> be unique"
6576        },
6577        {
6578          "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-00728",
6579          "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>"
6580        },
6581        {
6582          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00729",
6583          "text": " If <code>pStages</code> includes a tessellation control shader stage, it <strong class=\"purple\">must</strong> include a tessellation evaluation shader stage"
6584        },
6585        {
6586          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00730",
6587          "text": " If <code>pStages</code> includes a tessellation evaluation shader stage, it <strong class=\"purple\">must</strong> include a tessellation control shader stage"
6588        },
6589        {
6590          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00731",
6591          "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 <a href=\"#VkPipelineTessellationStateCreateInfo\">VkPipelineTessellationStateCreateInfo</a> structure"
6592        },
6593        {
6594          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00732",
6595          "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"
6596        },
6597        {
6598          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00733",
6599          "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"
6600        },
6601        {
6602          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00734",
6603          "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"
6604        },
6605        {
6606          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00735",
6607          "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"
6608        },
6609        {
6610          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00736",
6611          "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>"
6612        },
6613        {
6614          "vuid": "VUID-VkGraphicsPipelineCreateInfo-topology-00737",
6615          "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"
6616        },
6617        {
6618          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00738",
6619          "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>"
6620        },
6621        {
6622          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00739",
6623          "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"
6624        },
6625        {
6626          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00740",
6627          "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"
6628        },
6629        {
6630          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00741",
6631          "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>"
6632        },
6633        {
6634          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00742",
6635          "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"
6636        },
6637        {
6638          "vuid": "VUID-VkGraphicsPipelineCreateInfo-blendEnable-02023",
6639          "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>"
6640        },
6641        {
6642          "vuid": "VUID-VkGraphicsPipelineCreateInfo-attachmentCount-00746",
6643          "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>"
6644        },
6645        {
6646          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00747",
6647          "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-&gt;viewportCount</code> valid <code>VkViewport</code> structures"
6648        },
6649        {
6650          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00748",
6651          "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-&gt;scissorCount</code> <code>VkRect2D</code> structures"
6652        },
6653        {
6654          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00749",
6655          "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>"
6656        },
6657        {
6658          "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00750",
6659          "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 <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a> structure"
6660        },
6661        {
6662          "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00751",
6663          "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 <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure"
6664        },
6665        {
6666          "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00752",
6667          "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 <a href=\"#VkPipelineDepthStencilStateCreateInfo\">VkPipelineDepthStencilStateCreateInfo</a> structure"
6668        },
6669        {
6670          "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00753",
6671          "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 <a href=\"#VkPipelineColorBlendStateCreateInfo\">VkPipelineColorBlendStateCreateInfo</a> structure"
6672        },
6673        {
6674          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00754",
6675          "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>"
6676        },
6677        {
6678          "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-00756",
6679          "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>"
6680        },
6681        {
6682          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00757",
6683          "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"
6684        },
6685        {
6686          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00758",
6687          "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>"
6688        },
6689        {
6690          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00759",
6691          "text": " <code>subpass</code> <strong class=\"purple\">must</strong> be a valid subpass within <code>renderPass</code>"
6692        },
6693        {
6694          "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-01688",
6695          "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>"
6696        },
6697        {
6698          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02097",
6699          "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"
6700        },
6701        {
6702          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02098",
6703          "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"
6704        },
6705        {
6706          "vuid": "VUID-VkGraphicsPipelineCreateInfo-sType-sType",
6707          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO</code>"
6708        },
6709        {
6710          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pNext-pNext",
6711          "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=\"#VkGraphicsPipelineShaderGroupsCreateInfoNV\">VkGraphicsPipelineShaderGroupsCreateInfoNV</a>, <a href=\"#VkPipelineCompilerControlCreateInfoAMD\">VkPipelineCompilerControlCreateInfoAMD</a>, <a href=\"#VkPipelineCreationFeedbackCreateInfoEXT\">VkPipelineCreationFeedbackCreateInfoEXT</a>, <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a>, or <a href=\"#VkPipelineRepresentativeFragmentTestStateCreateInfoNV\">VkPipelineRepresentativeFragmentTestStateCreateInfoNV</a>"
6712        },
6713        {
6714          "vuid": "VUID-VkGraphicsPipelineCreateInfo-sType-unique",
6715          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
6716        },
6717        {
6718          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-parameter",
6719          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values"
6720        },
6721        {
6722          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-parameter",
6723          "text": " <code>pStages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stageCount</code> valid <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a> structures"
6724        },
6725        {
6726          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-parameter",
6727          "text": " <code>pRasterizationState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineRasterizationStateCreateInfo\">VkPipelineRasterizationStateCreateInfo</a> structure"
6728        },
6729        {
6730          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-parameter",
6731          "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 <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a> structure"
6732        },
6733        {
6734          "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-parameter",
6735          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle"
6736        },
6737        {
6738          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-parameter",
6739          "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRenderPass\">VkRenderPass</a> handle"
6740        },
6741        {
6742          "vuid": "VUID-VkGraphicsPipelineCreateInfo-stageCount-arraylength",
6743          "text": " <code>stageCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
6744        },
6745        {
6746          "vuid": "VUID-VkGraphicsPipelineCreateInfo-commonparent",
6747          "text": " Each of <code>basePipelineHandle</code>, <code>layout</code>, and <code>renderPass</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
6748        }
6749      ],
6750      "!(VK_NV_mesh_shader)": [
6751        {
6752          "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-00727",
6753          "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>"
6754        }
6755      ],
6756      "(VK_NV_mesh_shader)": [
6757        {
6758          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02095",
6759          "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>)"
6760        },
6761        {
6762          "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-02096",
6763          "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>"
6764        }
6765      ],
6766      "!(VK_VERSION_1_1,VK_KHR_maintenance2)": [
6767        {
6768          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00743",
6769          "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>"
6770        },
6771        {
6772          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00744",
6773          "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>"
6774        }
6775      ],
6776      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
6777        {
6778          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01756",
6779          "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>"
6780        },
6781        {
6782          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01757",
6783          "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>"
6784        }
6785      ],
6786      "!(VK_EXT_depth_range_unrestricted)": [
6787        {
6788          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00755",
6789          "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"
6790        }
6791      ],
6792      "(VK_EXT_depth_range_unrestricted)": [
6793        {
6794          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-02510",
6795          "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"
6796        }
6797      ],
6798      "(VK_EXT_sample_locations)": [
6799        {
6800          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01521",
6801          "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 included in 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>"
6802        },
6803        {
6804          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01522",
6805          "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 included in 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>"
6806        },
6807        {
6808          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01523",
6809          "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 included in 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>"
6810        },
6811        {
6812          "vuid": "VUID-VkGraphicsPipelineCreateInfo-sampleLocationsEnable-01524",
6813          "text": " If the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure included in 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>"
6814        }
6815      ],
6816      "(VK_AMD_mixed_attachment_samples)": [
6817        {
6818          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01505",
6819          "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"
6820        }
6821      ],
6822      "(VK_NV_framebuffer_mixed_samples)": [
6823        {
6824          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01411",
6825          "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"
6826        },
6827        {
6828          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01412",
6829          "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"
6830        }
6831      ],
6832      "(VK_NV_coverage_reduction_mode)": [
6833        {
6834          "vuid": "VUID-VkGraphicsPipelineCreateInfo-coverageReductionMode-02722",
6835          "text": " If the <code>VK_NV_coverage_reduction_mode</code> extension is enabled, the coverage reduction mode specified by <a href=\"#VkPipelineCoverageReductionStateCreateInfoNV\">VkPipelineCoverageReductionStateCreateInfoNV</a>::<code>coverageReductionMode</code>, the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> and the sample counts for the color and depth/stencil attachments (if the subpass has them) <strong class=\"purple\">must</strong> be a valid combination returned by <code>vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV</code>"
6836        }
6837      ],
6838      "(VK_VERSION_1_1,VK_KHR_multiview)": [
6839        {
6840          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00760",
6841          "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"
6842        },
6843        {
6844          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00761",
6845          "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"
6846        },
6847        {
6848          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00762",
6849          "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"
6850        },
6851        {
6852          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00763",
6853          "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"
6854        }
6855      ],
6856      "(VK_VERSION_1_1,VK_KHR_device_group)": [
6857        {
6858          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00764",
6859          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not contain the <code>VK_PIPELINE_CREATE_DISPATCH_BASE</code> flag"
6860        }
6861      ],
6862      "(VK_VERSION_1_1,VK_KHR_maintenance2,VK_KHR_create_renderpass2)": [
6863        {
6864          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-01565",
6865          "text": " If <code>pStages</code> includes a fragment shader stage and an input attachment was referenced by an <code>aspectMask</code> at <code>renderPass</code> creation time, its shader code <strong class=\"purple\">must</strong> only read from the aspects that were specified for that input attachment"
6866        }
6867      ],
6868      "(VK_NV_clip_space_w_scaling)": [
6869        {
6870          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01715",
6871          "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, included in 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"
6872        }
6873      ],
6874      "(VK_NV_scissor_exclusive)": [
6875        {
6876          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04056",
6877          "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code>, and if <code>pViewportState-&gt;pNext</code> chain includes a <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> structure, and if its <code>exclusiveScissorCount</code> member is not <code>0</code>, then its <code>pExclusiveScissors</code> member <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>exclusiveScissorCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures"
6878        }
6879      ],
6880      "(VK_NV_shading_rate_image)": [
6881        {
6882          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04057",
6883          "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>, and if <code>pViewportState-&gt;pNext</code> chain includes a <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a> structure, then its <code>pShadingRatePalettes</code> member <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <a href=\"#VkShadingRatePaletteNV\">VkShadingRatePaletteNV</a> structures"
6884        }
6885      ],
6886      "(VK_EXT_discard_rectangles)": [
6887        {
6888          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04058",
6889          "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code>, and if <code>pNext</code> chain includes a <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a> structure, and if its <code>discardRectangleCount</code> member is not <code>0</code>, then its <code>pDiscardRectangles</code> member <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>discardRectangleCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures"
6890        }
6891      ],
6892      "(VK_EXT_transform_feedback)": [
6893        {
6894          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02317",
6895          "text": " The <code>Xfb</code> execution mode <strong class=\"purple\">can</strong> be specified by only one shader stage in <code>pStages</code>"
6896        },
6897        {
6898          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02318",
6899          "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"
6900        },
6901        {
6902          "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02319",
6903          "text": " If a <a href=\"#VkPipelineRasterizationStateStreamCreateInfoEXT\">VkPipelineRasterizationStateStreamCreateInfoEXT</a>::<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>"
6904        },
6905        {
6906          "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02320",
6907          "text": " If <a href=\"#VkPipelineRasterizationStateStreamCreateInfoEXT\">VkPipelineRasterizationStateStreamCreateInfoEXT</a>::<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"
6908        },
6909        {
6910          "vuid": "VUID-VkGraphicsPipelineCreateInfo-geometryStreams-02321",
6911          "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"
6912        }
6913      ],
6914      "(VK_EXT_transform_feedback)+(VK_NV_mesh_shader)": [
6915        {
6916          "vuid": "VUID-VkGraphicsPipelineCreateInfo-None-02322",
6917          "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"
6918        }
6919      ],
6920      "(VK_EXT_line_rasterization)": [
6921        {
6922          "vuid": "VUID-VkGraphicsPipelineCreateInfo-lineRasterizationMode-02766",
6923          "text": " If the <code>lineRasterizationMode</code> member of a <a href=\"#VkPipelineRasterizationLineStateCreateInfoEXT\">VkPipelineRasterizationLineStateCreateInfoEXT</a> structure included in the <code>pNext</code> chain of <code>pRasterizationState</code> is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT</code> or <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT</code> and if rasterization is enabled, then the <code>alphaToCoverageEnable</code>, <code>alphaToOneEnable</code>, and <code>sampleShadingEnable</code> members of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> all be <code>VK_FALSE</code>"
6924        },
6925        {
6926          "vuid": "VUID-VkGraphicsPipelineCreateInfo-stippledLineEnable-02767",
6927          "text": " If the <code>stippledLineEnable</code> member of <a href=\"#VkPipelineRasterizationLineStateCreateInfoEXT\">VkPipelineRasterizationLineStateCreateInfoEXT</a> is <code>VK_TRUE</code> and no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_LINE_STIPPLE_EXT</code>, then the <code>lineStippleFactor</code> member of <a href=\"#VkPipelineRasterizationLineStateCreateInfoEXT\">VkPipelineRasterizationLineStateCreateInfoEXT</a> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[1,256]</span>"
6928        }
6929      ],
6930      "(VK_KHR_pipeline_library)": [
6931        {
6932          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03371",
6933          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>"
6934        }
6935      ],
6936      "(VK_KHR_ray_tracing)": [
6937        {
6938          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03372",
6939          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>"
6940        },
6941        {
6942          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03373",
6943          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>"
6944        },
6945        {
6946          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03374",
6947          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code>"
6948        },
6949        {
6950          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03375",
6951          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>"
6952        },
6953        {
6954          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03376",
6955          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR</code>"
6956        },
6957        {
6958          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03377",
6959          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR</code>"
6960        }
6961      ],
6962      "(VK_EXT_extended_dynamic_state)": [
6963        {
6964          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03378",
6965          "text": " If the <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_CULL_MODE_EXT</code>, <code>VK_DYNAMIC_STATE_FRONT_FACE_EXT</code>, <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT</code>, <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code>, <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code>, <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT</code>, <code>VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT</code>, <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT</code>, <code>VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT</code>, <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT</code>, <code>VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT</code>, or <code>VK_DYNAMIC_STATE_STENCIL_OP_EXT</code>"
6966        },
6967        {
6968          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03379",
6969          "text": " If <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> is included in the <code>pDynamicStates</code> array then <code>viewportCount</code> <strong class=\"purple\">must</strong> be zero"
6970        },
6971        {
6972          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03380",
6973          "text": " If <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> is included in the <code>pDynamicStates</code> array then <code>scissorCount</code> <strong class=\"purple\">must</strong> be zero"
6974        }
6975      ],
6976      "(VK_NV_device_generated_commands)": [
6977        {
6978          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-02877",
6979          "text": " If <code>flags</code> includes <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>, then the <a href=\"#feature-device-generated-commands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
6980        }
6981      ],
6982      "(VK_NV_device_generated_commands)+(VK_EXT_transform_feedback)": [
6983        {
6984          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-02966",
6985          "text": " If <code>flags</code> includes <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>, then all stages <strong class=\"purple\">must</strong> not specify <code>Xfb</code> execution mode"
6986        }
6987      ],
6988      "(VK_EXT_pipeline_creation_cache_control)": [
6989        {
6990          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pipelineCreationCacheControl-02878",
6991          "text": " If the <a href=\"#features-pipelineCreationCacheControl\"><code>pipelineCreationCacheControl</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT</code> or <code>VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT</code>"
6992        }
6993      ]
6994    },
6995    "VkPipelineDynamicStateCreateInfo": {
6996      "core": [
6997        {
6998          "vuid": "VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-01442",
6999          "text": " Each element of <code>pDynamicStates</code> <strong class=\"purple\">must</strong> be unique"
7000        },
7001        {
7002          "vuid": "VUID-VkPipelineDynamicStateCreateInfo-sType-sType",
7003          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO</code>"
7004        },
7005        {
7006          "vuid": "VUID-VkPipelineDynamicStateCreateInfo-pNext-pNext",
7007          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7008        },
7009        {
7010          "vuid": "VUID-VkPipelineDynamicStateCreateInfo-flags-zerobitmask",
7011          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
7012        },
7013        {
7014          "vuid": "VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-parameter",
7015          "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"
7016        }
7017      ]
7018    },
7019    "VkGraphicsPipelineShaderGroupsCreateInfoNV": {
7020      "(VK_NV_device_generated_commands)": [
7021        {
7022          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-groupCount-02879",
7023          "text": " <code>groupCount</code> <strong class=\"purple\">must</strong> be at least <code>1</code> and as maximum <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>maxGraphicsShaderGroupCount</code>"
7024        },
7025        {
7026          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-groupCount-02880",
7027          "text": " The sum of <code>groupCount</code> including those groups added from referenced <code>pPipelines</code> <strong class=\"purple\">must</strong> also be as maximum <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>maxGraphicsShaderGroupCount</code>"
7028        },
7029        {
7030          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02881",
7031          "text": " The state of the first element of <code>pGroups</code> <strong class=\"purple\">must</strong> match its equivalent within the parent&#8217;s <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>"
7032        },
7033        {
7034          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02882",
7035          "text": " Each element of <code>pGroups</code> <strong class=\"purple\">must</strong> in combination with the rest of the pipeline state yield a valid state configuration"
7036        },
7037        {
7038          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pPipelines-02886",
7039          "text": " Each element of the <code>pPipelines</code> member of <code>libraries</code> <strong class=\"purple\">must</strong> have been created with identical state to the pipeline currently created except the state that can be overriden by <a href=\"#VkGraphicsShaderGroupCreateInfoNV\">VkGraphicsShaderGroupCreateInfoNV</a>"
7040        },
7041        {
7042          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-deviceGeneratedCommands-02887",
7043          "text": " The <a href=\"#feature-device-generated-commands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
7044        },
7045        {
7046          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-sType-sType",
7047          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV</code>"
7048        },
7049        {
7050          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-parameter",
7051          "text": " <code>pGroups</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>groupCount</code> valid <a href=\"#VkGraphicsShaderGroupCreateInfoNV\">VkGraphicsShaderGroupCreateInfoNV</a> structures"
7052        },
7053        {
7054          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pPipelines-parameter",
7055          "text": " If <code>pipelineCount</code> is not <code>0</code>, <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pipelineCount</code> valid <a href=\"#VkPipeline\">VkPipeline</a> handles"
7056        },
7057        {
7058          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-groupCount-arraylength",
7059          "text": " <code>groupCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
7060        }
7061      ],
7062      "(VK_NV_device_generated_commands)+!(VK_NV_mesh_shader)": [
7063        {
7064          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02883",
7065          "text": " All elements of <code>pGroups</code> <strong class=\"purple\">must</strong> use the same shader stage combinations"
7066        }
7067      ],
7068      "(VK_NV_device_generated_commands)+(VK_NV_mesh_shader)": [
7069        {
7070          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02884",
7071          "text": " All elements of <code>pGroups</code> <strong class=\"purple\">must</strong> use the same shader stage combinations unless any mesh shader stage is used, then either combination of task and mesh or just mesh shader is valid"
7072        },
7073        {
7074          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02885",
7075          "text": " Mesh and regular primitive shading stages cannot be mixed across <code>pGroups</code>"
7076        }
7077      ]
7078    },
7079    "VkGraphicsShaderGroupCreateInfoNV": {
7080      "(VK_NV_device_generated_commands)": [
7081        {
7082          "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-stageCount-02888",
7083          "text": " For <code>stageCount</code>, the same restrictions as in <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>stageCount</code> apply"
7084        },
7085        {
7086          "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-pStages-02889",
7087          "text": " For <code>pStages</code>, the same restrictions as in <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> apply"
7088        },
7089        {
7090          "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-pVertexInputState-02890",
7091          "text": " For <code>pVertexInputState</code>, the same restrictions as in <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pVertexInputState</code> apply"
7092        },
7093        {
7094          "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-pTessellationState-02891",
7095          "text": " For <code>pTessellationState</code>, the same restrictions as in <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pTessellationState</code> apply"
7096        },
7097        {
7098          "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-sType-sType",
7099          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV</code>"
7100        },
7101        {
7102          "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-pNext-pNext",
7103          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7104        },
7105        {
7106          "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-pStages-parameter",
7107          "text": " <code>pStages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stageCount</code> valid <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a> structures"
7108        },
7109        {
7110          "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-stageCount-arraylength",
7111          "text": " <code>stageCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
7112        }
7113      ]
7114    },
7115    "vkDestroyPipeline": {
7116      "core": [
7117        {
7118          "vuid": "VUID-vkDestroyPipeline-pipeline-00765",
7119          "text": " All submitted commands that refer to <code>pipeline</code> <strong class=\"purple\">must</strong> have completed execution"
7120        },
7121        {
7122          "vuid": "VUID-vkDestroyPipeline-pipeline-00766",
7123          "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"
7124        },
7125        {
7126          "vuid": "VUID-vkDestroyPipeline-pipeline-00767",
7127          "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>"
7128        },
7129        {
7130          "vuid": "VUID-vkDestroyPipeline-device-parameter",
7131          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
7132        },
7133        {
7134          "vuid": "VUID-vkDestroyPipeline-pipeline-parameter",
7135          "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 <a href=\"#VkPipeline\">VkPipeline</a> handle"
7136        },
7137        {
7138          "vuid": "VUID-vkDestroyPipeline-pAllocator-parameter",
7139          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
7140        },
7141        {
7142          "vuid": "VUID-vkDestroyPipeline-pipeline-parent",
7143          "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>"
7144        }
7145      ]
7146    },
7147    "vkCreatePipelineCache": {
7148      "core": [
7149        {
7150          "vuid": "VUID-vkCreatePipelineCache-device-parameter",
7151          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
7152        },
7153        {
7154          "vuid": "VUID-vkCreatePipelineCache-pCreateInfo-parameter",
7155          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineCacheCreateInfo\">VkPipelineCacheCreateInfo</a> structure"
7156        },
7157        {
7158          "vuid": "VUID-vkCreatePipelineCache-pAllocator-parameter",
7159          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
7160        },
7161        {
7162          "vuid": "VUID-vkCreatePipelineCache-pPipelineCache-parameter",
7163          "text": " <code>pPipelineCache</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle"
7164        }
7165      ]
7166    },
7167    "VkPipelineCacheCreateInfo": {
7168      "core": [
7169        {
7170          "vuid": "VUID-VkPipelineCacheCreateInfo-initialDataSize-00768",
7171          "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"
7172        },
7173        {
7174          "vuid": "VUID-VkPipelineCacheCreateInfo-initialDataSize-00769",
7175          "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>"
7176        },
7177        {
7178          "vuid": "VUID-VkPipelineCacheCreateInfo-sType-sType",
7179          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO</code>"
7180        },
7181        {
7182          "vuid": "VUID-VkPipelineCacheCreateInfo-pNext-pNext",
7183          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7184        },
7185        {
7186          "vuid": "VUID-VkPipelineCacheCreateInfo-flags-parameter",
7187          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCacheCreateFlagBits\">VkPipelineCacheCreateFlagBits</a> values"
7188        },
7189        {
7190          "vuid": "VUID-VkPipelineCacheCreateInfo-pInitialData-parameter",
7191          "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"
7192        }
7193      ],
7194      "(VK_EXT_pipeline_creation_cache_control)": [
7195        {
7196          "vuid": "VUID-VkPipelineCacheCreateInfo-pipelineCreationCacheControl-02892",
7197          "text": " If the <a href=\"#features-pipelineCreationCacheControl\"><code>pipelineCreationCacheControl</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT</code>"
7198        }
7199      ]
7200    },
7201    "vkMergePipelineCaches": {
7202      "core": [
7203        {
7204          "vuid": "VUID-vkMergePipelineCaches-dstCache-00770",
7205          "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> not appear in the list of source caches"
7206        },
7207        {
7208          "vuid": "VUID-vkMergePipelineCaches-device-parameter",
7209          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
7210        },
7211        {
7212          "vuid": "VUID-vkMergePipelineCaches-dstCache-parameter",
7213          "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle"
7214        },
7215        {
7216          "vuid": "VUID-vkMergePipelineCaches-pSrcCaches-parameter",
7217          "text": " <code>pSrcCaches</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>srcCacheCount</code> valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handles"
7218        },
7219        {
7220          "vuid": "VUID-vkMergePipelineCaches-srcCacheCount-arraylength",
7221          "text": " <code>srcCacheCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
7222        },
7223        {
7224          "vuid": "VUID-vkMergePipelineCaches-dstCache-parent",
7225          "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
7226        },
7227        {
7228          "vuid": "VUID-vkMergePipelineCaches-pSrcCaches-parent",
7229          "text": " Each element of <code>pSrcCaches</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
7230        }
7231      ]
7232    },
7233    "vkGetPipelineCacheData": {
7234      "core": [
7235        {
7236          "vuid": "VUID-vkGetPipelineCacheData-device-parameter",
7237          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
7238        },
7239        {
7240          "vuid": "VUID-vkGetPipelineCacheData-pipelineCache-parameter",
7241          "text": " <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle"
7242        },
7243        {
7244          "vuid": "VUID-vkGetPipelineCacheData-pDataSize-parameter",
7245          "text": " <code>pDataSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value"
7246        },
7247        {
7248          "vuid": "VUID-vkGetPipelineCacheData-pData-parameter",
7249          "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"
7250        },
7251        {
7252          "vuid": "VUID-vkGetPipelineCacheData-pipelineCache-parent",
7253          "text": " <code>pipelineCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
7254        }
7255      ]
7256    },
7257    "vkDestroyPipelineCache": {
7258      "core": [
7259        {
7260          "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-00771",
7261          "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"
7262        },
7263        {
7264          "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-00772",
7265          "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>"
7266        },
7267        {
7268          "vuid": "VUID-vkDestroyPipelineCache-device-parameter",
7269          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
7270        },
7271        {
7272          "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-parameter",
7273          "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 <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle"
7274        },
7275        {
7276          "vuid": "VUID-vkDestroyPipelineCache-pAllocator-parameter",
7277          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
7278        },
7279        {
7280          "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-parent",
7281          "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>"
7282        }
7283      ]
7284    },
7285    "VkSpecializationInfo": {
7286      "core": [
7287        {
7288          "vuid": "VUID-VkSpecializationInfo-offset-00773",
7289          "text": " The <code>offset</code> member of each element of <code>pMapEntries</code> <strong class=\"purple\">must</strong> be less than <code>dataSize</code>"
7290        },
7291        {
7292          "vuid": "VUID-VkSpecializationInfo-pMapEntries-00774",
7293          "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>"
7294        },
7295        {
7296          "vuid": "VUID-VkSpecializationInfo-pMapEntries-parameter",
7297          "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 <a href=\"#VkSpecializationMapEntry\">VkSpecializationMapEntry</a> structures"
7298        },
7299        {
7300          "vuid": "VUID-VkSpecializationInfo-pData-parameter",
7301          "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"
7302        }
7303      ]
7304    },
7305    "VkSpecializationMapEntry": {
7306      "core": [
7307        {
7308          "vuid": "VUID-VkSpecializationMapEntry-constantID-00776",
7309          "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>"
7310        }
7311      ]
7312    },
7313    "VkPipelineLibraryCreateInfoKHR": {
7314      "(VK_KHR_pipeline_library)": [
7315        {
7316          "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pLibraries-03381",
7317          "text": " Each element of <code>pLibraries</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>"
7318        },
7319        {
7320          "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-sType-sType",
7321          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR</code>"
7322        },
7323        {
7324          "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pNext-pNext",
7325          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7326        },
7327        {
7328          "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pLibraries-parameter",
7329          "text": " If <code>libraryCount</code> is not <code>0</code>, <code>pLibraries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>libraryCount</code> valid <a href=\"#VkPipeline\">VkPipeline</a> handles"
7330        }
7331      ]
7332    },
7333    "vkCmdBindPipeline": {
7334      "core": [
7335        {
7336          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00777",
7337          "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"
7338        },
7339        {
7340          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00778",
7341          "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"
7342        },
7343        {
7344          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00779",
7345          "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"
7346        },
7347        {
7348          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00780",
7349          "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"
7350        },
7351        {
7352          "vuid": "VUID-vkCmdBindPipeline-pipeline-00781",
7353          "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 <a href=\"#renderpass-noattachments\">uses no attachments</a>, 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"
7354        },
7355        {
7356          "vuid": "VUID-vkCmdBindPipeline-commandBuffer-parameter",
7357          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
7358        },
7359        {
7360          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-parameter",
7361          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
7362        },
7363        {
7364          "vuid": "VUID-vkCmdBindPipeline-pipeline-parameter",
7365          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
7366        },
7367        {
7368          "vuid": "VUID-vkCmdBindPipeline-commandBuffer-recording",
7369          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
7370        },
7371        {
7372          "vuid": "VUID-vkCmdBindPipeline-commandBuffer-cmdpool",
7373          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
7374        },
7375        {
7376          "vuid": "VUID-vkCmdBindPipeline-commonparent",
7377          "text": " Both of <code>commandBuffer</code>, and <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
7378        }
7379      ],
7380      "(VK_EXT_sample_locations)": [
7381        {
7382          "vuid": "VUID-vkCmdBindPipeline-variableSampleLocations-01525",
7383          "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"
7384        }
7385      ],
7386      "(VK_EXT_transform_feedback)": [
7387        {
7388          "vuid": "VUID-vkCmdBindPipeline-None-02323",
7389          "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
7390        }
7391      ],
7392      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
7393        {
7394          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-02391",
7395          "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
7396        },
7397        {
7398          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-02392",
7399          "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR</code>, the <code>pipeline</code> <strong class=\"purple\">must</strong> be a ray tracing pipeline"
7400        }
7401      ],
7402      "(VK_KHR_pipeline_library)": [
7403        {
7404          "vuid": "VUID-vkCmdBindPipeline-pipeline-03382",
7405          "text": " The <code>pipeline</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code> set"
7406        }
7407      ]
7408    },
7409    "vkCmdBindPipelineShaderGroupNV": {
7410      "(VK_NV_device_generated_commands)": [
7411        {
7412          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-groupIndex-02893",
7413          "text": " <code>groupIndex</code> <strong class=\"purple\">must</strong> be <code>0</code> or less than the effective <a href=\"#VkGraphicsPipelineShaderGroupsCreateInfoNV\">VkGraphicsPipelineShaderGroupsCreateInfoNV</a>::<code>groupCount</code> including the referenced pipelines"
7414        },
7415        {
7416          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-pipelineBindPoint-02894",
7417          "text": " The <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
7418        },
7419        {
7420          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-groupIndex-02895",
7421          "text": " The same restrictions as <a href=\"#vkCmdBindPipeline\">vkCmdBindPipeline</a> apply as if the bound pipeline was created only with the Shader Group from the <code>groupIndex</code> information"
7422        },
7423        {
7424          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-deviceGeneratedCommands-02896",
7425          "text": " The <a href=\"#feature-device-generated-commands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
7426        },
7427        {
7428          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-parameter",
7429          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
7430        },
7431        {
7432          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-pipelineBindPoint-parameter",
7433          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
7434        },
7435        {
7436          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-pipeline-parameter",
7437          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
7438        },
7439        {
7440          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-recording",
7441          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
7442        },
7443        {
7444          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-cmdpool",
7445          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
7446        },
7447        {
7448          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-commonparent",
7449          "text": " Both of <code>commandBuffer</code>, and <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
7450        }
7451      ]
7452    },
7453    "vkGetPipelineExecutablePropertiesKHR": {
7454      "(VK_KHR_pipeline_executable_properties)": [
7455        {
7456          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pipelineExecutableInfo-03270",
7457          "text": " <a href=\"#features-pipelineExecutableInfo\"><code>pipelineExecutableInfo</code></a> <strong class=\"purple\">must</strong> be enabled"
7458        },
7459        {
7460          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pipeline-03271",
7461          "text": " <code>pipeline</code> member of <code>pPipelineInfo</code> <strong class=\"purple\">must</strong> have been created with <code>device</code>"
7462        },
7463        {
7464          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-device-parameter",
7465          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
7466        },
7467        {
7468          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pPipelineInfo-parameter",
7469          "text": " <code>pPipelineInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineInfoKHR\">VkPipelineInfoKHR</a> structure"
7470        },
7471        {
7472          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pExecutableCount-parameter",
7473          "text": " <code>pExecutableCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
7474        },
7475        {
7476          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pProperties-parameter",
7477          "text": " If the value referenced by <code>pExecutableCount</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>pExecutableCount</code> <a href=\"#VkPipelineExecutablePropertiesKHR\">VkPipelineExecutablePropertiesKHR</a> structures"
7478        }
7479      ]
7480    },
7481    "VkPipelineInfoKHR": {
7482      "(VK_KHR_pipeline_executable_properties)": [
7483        {
7484          "vuid": "VUID-VkPipelineInfoKHR-sType-sType",
7485          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR</code>"
7486        },
7487        {
7488          "vuid": "VUID-VkPipelineInfoKHR-pNext-pNext",
7489          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7490        },
7491        {
7492          "vuid": "VUID-VkPipelineInfoKHR-pipeline-parameter",
7493          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
7494        }
7495      ]
7496    },
7497    "VkPipelineExecutablePropertiesKHR": {
7498      "(VK_KHR_pipeline_executable_properties)": [
7499        {
7500          "vuid": "VUID-VkPipelineExecutablePropertiesKHR-sType-sType",
7501          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR</code>"
7502        },
7503        {
7504          "vuid": "VUID-VkPipelineExecutablePropertiesKHR-pNext-pNext",
7505          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7506        }
7507      ]
7508    },
7509    "vkGetPipelineExecutableStatisticsKHR": {
7510      "(VK_KHR_pipeline_executable_properties)": [
7511        {
7512          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pipelineExecutableInfo-03272",
7513          "text": " <a href=\"#features-pipelineExecutableInfo\"><code>pipelineExecutableInfo</code></a> <strong class=\"purple\">must</strong> be enabled"
7514        },
7515        {
7516          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pipeline-03273",
7517          "text": " <code>pipeline</code> member of <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> have been created with <code>device</code>"
7518        },
7519        {
7520          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pipeline-03274",
7521          "text": " <code>pipeline</code> member of <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR</code> set in the <code>flags</code> field of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a> or <a href=\"#VkComputePipelineCreateInfo\">VkComputePipelineCreateInfo</a>"
7522        },
7523        {
7524          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-device-parameter",
7525          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
7526        },
7527        {
7528          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pExecutableInfo-parameter",
7529          "text": " <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineExecutableInfoKHR\">VkPipelineExecutableInfoKHR</a> structure"
7530        },
7531        {
7532          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pStatisticCount-parameter",
7533          "text": " <code>pStatisticCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
7534        },
7535        {
7536          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pStatistics-parameter",
7537          "text": " If the value referenced by <code>pStatisticCount</code> is not <code>0</code>, and <code>pStatistics</code> is not <code>NULL</code>, <code>pStatistics</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pStatisticCount</code> <a href=\"#VkPipelineExecutableStatisticKHR\">VkPipelineExecutableStatisticKHR</a> structures"
7538        }
7539      ]
7540    },
7541    "VkPipelineExecutableInfoKHR": {
7542      "(VK_KHR_pipeline_executable_properties)": [
7543        {
7544          "vuid": "VUID-VkPipelineExecutableInfoKHR-executableIndex-03275",
7545          "text": " <code>executableIndex</code> <strong class=\"purple\">must</strong> be less than the number of executables associated with <code>pipeline</code> as returned in the <code>pExecutableCount</code> parameter of <code>vkGetPipelineExecutablePropertiesKHR</code>"
7546        },
7547        {
7548          "vuid": "VUID-VkPipelineExecutableInfoKHR-sType-sType",
7549          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR</code>"
7550        },
7551        {
7552          "vuid": "VUID-VkPipelineExecutableInfoKHR-pNext-pNext",
7553          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7554        },
7555        {
7556          "vuid": "VUID-VkPipelineExecutableInfoKHR-pipeline-parameter",
7557          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
7558        }
7559      ]
7560    },
7561    "VkPipelineExecutableStatisticKHR": {
7562      "(VK_KHR_pipeline_executable_properties)": [
7563        {
7564          "vuid": "VUID-VkPipelineExecutableStatisticKHR-sType-sType",
7565          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR</code>"
7566        },
7567        {
7568          "vuid": "VUID-VkPipelineExecutableStatisticKHR-pNext-pNext",
7569          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7570        }
7571      ]
7572    },
7573    "vkGetPipelineExecutableInternalRepresentationsKHR": {
7574      "(VK_KHR_pipeline_executable_properties)": [
7575        {
7576          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipelineExecutableInfo-03276",
7577          "text": " <a href=\"#features-pipelineExecutableInfo\"><code>pipelineExecutableInfo</code></a> <strong class=\"purple\">must</strong> be enabled"
7578        },
7579        {
7580          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipeline-03277",
7581          "text": " <code>pipeline</code> member of <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> have been created with <code>device</code>"
7582        },
7583        {
7584          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipeline-03278",
7585          "text": " <code>pipeline</code> member of <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR</code> set in the <code>flags</code> field of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a> or <a href=\"#VkComputePipelineCreateInfo\">VkComputePipelineCreateInfo</a>"
7586        },
7587        {
7588          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-device-parameter",
7589          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
7590        },
7591        {
7592          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pExecutableInfo-parameter",
7593          "text": " <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineExecutableInfoKHR\">VkPipelineExecutableInfoKHR</a> structure"
7594        },
7595        {
7596          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pInternalRepresentationCount-parameter",
7597          "text": " <code>pInternalRepresentationCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
7598        },
7599        {
7600          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pInternalRepresentations-parameter",
7601          "text": " If the value referenced by <code>pInternalRepresentationCount</code> is not <code>0</code>, and <code>pInternalRepresentations</code> is not <code>NULL</code>, <code>pInternalRepresentations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pInternalRepresentationCount</code> <a href=\"#VkPipelineExecutableInternalRepresentationKHR\">VkPipelineExecutableInternalRepresentationKHR</a> structures"
7602        }
7603      ]
7604    },
7605    "VkPipelineExecutableInternalRepresentationKHR": {
7606      "(VK_KHR_pipeline_executable_properties)": [
7607        {
7608          "vuid": "VUID-VkPipelineExecutableInternalRepresentationKHR-sType-sType",
7609          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR</code>"
7610        },
7611        {
7612          "vuid": "VUID-VkPipelineExecutableInternalRepresentationKHR-pNext-pNext",
7613          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7614        }
7615      ]
7616    },
7617    "vkGetShaderInfoAMD": {
7618      "(VK_AMD_shader_info)": [
7619        {
7620          "vuid": "VUID-vkGetShaderInfoAMD-device-parameter",
7621          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
7622        },
7623        {
7624          "vuid": "VUID-vkGetShaderInfoAMD-pipeline-parameter",
7625          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
7626        },
7627        {
7628          "vuid": "VUID-vkGetShaderInfoAMD-shaderStage-parameter",
7629          "text": " <code>shaderStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> value"
7630        },
7631        {
7632          "vuid": "VUID-vkGetShaderInfoAMD-infoType-parameter",
7633          "text": " <code>infoType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderInfoTypeAMD\">VkShaderInfoTypeAMD</a> value"
7634        },
7635        {
7636          "vuid": "VUID-vkGetShaderInfoAMD-pInfoSize-parameter",
7637          "text": " <code>pInfoSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value"
7638        },
7639        {
7640          "vuid": "VUID-vkGetShaderInfoAMD-pInfo-parameter",
7641          "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"
7642        },
7643        {
7644          "vuid": "VUID-vkGetShaderInfoAMD-pipeline-parent",
7645          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
7646        }
7647      ]
7648    },
7649    "VkPipelineCompilerControlCreateInfoAMD": {
7650      "(VK_AMD_pipeline_compiler_control)": [
7651        {
7652          "vuid": "VUID-VkPipelineCompilerControlCreateInfoAMD-sType-sType",
7653          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD</code>"
7654        },
7655        {
7656          "vuid": "VUID-VkPipelineCompilerControlCreateInfoAMD-compilerControlFlags-zerobitmask",
7657          "text": " <code>compilerControlFlags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
7658        }
7659      ]
7660    },
7661    "vkCreateRayTracingPipelinesNV": {
7662      "core": [
7663        {
7664          "vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-03415",
7665          "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"
7666        },
7667        {
7668          "vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-03416",
7669          "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"
7670        }
7671      ],
7672      "(VK_EXT_pipeline_creation_cache_control)": [
7673        {
7674          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-02903",
7675          "text": " If <code>pipelineCache</code> was created with <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT</code>, host access to <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a>"
7676        }
7677      ],
7678      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
7679        {
7680          "vuid": "VUID-vkCreateRayTracingPipelinesNV-device-parameter",
7681          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
7682        },
7683        {
7684          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parameter",
7685          "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 <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle"
7686        },
7687        {
7688          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pCreateInfos-parameter",
7689          "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <a href=\"#VkRayTracingPipelineCreateInfoNV\">VkRayTracingPipelineCreateInfoNV</a> structures"
7690        },
7691        {
7692          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pAllocator-parameter",
7693          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
7694        },
7695        {
7696          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pPipelines-parameter",
7697          "text": " <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <a href=\"#VkPipeline\">VkPipeline</a> handles"
7698        },
7699        {
7700          "vuid": "VUID-vkCreateRayTracingPipelinesNV-createInfoCount-arraylength",
7701          "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
7702        },
7703        {
7704          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parent",
7705          "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>"
7706        }
7707      ]
7708    },
7709    "vkCreateRayTracingPipelinesKHR": {
7710      "core": [
7711        {
7712          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-flags-03415",
7713          "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"
7714        },
7715        {
7716          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-flags-03416",
7717          "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"
7718        },
7719        {
7720          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-rayTracing-03455",
7721          "text": " The <a href=\"#features-raytracing\"><code>rayTracing</code></a> feature <strong class=\"purple\">must</strong> be enabled"
7722        }
7723      ],
7724      "(VK_EXT_pipeline_creation_cache_control)": [
7725        {
7726          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-02903",
7727          "text": " If <code>pipelineCache</code> was created with <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT</code>, host access to <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a>"
7728        }
7729      ],
7730      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
7731        {
7732          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-device-parameter",
7733          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
7734        },
7735        {
7736          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-parameter",
7737          "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 <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle"
7738        },
7739        {
7740          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pCreateInfos-parameter",
7741          "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <a href=\"#VkRayTracingPipelineCreateInfoKHR\">VkRayTracingPipelineCreateInfoKHR</a> structures"
7742        },
7743        {
7744          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pAllocator-parameter",
7745          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
7746        },
7747        {
7748          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pPipelines-parameter",
7749          "text": " <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <a href=\"#VkPipeline\">VkPipeline</a> handles"
7750        },
7751        {
7752          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-createInfoCount-arraylength",
7753          "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
7754        },
7755        {
7756          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-parent",
7757          "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>"
7758        }
7759      ]
7760    },
7761    "VkRayTracingPipelineCreateInfoNV": {
7762      "core": [
7763        {
7764          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03421",
7765          "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>"
7766        },
7767        {
7768          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03422",
7769          "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"
7770        },
7771        {
7772          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03423",
7773          "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>"
7774        },
7775        {
7776          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03424",
7777          "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>"
7778        },
7779        {
7780          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-stage-03425",
7781          "text": " The <code>stage</code> member of at least one element of <code>pStages</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_RAYGEN_BIT_KHR</code>"
7782        },
7783        {
7784          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pStages-03426",
7785          "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"
7786        },
7787        {
7788          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-03427",
7789          "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>"
7790        },
7791        {
7792          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-03428",
7793          "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>"
7794        },
7795        {
7796          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-maxRecursionDepth-03457",
7797          "text": " <code>maxRecursionDepth</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxRecursionDepth</code>"
7798        }
7799      ],
7800      "(VK_NV_device_generated_commands)": [
7801        {
7802          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02904",
7803          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>"
7804        }
7805      ],
7806      "(VK_EXT_pipeline_creation_cache_control)": [
7807        {
7808          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pipelineCreationCacheControl-02905",
7809          "text": " If the <a href=\"#features-pipelineCreationCacheControl\"><code>pipelineCreationCacheControl</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT</code> or <code>VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT</code>"
7810        },
7811        {
7812          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02957",
7813          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include both <code>VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV</code> and <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT</code> at the same time"
7814        }
7815      ],
7816      "(VK_KHR_pipeline_library)": [
7817        {
7818          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03456",
7819          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>"
7820        }
7821      ],
7822      "(VK_KHR_ray_tracing)": [
7823        {
7824          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03458",
7825          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>"
7826        },
7827        {
7828          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03459",
7829          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>"
7830        },
7831        {
7832          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03460",
7833          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code>"
7834        },
7835        {
7836          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03461",
7837          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>"
7838        },
7839        {
7840          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03462",
7841          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR</code>"
7842        },
7843        {
7844          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03463",
7845          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR</code>"
7846        }
7847      ],
7848      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
7849        {
7850          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-sType-sType",
7851          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV</code>"
7852        },
7853        {
7854          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pNext-pNext",
7855          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineCreationFeedbackCreateInfoEXT\">VkPipelineCreationFeedbackCreateInfoEXT</a>"
7856        },
7857        {
7858          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-sType-unique",
7859          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
7860        },
7861        {
7862          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-parameter",
7863          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values"
7864        },
7865        {
7866          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pStages-parameter",
7867          "text": " <code>pStages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stageCount</code> valid <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a> structures"
7868        },
7869        {
7870          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pGroups-parameter",
7871          "text": " <code>pGroups</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>groupCount</code> valid <a href=\"#VkRayTracingShaderGroupCreateInfoNV\">VkRayTracingShaderGroupCreateInfoNV</a> structures"
7872        },
7873        {
7874          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-parameter",
7875          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle"
7876        },
7877        {
7878          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-stageCount-arraylength",
7879          "text": " <code>stageCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
7880        },
7881        {
7882          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-groupCount-arraylength",
7883          "text": " <code>groupCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
7884        },
7885        {
7886          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-commonparent",
7887          "text": " Both of <code>basePipelineHandle</code>, and <code>layout</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
7888        }
7889      ]
7890    },
7891    "VkRayTracingPipelineCreateInfoKHR": {
7892      "core": [
7893        {
7894          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03421",
7895          "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>"
7896        },
7897        {
7898          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03422",
7899          "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"
7900        },
7901        {
7902          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03423",
7903          "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>"
7904        },
7905        {
7906          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03424",
7907          "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>"
7908        },
7909        {
7910          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-stage-03425",
7911          "text": " The <code>stage</code> member of at least one element of <code>pStages</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_RAYGEN_BIT_KHR</code>"
7912        },
7913        {
7914          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pStages-03426",
7915          "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"
7916        },
7917        {
7918          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-layout-03427",
7919          "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>"
7920        },
7921        {
7922          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-layout-03428",
7923          "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>"
7924        },
7925        {
7926          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-maxRecursionDepth-03464",
7927          "text": " <code>maxRecursionDepth</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesKHR\">VkPhysicalDeviceRayTracingPropertiesKHR</a>::<code>maxRecursionDepth</code>"
7928        },
7929        {
7930          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03470",
7931          "text": " If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>, for any element of <code>pGroups</code> with a <code>type</code> of <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR</code> or <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR</code>, the <code>anyHitShader</code> of that element <strong class=\"purple\">must</strong> not be <code>VK_SHADER_UNUSED_KHR</code>"
7932        },
7933        {
7934          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03471",
7935          "text": " If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, for any element of <code>pGroups</code> with a <code>type</code> of <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR</code> or <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR</code>, the <code>closestHitShader</code> of that element <strong class=\"purple\">must</strong> not be <code>VK_SHADER_UNUSED_KHR</code>"
7936        },
7937        {
7938          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-rayTracingPrimitiveCulling-03472",
7939          "text": " If the <a href=\"#features-rayTracingPrimitiveCulling\"><code>rayTracingPrimitiveCulling</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR</code>"
7940        },
7941        {
7942          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-rayTracingPrimitiveCulling-03473",
7943          "text": " If the <a href=\"#features-rayTracingPrimitiveCulling\"><code>rayTracingPrimitiveCulling</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR</code>"
7944        },
7945        {
7946          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-libraries-02958",
7947          "text": " If <code>libraries.libraryCount</code> is zero, then <code>stageCount</code> <strong class=\"purple\">must</strong> not be zero"
7948        },
7949        {
7950          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-libraries-02959",
7951          "text": " If <code>libraries.libraryCount</code> is zero, then <code>groupCount</code> <strong class=\"purple\">must</strong> not be zero"
7952        }
7953      ],
7954      "(VK_NV_device_generated_commands)": [
7955        {
7956          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-02904",
7957          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>"
7958        }
7959      ],
7960      "(VK_EXT_pipeline_creation_cache_control)": [
7961        {
7962          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pipelineCreationCacheControl-02905",
7963          "text": " If the <a href=\"#features-pipelineCreationCacheControl\"><code>pipelineCreationCacheControl</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT</code> or <code>VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT</code>"
7964        }
7965      ],
7966      "(VK_KHR_pipeline_library)": [
7967        {
7968          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03465",
7969          "text": " If <code>flags</code> includes <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>, <code>pLibraryInterface</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>"
7970        },
7971        {
7972          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-libraryCount-03466",
7973          "text": " If the <code>libraryCount</code> member of <code>libraries</code> is greater than <code>0</code>, <code>pLibraryInterface</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>"
7974        },
7975        {
7976          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraries-03467",
7977          "text": " Each element of the <code>pLibraries</code> member of <code>libraries</code> <strong class=\"purple\">must</strong> have been created with the value of <code>maxRecursionDepth</code> equal to that in this pipeline"
7978        },
7979        {
7980          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraries-03468",
7981          "text": " Each element of the <code>pLibraries</code> member of <code>libraries</code> <strong class=\"purple\">must</strong> have been created with a <code>layout</code> that is compatible with the <code>layout</code> in this pipeline"
7982        },
7983        {
7984          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraries-03469",
7985          "text": " Each element of the <code>pLibraries</code> member of <code>libraries</code> <strong class=\"purple\">must</strong> have been created with values of the <code>maxPayloadSize</code>, <code>maxAttributeSize</code>, and <code>maxCallableSize</code> members of <code>pLibraryInterface</code> equal to those in this pipeline"
7986        }
7987      ],
7988      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
7989        {
7990          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-sType-sType",
7991          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR</code>"
7992        },
7993        {
7994          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pNext-pNext",
7995          "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=\"#VkDeferredOperationInfoKHR\">VkDeferredOperationInfoKHR</a> or <a href=\"#VkPipelineCreationFeedbackCreateInfoEXT\">VkPipelineCreationFeedbackCreateInfoEXT</a>"
7996        },
7997        {
7998          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-sType-unique",
7999          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
8000        },
8001        {
8002          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-parameter",
8003          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values"
8004        },
8005        {
8006          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pStages-parameter",
8007          "text": " If <code>stageCount</code> is not <code>0</code>, <code>pStages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stageCount</code> valid <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a> structures"
8008        },
8009        {
8010          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pGroups-parameter",
8011          "text": " If <code>groupCount</code> is not <code>0</code>, <code>pGroups</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>groupCount</code> valid <a href=\"#VkRayTracingShaderGroupCreateInfoKHR\">VkRayTracingShaderGroupCreateInfoKHR</a> structures"
8012        },
8013        {
8014          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-libraries-parameter",
8015          "text": " <code>libraries</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a> structure"
8016        },
8017        {
8018          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInterface-parameter",
8019          "text": " If <code>pLibraryInterface</code> is not <code>NULL</code>, <code>pLibraryInterface</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkRayTracingPipelineInterfaceCreateInfoKHR\">VkRayTracingPipelineInterfaceCreateInfoKHR</a> structure"
8020        },
8021        {
8022          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-layout-parameter",
8023          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle"
8024        },
8025        {
8026          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-commonparent",
8027          "text": " Both of <code>basePipelineHandle</code>, and <code>layout</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
8028        }
8029      ]
8030    },
8031    "VkRayTracingShaderGroupCreateInfoNV": {
8032      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
8033        {
8034          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02413",
8035          "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 <a href=\"#VkRayTracingPipelineCreateInfoNV\">VkRayTracingPipelineCreateInfoNV</a>::<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>"
8036        },
8037        {
8038          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02414",
8039          "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>"
8040        },
8041        {
8042          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02415",
8043          "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 <a href=\"#VkRayTracingPipelineCreateInfoNV\">VkRayTracingPipelineCreateInfoNV</a>::<code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_INTERSECTION_BIT_NV</code>"
8044        },
8045        {
8046          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02416",
8047          "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>"
8048        },
8049        {
8050          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-closestHitShader-02417",
8051          "text": " <code>closestHitShader</code> <strong class=\"purple\">must</strong> be either <code>VK_SHADER_UNUSED_NV</code> or a valid index into <a href=\"#VkRayTracingPipelineCreateInfoNV\">VkRayTracingPipelineCreateInfoNV</a>::<code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV</code>"
8052        },
8053        {
8054          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-anyHitShader-02418",
8055          "text": " <code>anyHitShader</code> <strong class=\"purple\">must</strong> be either <code>VK_SHADER_UNUSED_NV</code> or a valid index into <a href=\"#VkRayTracingPipelineCreateInfoNV\">VkRayTracingPipelineCreateInfoNV</a>::<code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_ANY_HIT_BIT_NV</code>"
8056        },
8057        {
8058          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-sType-sType",
8059          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV</code>"
8060        },
8061        {
8062          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-pNext-pNext",
8063          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
8064        },
8065        {
8066          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-parameter",
8067          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRayTracingShaderGroupTypeKHR\">VkRayTracingShaderGroupTypeKHR</a> value"
8068        }
8069      ]
8070    },
8071    "VkRayTracingShaderGroupCreateInfoKHR": {
8072      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
8073        {
8074          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03474",
8075          "text": " If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR</code> then <code>generalShader</code> <strong class=\"purple\">must</strong> be a valid index into <a href=\"#VkRayTracingPipelineCreateInfoKHR\">VkRayTracingPipelineCreateInfoKHR</a>::<code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_RAYGEN_BIT_KHR</code>, <code>VK_SHADER_STAGE_MISS_BIT_KHR</code>, or <code>VK_SHADER_STAGE_CALLABLE_BIT_KHR</code>"
8076        },
8077        {
8078          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03475",
8079          "text": " If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR</code> then <code>closestHitShader</code>, <code>anyHitShader</code>, and <code>intersectionShader</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_UNUSED_KHR</code>"
8080        },
8081        {
8082          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03476",
8083          "text": " If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR</code> then <code>intersectionShader</code> <strong class=\"purple\">must</strong> be a valid index into <a href=\"#VkRayTracingPipelineCreateInfoKHR\">VkRayTracingPipelineCreateInfoKHR</a>::<code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_INTERSECTION_BIT_KHR</code>"
8084        },
8085        {
8086          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03477",
8087          "text": " If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR</code> then <code>intersectionShader</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_UNUSED_KHR</code>"
8088        },
8089        {
8090          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-closestHitShader-03478",
8091          "text": " <code>closestHitShader</code> <strong class=\"purple\">must</strong> be either <code>VK_SHADER_UNUSED_KHR</code> or a valid index into <a href=\"#VkRayTracingPipelineCreateInfoKHR\">VkRayTracingPipelineCreateInfoKHR</a>::<code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR</code>"
8092        },
8093        {
8094          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-anyHitShader-03479",
8095          "text": " <code>anyHitShader</code> <strong class=\"purple\">must</strong> be either <code>VK_SHADER_UNUSED_KHR</code> or a valid index into <a href=\"#VkRayTracingPipelineCreateInfoKHR\">VkRayTracingPipelineCreateInfoKHR</a>::<code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_ANY_HIT_BIT_KHR</code>"
8096        },
8097        {
8098          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-rayTracingShaderGroupHandleCaptureReplayMixed-03480",
8099          "text": " If <a href=\"#VkPhysicalDeviceRayTracingFeaturesKHR\">VkPhysicalDeviceRayTracingFeaturesKHR</a>::<code>rayTracingShaderGroupHandleCaptureReplayMixed</code> is <code>VK_FALSE</code> then <code>pShaderGroupCaptureReplayHandle</code> <strong class=\"purple\">must</strong> not be provided if it has not been provided on a previous call to ray tracing pipeline creation"
8100        },
8101        {
8102          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-rayTracingShaderGroupHandleCaptureReplayMixed-03481",
8103          "text": " If <a href=\"#VkPhysicalDeviceRayTracingFeaturesKHR\">VkPhysicalDeviceRayTracingFeaturesKHR</a>::<code>rayTracingShaderGroupHandleCaptureReplayMixed</code> is <code>VK_FALSE</code> then the caller <strong class=\"purple\">must</strong> guarantee that no ray tracing pipeline creation commands with <code>pShaderGroupCaptureReplayHandle</code> provided execute simultaneously with ray tracing pipeline creation commands without <code>pShaderGroupCaptureReplayHandle</code> provided"
8104        },
8105        {
8106          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-sType-sType",
8107          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR</code>"
8108        },
8109        {
8110          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-pNext-pNext",
8111          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
8112        },
8113        {
8114          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-type-parameter",
8115          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRayTracingShaderGroupTypeKHR\">VkRayTracingShaderGroupTypeKHR</a> value"
8116        }
8117      ]
8118    },
8119    "VkRayTracingPipelineInterfaceCreateInfoKHR": {
8120      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
8121        {
8122          "vuid": "VUID-VkRayTracingPipelineInterfaceCreateInfoKHR-sType-sType",
8123          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR</code>"
8124        },
8125        {
8126          "vuid": "VUID-VkRayTracingPipelineInterfaceCreateInfoKHR-pNext-pNext",
8127          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
8128        }
8129      ]
8130    },
8131    "vkGetRayTracingShaderGroupHandlesKHR": {
8132      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
8133        {
8134          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-firstGroup-04050",
8135          "text": " <code>firstGroup</code> <strong class=\"purple\">must</strong> be less than the number of shader groups in <code>pipeline</code>"
8136        },
8137        {
8138          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-firstGroup-02419",
8139          "text": " The sum of <code>firstGroup</code> and <code>groupCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of shader groups in <code>pipeline</code>"
8140        },
8141        {
8142          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-dataSize-02420",
8143          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be at least <span class=\"eq\"><a href=\"#VkPhysicalDeviceRayTracingPropertiesKHR\">VkPhysicalDeviceRayTracingPropertiesKHR</a>::<code>shaderGroupHandleSize</code> {times} <code>groupCount</code></span>"
8144        },
8145        {
8146          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-device-parameter",
8147          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
8148        },
8149        {
8150          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-parameter",
8151          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
8152        },
8153        {
8154          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-pData-parameter",
8155          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
8156        },
8157        {
8158          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-dataSize-arraylength",
8159          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
8160        },
8161        {
8162          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-parent",
8163          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
8164        }
8165      ],
8166      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_pipeline_library)": [
8167        {
8168          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-03482",
8169          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have not been created with <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>"
8170        }
8171      ]
8172    },
8173    "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR": {
8174      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
8175        {
8176          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-firstGroup-04051",
8177          "text": " <code>firstGroup</code> <strong class=\"purple\">must</strong> be less than the number of shader groups in <code>pipeline</code>"
8178        },
8179        {
8180          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-firstGroup-03483",
8181          "text": " The sum of <code>firstGroup</code> and <code>groupCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of shader groups in <code>pipeline</code>"
8182        },
8183        {
8184          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-dataSize-03484",
8185          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be at least <span class=\"eq\"><a href=\"#VkPhysicalDeviceRayTracingPropertiesKHR\">VkPhysicalDeviceRayTracingPropertiesKHR</a>::<code>shaderGroupHandleCaptureReplaySize</code> {times} <code>groupCount</code></span>"
8186        },
8187        {
8188          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-rayTracingShaderGroupHandleCaptureReplay-03485",
8189          "text": " <code>VkPhysicalDeviceRayTracingFeaturesKHR</code>::<code>rayTracingShaderGroupHandleCaptureReplay</code> <strong class=\"purple\">must</strong> be enabled to call this function"
8190        },
8191        {
8192          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-device-parameter",
8193          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
8194        },
8195        {
8196          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-parameter",
8197          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
8198        },
8199        {
8200          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pData-parameter",
8201          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
8202        },
8203        {
8204          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-dataSize-arraylength",
8205          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
8206        },
8207        {
8208          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-parent",
8209          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
8210        }
8211      ]
8212    },
8213    "vkCompileDeferredNV": {
8214      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
8215        {
8216          "vuid": "VUID-vkCompileDeferredNV-pipeline-02237",
8217          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV</code>"
8218        },
8219        {
8220          "vuid": "VUID-vkCompileDeferredNV-shader-02238",
8221          "text": " <code>shader</code> <strong class=\"purple\">must</strong> not have been called as a deferred compile before"
8222        },
8223        {
8224          "vuid": "VUID-vkCompileDeferredNV-device-parameter",
8225          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
8226        },
8227        {
8228          "vuid": "VUID-vkCompileDeferredNV-pipeline-parameter",
8229          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
8230        },
8231        {
8232          "vuid": "VUID-vkCompileDeferredNV-pipeline-parent",
8233          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
8234        }
8235      ]
8236    },
8237    "VkPipelineCreationFeedbackCreateInfoEXT": {
8238      "(VK_EXT_pipeline_creation_feedback)": [
8239        {
8240          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02668",
8241          "text": " When chained to <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>, <a href=\"#VkPipelineCreationFeedbackEXT\">VkPipelineCreationFeedbackEXT</a>::<code>pipelineStageCreationFeedbackCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>stageCount</code>"
8242        },
8243        {
8244          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02669",
8245          "text": " When chained to <a href=\"#VkComputePipelineCreateInfo\">VkComputePipelineCreateInfo</a>, <a href=\"#VkPipelineCreationFeedbackEXT\">VkPipelineCreationFeedbackEXT</a>::<code>pipelineStageCreationFeedbackCount</code> <strong class=\"purple\">must</strong> equal 1"
8246        },
8247        {
8248          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-sType-sType",
8249          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT</code>"
8250        },
8251        {
8252          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pPipelineCreationFeedback-parameter",
8253          "text": " <code>pPipelineCreationFeedback</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPipelineCreationFeedbackEXT\">VkPipelineCreationFeedbackEXT</a> structure"
8254        },
8255        {
8256          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pPipelineStageCreationFeedbacks-parameter",
8257          "text": " <code>pPipelineStageCreationFeedbacks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pipelineStageCreationFeedbackCount</code> <a href=\"#VkPipelineCreationFeedbackEXT\">VkPipelineCreationFeedbackEXT</a> structures"
8258        },
8259        {
8260          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-arraylength",
8261          "text": " <code>pipelineStageCreationFeedbackCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
8262        }
8263      ],
8264      "(VK_EXT_pipeline_creation_feedback)+(VK_KHR_ray_tracing)": [
8265        {
8266          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02670",
8267          "text": " When chained to <a href=\"#VkRayTracingPipelineCreateInfoKHR\">VkRayTracingPipelineCreateInfoKHR</a>, <a href=\"#VkPipelineCreationFeedbackEXT\">VkPipelineCreationFeedbackEXT</a>::<code>pipelineStageCreationFeedbackCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkRayTracingPipelineCreateInfoKHR\">VkRayTracingPipelineCreateInfoKHR</a>::<code>stageCount</code>"
8268        }
8269      ],
8270      "(VK_EXT_pipeline_creation_feedback)+(VK_NV_ray_tracing)": [
8271        {
8272          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02969",
8273          "text": " When chained to <a href=\"#VkRayTracingPipelineCreateInfoNV\">VkRayTracingPipelineCreateInfoNV</a>, <a href=\"#VkPipelineCreationFeedbackEXT\">VkPipelineCreationFeedbackEXT</a>::<code>pipelineStageCreationFeedbackCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkRayTracingPipelineCreateInfoNV\">VkRayTracingPipelineCreateInfoNV</a>::<code>stageCount</code>"
8274        }
8275      ]
8276    },
8277    "VkAllocationCallbacks": {
8278      "core": [
8279        {
8280          "vuid": "VUID-VkAllocationCallbacks-pfnAllocation-00632",
8281          "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>"
8282        },
8283        {
8284          "vuid": "VUID-VkAllocationCallbacks-pfnReallocation-00633",
8285          "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>"
8286        },
8287        {
8288          "vuid": "VUID-VkAllocationCallbacks-pfnFree-00634",
8289          "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>"
8290        },
8291        {
8292          "vuid": "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635",
8293          "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"
8294        }
8295      ]
8296    },
8297    "vkGetPhysicalDeviceMemoryProperties": {
8298      "core": [
8299        {
8300          "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties-physicalDevice-parameter",
8301          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
8302        },
8303        {
8304          "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties-pMemoryProperties-parameter",
8305          "text": " <code>pMemoryProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a> structure"
8306        }
8307      ]
8308    },
8309    "vkGetPhysicalDeviceMemoryProperties2": {
8310      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
8311        {
8312          "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties2-physicalDevice-parameter",
8313          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
8314        },
8315        {
8316          "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties2-pMemoryProperties-parameter",
8317          "text": " <code>pMemoryProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPhysicalDeviceMemoryProperties2\">VkPhysicalDeviceMemoryProperties2</a> structure"
8318        }
8319      ]
8320    },
8321    "VkPhysicalDeviceMemoryProperties2": {
8322      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
8323        {
8324          "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-sType-sType",
8325          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2</code>"
8326        },
8327        {
8328          "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-pNext-pNext",
8329          "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>"
8330        },
8331        {
8332          "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-sType-unique",
8333          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
8334        }
8335      ]
8336    },
8337    "VkPhysicalDeviceMemoryBudgetPropertiesEXT": {
8338      "(VK_EXT_memory_budget)": [
8339        {
8340          "vuid": "VUID-VkPhysicalDeviceMemoryBudgetPropertiesEXT-sType-sType",
8341          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT</code>"
8342        }
8343      ]
8344    },
8345    "vkAllocateMemory": {
8346      "core": [
8347        {
8348          "vuid": "VUID-vkAllocateMemory-pAllocateInfo-01713",
8349          "text": " <code>pAllocateInfo-&gt;allocationSize</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a>::<code>memoryHeaps</code>[memindex].size where <code>memindex</code> = <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a>::<code>memoryTypes</code>[pAllocateInfo-&gt;memoryTypeIndex].heapIndex as returned by <a href=\"#vkGetPhysicalDeviceMemoryProperties\">vkGetPhysicalDeviceMemoryProperties</a> for the <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> that <code>device</code> was created from"
8350        },
8351        {
8352          "vuid": "VUID-vkAllocateMemory-pAllocateInfo-01714",
8353          "text": " <code>pAllocateInfo-&gt;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"
8354        },
8355        {
8356          "vuid": "VUID-vkAllocateMemory-maxMemoryAllocationCount-04101",
8357          "text": " There <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxMemoryAllocationCount</code> device memory allocations currently allocated on the device."
8358        },
8359        {
8360          "vuid": "VUID-vkAllocateMemory-device-parameter",
8361          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
8362        },
8363        {
8364          "vuid": "VUID-vkAllocateMemory-pAllocateInfo-parameter",
8365          "text": " <code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> structure"
8366        },
8367        {
8368          "vuid": "VUID-vkAllocateMemory-pAllocator-parameter",
8369          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
8370        },
8371        {
8372          "vuid": "VUID-vkAllocateMemory-pMemory-parameter",
8373          "text": " <code>pMemory</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
8374        }
8375      ],
8376      "(VK_AMD_device_coherent_memory)": [
8377        {
8378          "vuid": "VUID-vkAllocateMemory-deviceCoherentMemory-02790",
8379          "text": " If the <a href=\"#features-deviceCoherentMemory\"><code>deviceCoherentMemory</code></a> feature is not enabled, <code>pAllocateInfo-&gt;memoryTypeIndex</code> <strong class=\"purple\">must</strong> not identify a memory type supporting <code>VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD</code>"
8380        }
8381      ]
8382    },
8383    "VkMemoryAllocateInfo": {
8384      "!(VK_ANDROID_external_memory_android_hardware_buffer)": [
8385        {
8386          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00638",
8387          "text": " <code>allocationSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
8388        }
8389      ],
8390      "(VK_KHR_external_memory)+(VK_KHR_dedicated_allocation,VK_NV_dedicated_allocation)": [
8391        {
8392          "vuid": "VUID-VkMemoryAllocateInfo-pNext-00639",
8393          "text": "     If the <code>pNext</code> chain includes a <code>VkExportMemoryAllocateInfo</code>     structure, 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.externalMemoryFeatures</code>     or     <code>VkExternalBufferProperties</code>::<code>externalMemoryProperties.externalMemoryFeatures</code>,     the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a ifdef::VK_KHR_dedicated_allocation[<a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>]"
8394        }
8395      ],
8396      "(VK_KHR_external_memory)+(VK_NV_external_memory)": [
8397        {
8398          "vuid": "VUID-VkMemoryAllocateInfo-pNext-00640",
8399          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a> structure, it <strong class=\"purple\">must</strong> not include a <a href=\"#VkExportMemoryAllocateInfoNV\">VkExportMemoryAllocateInfoNV</a> or <a href=\"#VkExportMemoryWin32HandleInfoNV\">VkExportMemoryWin32HandleInfoNV</a> structure"
8400        }
8401      ],
8402      "(VK_KHR_external_memory_win32+VK_NV_external_memory_win32)": [
8403        {
8404          "vuid": "VUID-VkMemoryAllocateInfo-pNext-00641",
8405          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkImportMemoryWin32HandleInfoKHR\">VkImportMemoryWin32HandleInfoKHR</a> structure, it <strong class=\"purple\">must</strong> not include a <a href=\"#VkImportMemoryWin32HandleInfoNV\">VkImportMemoryWin32HandleInfoNV</a> structure"
8406        }
8407      ],
8408      "(VK_KHR_external_memory_fd)": [
8409        {
8410          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01742",
8411          "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"
8412        },
8413        {
8414          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-00648",
8415          "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>"
8416        }
8417      ],
8418      "(VK_KHR_external_memory+VK_KHR_device_group)": [
8419        {
8420          "vuid": "VUID-VkMemoryAllocateInfo-None-00643",
8421          "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"
8422        },
8423        {
8424          "vuid": "VUID-VkMemoryAllocateInfo-None-00644",
8425          "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"
8426        }
8427      ],
8428      "(VK_KHR_external_memory_win32)": [
8429        {
8430          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-00645",
8431          "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>"
8432        },
8433        {
8434          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01743",
8435          "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"
8436        },
8437        {
8438          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00646",
8439          "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 <code>VkDedicatedAllocationMemoryAllocateInfoNV</code> structure included in the <code>pNext</code> chain"
8440        },
8441        {
8442          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00647",
8443          "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"
8444        }
8445      ],
8446      "(VK_VERSION_1_1)": [
8447        {
8448          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-01872",
8449          "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>"
8450        }
8451      ],
8452      "(VK_EXT_external_memory_host)": [
8453        {
8454          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-01744",
8455          "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>"
8456        },
8457        {
8458          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01745",
8459          "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>"
8460        }
8461      ],
8462      "(VK_EXT_external_memory_host)+(VK_NV_dedicated_allocation)": [
8463        {
8464          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02805",
8465          "text": " If the parameters define an import operation and the external handle is a host pointer, the <code>pNext</code> chain <strong class=\"purple\">must</strong> not include a <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a> structure with either its <code>image</code> or <code>buffer</code> field set to a value other than <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
8466        }
8467      ],
8468      "(VK_EXT_external_memory_host)+(VK_KHR_dedicated_allocation)": [
8469        {
8470          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02806",
8471          "text": " If the parameters define an import operation and the external handle is a host pointer, the <code>pNext</code> chain <strong class=\"purple\">must</strong> not include a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with either its <code>image</code> or <code>buffer</code> field set to a value other than <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
8472        }
8473      ],
8474      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
8475        {
8476          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-02383",
8477          "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"
8478        },
8479        {
8480          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02384",
8481          "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 include a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure 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>"
8482        },
8483        {
8484          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-02385",
8485          "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"
8486        },
8487        {
8488          "vuid": "VUID-VkMemoryAllocateInfo-pNext-01874",
8489          "text": " If the parameters do not define an import operation, and the <code>pNext</code> chain includes a <code>VkExportMemoryAllocateInfo</code> structure 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> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure 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>"
8490        },
8491        {
8492          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02386",
8493          "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <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 <code>AHardwareBuffer</code>::<code>usage</code> <strong class=\"purple\">must</strong> include at least one of <code>AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER</code> or <code>AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE</code>"
8494        },
8495        {
8496          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02387",
8497          "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <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"
8498        },
8499        {
8500          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02388",
8501          "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure 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"
8502        },
8503        {
8504          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02389",
8505          "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the Android hardware buffer&#8217;s <code>AHardwareBuffer</code>::<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"
8506        },
8507        {
8508          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02586",
8509          "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the Android hardware buffer&#8217;s <code>AHardwareBuffer</code>::<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"
8510        },
8511        {
8512          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02390",
8513          "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure 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>"
8514        }
8515      ],
8516      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
8517        {
8518          "vuid": "VUID-VkMemoryAllocateInfo-opaqueCaptureAddress-03329",
8519          "text": " If <a href=\"#VkMemoryOpaqueCaptureAddressAllocateInfo\">VkMemoryOpaqueCaptureAddressAllocateInfo</a>::<code>opaqueCaptureAddress</code> is not zero, <code>VkMemoryAllocateFlagsInfo</code>::<code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code>"
8520        },
8521        {
8522          "vuid": "VUID-VkMemoryAllocateInfo-flags-03330",
8523          "text": " If <code>VkMemoryAllocateFlagsInfo</code>::<code>flags</code> includes <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code>, the <a href=\"#features-bufferDeviceAddressCaptureReplay\">bufferDeviceAddressCaptureReplay</a> feature <strong class=\"purple\">must</strong> be enabled"
8524        },
8525        {
8526          "vuid": "VUID-VkMemoryAllocateInfo-flags-03331",
8527          "text": " If <code>VkMemoryAllocateFlagsInfo</code>::<code>flags</code> includes <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT</code>, the <a href=\"#features-bufferDeviceAddress\">bufferDeviceAddress</a> feature <strong class=\"purple\">must</strong> be enabled"
8528        },
8529        {
8530          "vuid": "VUID-VkMemoryAllocateInfo-opaqueCaptureAddress-03333",
8531          "text": " If the parameters define an import operation, <a href=\"#VkMemoryOpaqueCaptureAddressAllocateInfo\">VkMemoryOpaqueCaptureAddressAllocateInfo</a>::<code>opaqueCaptureAddress</code> <strong class=\"purple\">must</strong> be zero"
8532        }
8533      ],
8534      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)+(VK_EXT_external_memory_host)": [
8535        {
8536          "vuid": "VUID-VkMemoryAllocateInfo-pNext-03332",
8537          "text": " If the <code>pNext</code> chain includes a <code>VkImportMemoryHostPointerInfoEXT</code> structure, <a href=\"#VkMemoryOpaqueCaptureAddressAllocateInfo\">VkMemoryOpaqueCaptureAddressAllocateInfo</a>::<code>opaqueCaptureAddress</code> <strong class=\"purple\">must</strong> be zero"
8538        }
8539      ],
8540      "core": [
8541        {
8542          "vuid": "VUID-VkMemoryAllocateInfo-sType-sType",
8543          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO</code>"
8544        },
8545        {
8546          "vuid": "VUID-VkMemoryAllocateInfo-pNext-pNext",
8547          "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>, <a href=\"#VkMemoryOpaqueCaptureAddressAllocateInfo\">VkMemoryOpaqueCaptureAddressAllocateInfo</a>, or <a href=\"#VkMemoryPriorityAllocateInfoEXT\">VkMemoryPriorityAllocateInfoEXT</a>"
8548        },
8549        {
8550          "vuid": "VUID-VkMemoryAllocateInfo-sType-unique",
8551          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
8552        }
8553      ]
8554    },
8555    "VkMemoryDedicatedAllocateInfo": {
8556      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
8557        {
8558          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01432",
8559          "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>"
8560        },
8561        {
8562          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01434",
8563          "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 <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code>"
8564        },
8565        {
8566          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01436",
8567          "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>"
8568        },
8569        {
8570          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-sType-sType",
8571          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO</code>"
8572        },
8573        {
8574          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-parameter",
8575          "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 <a href=\"#VkImage\">VkImage</a> handle"
8576        },
8577        {
8578          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-parameter",
8579          "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 <a href=\"#VkBuffer\">VkBuffer</a> handle"
8580        },
8581        {
8582          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-commonparent",
8583          "text": " Both of <code>buffer</code>, and <code>image</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
8584        }
8585      ],
8586      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
8587        {
8588          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01433",
8589          "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"
8590        },
8591        {
8592          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01435",
8593          "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"
8594        }
8595      ],
8596      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
8597        {
8598          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-02964",
8599          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and the memory is not an imported Android Hardware Buffer, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the image"
8600        },
8601        {
8602          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-02965",
8603          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and the memory is not an imported Android Hardware Buffer, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the buffer"
8604        }
8605      ],
8606      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_external_memory_win32)": [
8607        {
8608          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01876",
8609          "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"
8610        },
8611        {
8612          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01877",
8613          "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> <strong class=\"purple\">must</strong> be identical to the buffer associated with the imported memory"
8614        }
8615      ],
8616      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_external_memory_fd)": [
8617        {
8618          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01878",
8619          "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> <strong class=\"purple\">must</strong> be identical to the image associated with the imported memory"
8620        },
8621        {
8622          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01879",
8623          "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> <strong class=\"purple\">must</strong> be identical to the buffer associated with the imported memory"
8624        }
8625      ],
8626      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_sampler_ycbcr_conversion)": [
8627        {
8628          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01797",
8629          "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>"
8630        }
8631      ]
8632    },
8633    "VkDedicatedAllocationMemoryAllocateInfoNV": {
8634      "(VK_NV_dedicated_allocation)": [
8635        {
8636          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00649",
8637          "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>"
8638        },
8639        {
8640          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00650",
8641          "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 <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>"
8642        },
8643        {
8644          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00651",
8645          "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 <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>"
8646        },
8647        {
8648          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00652",
8649          "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"
8650        },
8651        {
8652          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00653",
8653          "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"
8654        },
8655        {
8656          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-sType-sType",
8657          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV</code>"
8658        },
8659        {
8660          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-parameter",
8661          "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 <a href=\"#VkImage\">VkImage</a> handle"
8662        },
8663        {
8664          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-parameter",
8665          "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 <a href=\"#VkBuffer\">VkBuffer</a> handle"
8666        },
8667        {
8668          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-commonparent",
8669          "text": " Both of <code>buffer</code>, and <code>image</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
8670        }
8671      ],
8672      "(VK_NV_dedicated_allocation)+(VK_KHR_external_memory_win32,VK_KHR_external_memory_fd)": [
8673        {
8674          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00654",
8675          "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"
8676        },
8677        {
8678          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00655",
8679          "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"
8680        }
8681      ]
8682    },
8683    "VkMemoryPriorityAllocateInfoEXT": {
8684      "(VK_EXT_memory_priority)": [
8685        {
8686          "vuid": "VUID-VkMemoryPriorityAllocateInfoEXT-priority-02602",
8687          "text": " <code>priority</code> <strong class=\"purple\">must</strong> be between <code>0</code> and <code>1</code>, inclusive"
8688        },
8689        {
8690          "vuid": "VUID-VkMemoryPriorityAllocateInfoEXT-sType-sType",
8691          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT</code>"
8692        }
8693      ]
8694    },
8695    "VkExportMemoryAllocateInfo": {
8696      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
8697        {
8698          "vuid": "VUID-VkExportMemoryAllocateInfo-handleTypes-00656",
8699          "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>"
8700        },
8701        {
8702          "vuid": "VUID-VkExportMemoryAllocateInfo-sType-sType",
8703          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO</code>"
8704        },
8705        {
8706          "vuid": "VUID-VkExportMemoryAllocateInfo-handleTypes-parameter",
8707          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values"
8708        }
8709      ]
8710    },
8711    "VkExportMemoryWin32HandleInfoKHR": {
8712      "(VK_KHR_external_memory_win32)": [
8713        {
8714          "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-handleTypes-00657",
8715          "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>, a <code>VkExportMemoryWin32HandleInfoKHR</code> structure <strong class=\"purple\">must</strong> not be included in the <code>pNext</code> chain of <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a>"
8716        },
8717        {
8718          "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-sType-sType",
8719          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR</code>"
8720        },
8721        {
8722          "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-pAttributes-parameter",
8723          "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"
8724        }
8725      ]
8726    },
8727    "VkImportMemoryWin32HandleInfoKHR": {
8728      "(VK_KHR_external_memory_win32)": [
8729        {
8730          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00658",
8731          "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>"
8732        },
8733        {
8734          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-00659",
8735          "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>"
8736        },
8737        {
8738          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00660",
8739          "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"
8740        },
8741        {
8742          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01439",
8743          "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>"
8744        },
8745        {
8746          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01440",
8747          "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>"
8748        },
8749        {
8750          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00661",
8751          "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>"
8752        },
8753        {
8754          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-01441",
8755          "text": " if <code>handle</code> is not <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
8756        },
8757        {
8758          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-01518",
8759          "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>"
8760        },
8761        {
8762          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-name-01519",
8763          "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>"
8764        },
8765        {
8766          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-sType-sType",
8767          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR</code>"
8768        },
8769        {
8770          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-parameter",
8771          "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"
8772        }
8773      ]
8774    },
8775    "vkGetMemoryWin32HandleKHR": {
8776      "(VK_KHR_external_memory_win32)": [
8777        {
8778          "vuid": "VUID-vkGetMemoryWin32HandleKHR-device-parameter",
8779          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
8780        },
8781        {
8782          "vuid": "VUID-vkGetMemoryWin32HandleKHR-pGetWin32HandleInfo-parameter",
8783          "text": " <code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryGetWin32HandleInfoKHR\">VkMemoryGetWin32HandleInfoKHR</a> structure"
8784        },
8785        {
8786          "vuid": "VUID-vkGetMemoryWin32HandleKHR-pHandle-parameter",
8787          "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value"
8788        }
8789      ]
8790    },
8791    "VkMemoryGetWin32HandleInfoKHR": {
8792      "(VK_KHR_external_memory_win32)": [
8793        {
8794          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00662",
8795          "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"
8796        },
8797        {
8798          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00663",
8799          "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>"
8800        },
8801        {
8802          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00664",
8803          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle"
8804        },
8805        {
8806          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-sType-sType",
8807          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR</code>"
8808        },
8809        {
8810          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-pNext-pNext",
8811          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
8812        },
8813        {
8814          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-memory-parameter",
8815          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
8816        },
8817        {
8818          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-parameter",
8819          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
8820        }
8821      ]
8822    },
8823    "vkGetMemoryWin32HandlePropertiesKHR": {
8824      "(VK_KHR_external_memory_win32)": [
8825        {
8826          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handle-00665",
8827          "text": " <code>handle</code> <strong class=\"purple\">must</strong> be an external memory handle created outside of the Vulkan API"
8828        },
8829        {
8830          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-00666",
8831          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be one of the handle types defined as opaque"
8832        },
8833        {
8834          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-device-parameter",
8835          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
8836        },
8837        {
8838          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-parameter",
8839          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
8840        },
8841        {
8842          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-pMemoryWin32HandleProperties-parameter",
8843          "text": " <code>pMemoryWin32HandleProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryWin32HandlePropertiesKHR\">VkMemoryWin32HandlePropertiesKHR</a> structure"
8844        }
8845      ]
8846    },
8847    "VkMemoryWin32HandlePropertiesKHR": {
8848      "(VK_KHR_external_memory_win32)": [
8849        {
8850          "vuid": "VUID-VkMemoryWin32HandlePropertiesKHR-sType-sType",
8851          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR</code>"
8852        },
8853        {
8854          "vuid": "VUID-VkMemoryWin32HandlePropertiesKHR-pNext-pNext",
8855          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
8856        }
8857      ]
8858    },
8859    "VkImportMemoryFdInfoKHR": {
8860      "(VK_KHR_external_memory_fd)": [
8861        {
8862          "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00667",
8863          "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>"
8864        },
8865        {
8866          "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-00668",
8867          "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>"
8868        },
8869        {
8870          "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00669",
8871          "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle"
8872        },
8873        {
8874          "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00670",
8875          "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>"
8876        },
8877        {
8878          "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-01746",
8879          "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>"
8880        },
8881        {
8882          "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-01520",
8883          "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>"
8884        },
8885        {
8886          "vuid": "VUID-VkImportMemoryFdInfoKHR-sType-sType",
8887          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR</code>"
8888        },
8889        {
8890          "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-parameter",
8891          "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"
8892        }
8893      ]
8894    },
8895    "vkGetMemoryFdKHR": {
8896      "(VK_KHR_external_memory_fd)": [
8897        {
8898          "vuid": "VUID-vkGetMemoryFdKHR-device-parameter",
8899          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
8900        },
8901        {
8902          "vuid": "VUID-vkGetMemoryFdKHR-pGetFdInfo-parameter",
8903          "text": " <code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryGetFdInfoKHR\">VkMemoryGetFdInfoKHR</a> structure"
8904        },
8905        {
8906          "vuid": "VUID-vkGetMemoryFdKHR-pFd-parameter",
8907          "text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>int</code> value"
8908        }
8909      ]
8910    },
8911    "VkMemoryGetFdInfoKHR": {
8912      "(VK_KHR_external_memory_fd)": [
8913        {
8914          "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-00671",
8915          "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"
8916        },
8917        {
8918          "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-00672",
8919          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle"
8920        },
8921        {
8922          "vuid": "VUID-VkMemoryGetFdInfoKHR-sType-sType",
8923          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR</code>"
8924        },
8925        {
8926          "vuid": "VUID-VkMemoryGetFdInfoKHR-pNext-pNext",
8927          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
8928        },
8929        {
8930          "vuid": "VUID-VkMemoryGetFdInfoKHR-memory-parameter",
8931          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
8932        },
8933        {
8934          "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-parameter",
8935          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
8936        }
8937      ]
8938    },
8939    "vkGetMemoryFdPropertiesKHR": {
8940      "(VK_KHR_external_memory_fd)": [
8941        {
8942          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-fd-00673",
8943          "text": " <code>fd</code> <strong class=\"purple\">must</strong> be an external memory handle created outside of the Vulkan API"
8944        },
8945        {
8946          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-handleType-00674",
8947          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR</code>"
8948        },
8949        {
8950          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-device-parameter",
8951          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
8952        },
8953        {
8954          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-handleType-parameter",
8955          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
8956        },
8957        {
8958          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-pMemoryFdProperties-parameter",
8959          "text": " <code>pMemoryFdProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryFdPropertiesKHR\">VkMemoryFdPropertiesKHR</a> structure"
8960        }
8961      ]
8962    },
8963    "VkMemoryFdPropertiesKHR": {
8964      "(VK_KHR_external_memory_fd)": [
8965        {
8966          "vuid": "VUID-VkMemoryFdPropertiesKHR-sType-sType",
8967          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR</code>"
8968        },
8969        {
8970          "vuid": "VUID-VkMemoryFdPropertiesKHR-pNext-pNext",
8971          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
8972        }
8973      ]
8974    },
8975    "VkImportMemoryHostPointerInfoEXT": {
8976      "(VK_EXT_external_memory_host)": [
8977        {
8978          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01747",
8979          "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=\"#VkExternalMemoryProperties\">VkExternalMemoryProperties</a>"
8980        },
8981        {
8982          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01748",
8983          "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>"
8984        },
8985        {
8986          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-pHostPointer-01749",
8987          "text": " <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer aligned to an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>"
8988        },
8989        {
8990          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01750",
8991          "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"
8992        },
8993        {
8994          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01751",
8995          "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"
8996        },
8997        {
8998          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-sType-sType",
8999          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT</code>"
9000        },
9001        {
9002          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-parameter",
9003          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
9004        }
9005      ]
9006    },
9007    "vkGetMemoryHostPointerPropertiesEXT": {
9008      "(VK_EXT_external_memory_host)": [
9009        {
9010          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01752",
9011          "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>"
9012        },
9013        {
9014          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-pHostPointer-01753",
9015          "text": " <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer aligned to an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>"
9016        },
9017        {
9018          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01754",
9019          "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"
9020        },
9021        {
9022          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01755",
9023          "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"
9024        },
9025        {
9026          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-device-parameter",
9027          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9028        },
9029        {
9030          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-parameter",
9031          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
9032        },
9033        {
9034          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-pMemoryHostPointerProperties-parameter",
9035          "text": " <code>pMemoryHostPointerProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryHostPointerPropertiesEXT\">VkMemoryHostPointerPropertiesEXT</a> structure"
9036        }
9037      ]
9038    },
9039    "VkMemoryHostPointerPropertiesEXT": {
9040      "(VK_EXT_external_memory_host)": [
9041        {
9042          "vuid": "VUID-VkMemoryHostPointerPropertiesEXT-sType-sType",
9043          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT</code>"
9044        },
9045        {
9046          "vuid": "VUID-VkMemoryHostPointerPropertiesEXT-pNext-pNext",
9047          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
9048        }
9049      ]
9050    },
9051    "VkImportAndroidHardwareBufferInfoANDROID": {
9052      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
9053        {
9054          "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01880",
9055          "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>"
9056        },
9057        {
9058          "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01881",
9059          "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>usage</code> compatible with Vulkan as described in <a href=\"#memory-external-android-hardware-buffer\">Android Hardware Buffers</a>"
9060        },
9061        {
9062          "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-sType-sType",
9063          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID</code>"
9064        },
9065        {
9066          "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-parameter",
9067          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>AHardwareBuffer</code> value"
9068        }
9069      ]
9070    },
9071    "vkGetMemoryAndroidHardwareBufferANDROID": {
9072      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
9073        {
9074          "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-device-parameter",
9075          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9076        },
9077        {
9078          "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-pInfo-parameter",
9079          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryGetAndroidHardwareBufferInfoANDROID\">VkMemoryGetAndroidHardwareBufferInfoANDROID</a> structure"
9080        },
9081        {
9082          "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-pBuffer-parameter",
9083          "text": " <code>pBuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid pointer to an <code>AHardwareBuffer</code> value"
9084        }
9085      ]
9086    },
9087    "VkMemoryGetAndroidHardwareBufferInfoANDROID": {
9088      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
9089        {
9090          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-handleTypes-01882",
9091          "text": " <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> when <code>memory</code> was created"
9092        },
9093        {
9094          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-pNext-01883",
9095          "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>"
9096        },
9097        {
9098          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-sType-sType",
9099          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID</code>"
9100        },
9101        {
9102          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-pNext-pNext",
9103          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
9104        },
9105        {
9106          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-memory-parameter",
9107          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
9108        }
9109      ]
9110    },
9111    "vkGetAndroidHardwareBufferPropertiesANDROID": {
9112      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
9113        {
9114          "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-01884",
9115          "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>"
9116        },
9117        {
9118          "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-device-parameter",
9119          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9120        },
9121        {
9122          "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-parameter",
9123          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>AHardwareBuffer</code> value"
9124        },
9125        {
9126          "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-pProperties-parameter",
9127          "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkAndroidHardwareBufferPropertiesANDROID\">VkAndroidHardwareBufferPropertiesANDROID</a> structure"
9128        }
9129      ]
9130    },
9131    "VkAndroidHardwareBufferPropertiesANDROID": {
9132      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
9133        {
9134          "vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-sType-sType",
9135          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID</code>"
9136        },
9137        {
9138          "vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-pNext-pNext",
9139          "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>"
9140        },
9141        {
9142          "vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-sType-unique",
9143          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
9144        }
9145      ]
9146    },
9147    "VkAndroidHardwareBufferFormatPropertiesANDROID": {
9148      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
9149        {
9150          "vuid": "VUID-VkAndroidHardwareBufferFormatPropertiesANDROID-sType-sType",
9151          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID</code>"
9152        }
9153      ]
9154    },
9155    "VkExportMemoryAllocateInfoNV": {
9156      "(VK_NV_external_memory)": [
9157        {
9158          "vuid": "VUID-VkExportMemoryAllocateInfoNV-sType-sType",
9159          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV</code>"
9160        },
9161        {
9162          "vuid": "VUID-VkExportMemoryAllocateInfoNV-handleTypes-parameter",
9163          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
9164        }
9165      ]
9166    },
9167    "VkExportMemoryWin32HandleInfoNV": {
9168      "(VK_NV_external_memory_win32)": [
9169        {
9170          "vuid": "VUID-VkExportMemoryWin32HandleInfoNV-sType-sType",
9171          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV</code>"
9172        },
9173        {
9174          "vuid": "VUID-VkExportMemoryWin32HandleInfoNV-pAttributes-parameter",
9175          "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"
9176        }
9177      ]
9178    },
9179    "VkImportMemoryWin32HandleInfoNV": {
9180      "(VK_NV_external_memory_win32)": [
9181        {
9182          "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handleType-01327",
9183          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not have more than one bit set"
9184        },
9185        {
9186          "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handle-01328",
9187          "text": " <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle to memory, obtained as specified by <code>handleType</code>"
9188        },
9189        {
9190          "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-sType-sType",
9191          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV</code>"
9192        },
9193        {
9194          "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handleType-parameter",
9195          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
9196        }
9197      ]
9198    },
9199    "vkGetMemoryWin32HandleNV": {
9200      "(VK_NV_external_memory_win32)": [
9201        {
9202          "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-01326",
9203          "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>"
9204        },
9205        {
9206          "vuid": "VUID-vkGetMemoryWin32HandleNV-device-parameter",
9207          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9208        },
9209        {
9210          "vuid": "VUID-vkGetMemoryWin32HandleNV-memory-parameter",
9211          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
9212        },
9213        {
9214          "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-parameter",
9215          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
9216        },
9217        {
9218          "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-requiredbitmask",
9219          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
9220        },
9221        {
9222          "vuid": "VUID-vkGetMemoryWin32HandleNV-pHandle-parameter",
9223          "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value"
9224        },
9225        {
9226          "vuid": "VUID-vkGetMemoryWin32HandleNV-memory-parent",
9227          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
9228        }
9229      ]
9230    },
9231    "VkMemoryAllocateFlagsInfo": {
9232      "(VK_VERSION_1_1,VK_KHR_device_group)": [
9233        {
9234          "vuid": "VUID-VkMemoryAllocateFlagsInfo-deviceMask-00675",
9235          "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"
9236        },
9237        {
9238          "vuid": "VUID-VkMemoryAllocateFlagsInfo-deviceMask-00676",
9239          "text": " If <code>VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT</code> is set, <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
9240        },
9241        {
9242          "vuid": "VUID-VkMemoryAllocateFlagsInfo-sType-sType",
9243          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO</code>"
9244        },
9245        {
9246          "vuid": "VUID-VkMemoryAllocateFlagsInfo-flags-parameter",
9247          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkMemoryAllocateFlagBits\">VkMemoryAllocateFlagBits</a> values"
9248        }
9249      ]
9250    },
9251    "VkMemoryOpaqueCaptureAddressAllocateInfo": {
9252      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
9253        {
9254          "vuid": "VUID-VkMemoryOpaqueCaptureAddressAllocateInfo-sType-sType",
9255          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO</code>"
9256        }
9257      ]
9258    },
9259    "vkFreeMemory": {
9260      "core": [
9261        {
9262          "vuid": "VUID-vkFreeMemory-memory-00677",
9263          "text": " All submitted commands that refer to <code>memory</code> (via images or buffers) <strong class=\"purple\">must</strong> have completed execution"
9264        },
9265        {
9266          "vuid": "VUID-vkFreeMemory-device-parameter",
9267          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9268        },
9269        {
9270          "vuid": "VUID-vkFreeMemory-memory-parameter",
9271          "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 <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
9272        },
9273        {
9274          "vuid": "VUID-vkFreeMemory-pAllocator-parameter",
9275          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
9276        },
9277        {
9278          "vuid": "VUID-vkFreeMemory-memory-parent",
9279          "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>"
9280        }
9281      ]
9282    },
9283    "vkMapMemory": {
9284      "core": [
9285        {
9286          "vuid": "VUID-vkMapMemory-memory-00678",
9287          "text": " <code>memory</code> <strong class=\"purple\">must</strong> not be currently host mapped"
9288        },
9289        {
9290          "vuid": "VUID-vkMapMemory-offset-00679",
9291          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
9292        },
9293        {
9294          "vuid": "VUID-vkMapMemory-size-00680",
9295          "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>"
9296        },
9297        {
9298          "vuid": "VUID-vkMapMemory-size-00681",
9299          "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>"
9300        },
9301        {
9302          "vuid": "VUID-vkMapMemory-memory-00682",
9303          "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>"
9304        },
9305        {
9306          "vuid": "VUID-vkMapMemory-device-parameter",
9307          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9308        },
9309        {
9310          "vuid": "VUID-vkMapMemory-memory-parameter",
9311          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
9312        },
9313        {
9314          "vuid": "VUID-vkMapMemory-flags-zerobitmask",
9315          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
9316        },
9317        {
9318          "vuid": "VUID-vkMapMemory-ppData-parameter",
9319          "text": " <code>ppData</code> <strong class=\"purple\">must</strong> be a valid pointer to a pointer value"
9320        },
9321        {
9322          "vuid": "VUID-vkMapMemory-memory-parent",
9323          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
9324        }
9325      ],
9326      "(VK_KHR_device_group)": [
9327        {
9328          "vuid": "VUID-vkMapMemory-memory-00683",
9329          "text": " <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated with multiple instances"
9330        }
9331      ]
9332    },
9333    "vkFlushMappedMemoryRanges": {
9334      "core": [
9335        {
9336          "vuid": "VUID-vkFlushMappedMemoryRanges-device-parameter",
9337          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9338        },
9339        {
9340          "vuid": "VUID-vkFlushMappedMemoryRanges-pMemoryRanges-parameter",
9341          "text": " <code>pMemoryRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryRangeCount</code> valid <a href=\"#VkMappedMemoryRange\">VkMappedMemoryRange</a> structures"
9342        },
9343        {
9344          "vuid": "VUID-vkFlushMappedMemoryRanges-memoryRangeCount-arraylength",
9345          "text": " <code>memoryRangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
9346        }
9347      ]
9348    },
9349    "vkInvalidateMappedMemoryRanges": {
9350      "core": [
9351        {
9352          "vuid": "VUID-vkInvalidateMappedMemoryRanges-device-parameter",
9353          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9354        },
9355        {
9356          "vuid": "VUID-vkInvalidateMappedMemoryRanges-pMemoryRanges-parameter",
9357          "text": " <code>pMemoryRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryRangeCount</code> valid <a href=\"#VkMappedMemoryRange\">VkMappedMemoryRange</a> structures"
9358        },
9359        {
9360          "vuid": "VUID-vkInvalidateMappedMemoryRanges-memoryRangeCount-arraylength",
9361          "text": " <code>memoryRangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
9362        }
9363      ]
9364    },
9365    "VkMappedMemoryRange": {
9366      "core": [
9367        {
9368          "vuid": "VUID-VkMappedMemoryRange-memory-00684",
9369          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be currently host mapped"
9370        },
9371        {
9372          "vuid": "VUID-VkMappedMemoryRange-size-00685",
9373          "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>"
9374        },
9375        {
9376          "vuid": "VUID-VkMappedMemoryRange-size-00686",
9377          "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>"
9378        },
9379        {
9380          "vuid": "VUID-VkMappedMemoryRange-size-01389",
9381          "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"
9382        },
9383        {
9384          "vuid": "VUID-VkMappedMemoryRange-offset-00687",
9385          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>nonCoherentAtomSize</code>"
9386        },
9387        {
9388          "vuid": "VUID-VkMappedMemoryRange-size-01390",
9389          "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>"
9390        },
9391        {
9392          "vuid": "VUID-VkMappedMemoryRange-sType-sType",
9393          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE</code>"
9394        },
9395        {
9396          "vuid": "VUID-VkMappedMemoryRange-pNext-pNext",
9397          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
9398        },
9399        {
9400          "vuid": "VUID-VkMappedMemoryRange-memory-parameter",
9401          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
9402        }
9403      ]
9404    },
9405    "vkUnmapMemory": {
9406      "core": [
9407        {
9408          "vuid": "VUID-vkUnmapMemory-memory-00689",
9409          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be currently host mapped"
9410        },
9411        {
9412          "vuid": "VUID-vkUnmapMemory-device-parameter",
9413          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9414        },
9415        {
9416          "vuid": "VUID-vkUnmapMemory-memory-parameter",
9417          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
9418        },
9419        {
9420          "vuid": "VUID-vkUnmapMemory-memory-parent",
9421          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
9422        }
9423      ]
9424    },
9425    "vkGetDeviceMemoryCommitment": {
9426      "core": [
9427        {
9428          "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-00690",
9429          "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>"
9430        },
9431        {
9432          "vuid": "VUID-vkGetDeviceMemoryCommitment-device-parameter",
9433          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9434        },
9435        {
9436          "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-parameter",
9437          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
9438        },
9439        {
9440          "vuid": "VUID-vkGetDeviceMemoryCommitment-pCommittedMemoryInBytes-parameter",
9441          "text": " <code>pCommittedMemoryInBytes</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceSize</code> value"
9442        },
9443        {
9444          "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-parent",
9445          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
9446        }
9447      ]
9448    },
9449    "vkGetDeviceGroupPeerMemoryFeatures": {
9450      "(VK_VERSION_1_1,VK_KHR_device_group)": [
9451        {
9452          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-heapIndex-00691",
9453          "text": " <code>heapIndex</code> <strong class=\"purple\">must</strong> be less than <code>memoryHeapCount</code>"
9454        },
9455        {
9456          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00692",
9457          "text": " <code>localDeviceIndex</code> <strong class=\"purple\">must</strong> be a valid device index"
9458        },
9459        {
9460          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-remoteDeviceIndex-00693",
9461          "text": " <code>remoteDeviceIndex</code> <strong class=\"purple\">must</strong> be a valid device index"
9462        },
9463        {
9464          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00694",
9465          "text": " <code>localDeviceIndex</code> <strong class=\"purple\">must</strong> not equal <code>remoteDeviceIndex</code>"
9466        },
9467        {
9468          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-device-parameter",
9469          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9470        },
9471        {
9472          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-pPeerMemoryFeatures-parameter",
9473          "text": " <code>pPeerMemoryFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPeerMemoryFeatureFlags\">VkPeerMemoryFeatureFlags</a> value"
9474        }
9475      ]
9476    },
9477    "vkGetDeviceMemoryOpaqueCaptureAddress": {
9478      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
9479        {
9480          "vuid": "VUID-vkGetDeviceMemoryOpaqueCaptureAddress-None-03334",
9481          "text": " The <a href=\"#features-bufferDeviceAddress\">bufferDeviceAddress</a> feature <strong class=\"purple\">must</strong> be enabled"
9482        },
9483        {
9484          "vuid": "VUID-vkGetDeviceMemoryOpaqueCaptureAddress-device-03335",
9485          "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"
9486        },
9487        {
9488          "vuid": "VUID-vkGetDeviceMemoryOpaqueCaptureAddress-device-parameter",
9489          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9490        },
9491        {
9492          "vuid": "VUID-vkGetDeviceMemoryOpaqueCaptureAddress-pInfo-parameter",
9493          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDeviceMemoryOpaqueCaptureAddressInfo\">VkDeviceMemoryOpaqueCaptureAddressInfo</a> structure"
9494        }
9495      ]
9496    },
9497    "VkDeviceMemoryOpaqueCaptureAddressInfo": {
9498      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
9499        {
9500          "vuid": "VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-memory-03336",
9501          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated with <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT</code>"
9502        },
9503        {
9504          "vuid": "VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-sType-sType",
9505          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO</code>"
9506        },
9507        {
9508          "vuid": "VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-pNext-pNext",
9509          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
9510        },
9511        {
9512          "vuid": "VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-memory-parameter",
9513          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
9514        }
9515      ]
9516    },
9517    "vkCreateBuffer": {
9518      "core": [
9519        {
9520          "vuid": "VUID-vkCreateBuffer-flags-00911",
9521          "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>"
9522        },
9523        {
9524          "vuid": "VUID-vkCreateBuffer-device-parameter",
9525          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9526        },
9527        {
9528          "vuid": "VUID-vkCreateBuffer-pCreateInfo-parameter",
9529          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferCreateInfo\">VkBufferCreateInfo</a> structure"
9530        },
9531        {
9532          "vuid": "VUID-vkCreateBuffer-pAllocator-parameter",
9533          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
9534        },
9535        {
9536          "vuid": "VUID-vkCreateBuffer-pBuffer-parameter",
9537          "text": " <code>pBuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkBuffer\">VkBuffer</a> handle"
9538        }
9539      ]
9540    },
9541    "VkBufferCreateInfo": {
9542      "core": [
9543        {
9544          "vuid": "VUID-VkBufferCreateInfo-size-00912",
9545          "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
9546        },
9547        {
9548          "vuid": "VUID-VkBufferCreateInfo-sharingMode-00913",
9549          "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"
9550        },
9551        {
9552          "vuid": "VUID-VkBufferCreateInfo-sharingMode-00914",
9553          "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>"
9554        },
9555        {
9556          "vuid": "VUID-VkBufferCreateInfo-flags-00915",
9557          "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>"
9558        },
9559        {
9560          "vuid": "VUID-VkBufferCreateInfo-flags-00916",
9561          "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>"
9562        },
9563        {
9564          "vuid": "VUID-VkBufferCreateInfo-flags-00917",
9565          "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>"
9566        },
9567        {
9568          "vuid": "VUID-VkBufferCreateInfo-flags-00918",
9569          "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>"
9570        },
9571        {
9572          "vuid": "VUID-VkBufferCreateInfo-sType-sType",
9573          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO</code>"
9574        },
9575        {
9576          "vuid": "VUID-VkBufferCreateInfo-pNext-pNext",
9577          "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=\"#VkBufferOpaqueCaptureAddressCreateInfo\">VkBufferOpaqueCaptureAddressCreateInfo</a>, <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>, or <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>"
9578        },
9579        {
9580          "vuid": "VUID-VkBufferCreateInfo-sType-unique",
9581          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
9582        },
9583        {
9584          "vuid": "VUID-VkBufferCreateInfo-flags-parameter",
9585          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferCreateFlagBits\">VkBufferCreateFlagBits</a> values"
9586        },
9587        {
9588          "vuid": "VUID-VkBufferCreateInfo-usage-parameter",
9589          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferUsageFlagBits\">VkBufferUsageFlagBits</a> values"
9590        },
9591        {
9592          "vuid": "VUID-VkBufferCreateInfo-usage-requiredbitmask",
9593          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
9594        },
9595        {
9596          "vuid": "VUID-VkBufferCreateInfo-sharingMode-parameter",
9597          "text": " <code>sharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value"
9598        }
9599      ],
9600      "!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
9601        {
9602          "vuid": "VUID-VkBufferCreateInfo-sharingMode-01391",
9603          "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>"
9604        }
9605      ],
9606      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
9607        {
9608          "vuid": "VUID-VkBufferCreateInfo-sharingMode-01419",
9609          "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>"
9610        }
9611      ],
9612      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
9613        {
9614          "vuid": "VUID-VkBufferCreateInfo-pNext-00920",
9615          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a> structure, 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-&gt;handleType</code> equal to any one of the handle types specified in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code>"
9616        }
9617      ],
9618      "(VK_VERSION_1_1)": [
9619        {
9620          "vuid": "VUID-VkBufferCreateInfo-flags-01887",
9621          "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>"
9622        },
9623        {
9624          "vuid": "VUID-VkBufferCreateInfo-None-01888",
9625          "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"
9626        }
9627      ],
9628      "(VK_NV_dedicated_allocation)": [
9629        {
9630          "vuid": "VUID-VkBufferCreateInfo-pNext-01571",
9631          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a> structure, 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>"
9632        }
9633      ],
9634      "(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)+(VK_EXT_buffer_device_address)": [
9635        {
9636          "vuid": "VUID-VkBufferCreateInfo-deviceAddress-02604",
9637          "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</code>"
9638        }
9639      ],
9640      "(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)+(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
9641        {
9642          "vuid": "VUID-VkBufferCreateInfo-opaqueCaptureAddress-03337",
9643          "text": " If <a href=\"#VkBufferOpaqueCaptureAddressCreateInfo\">VkBufferOpaqueCaptureAddressCreateInfo</a>::<code>opaqueCaptureAddress</code> is not zero, <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code>"
9644        }
9645      ],
9646      "(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)": [
9647        {
9648          "vuid": "VUID-VkBufferCreateInfo-flags-03338",
9649          "text": " If <code>flags</code> includes <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code>, the <a href=\"#features-bufferDeviceAddressCaptureReplay\">bufferDeviceAddressCaptureReplay</a> or <a href=\"#features-bufferDeviceAddressCaptureReplayEXT\"><code>VkPhysicalDeviceBufferDeviceAddressFeaturesEXT</code>::<code>bufferDeviceAddressCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled"
9650        }
9651      ]
9652    },
9653    "VkDedicatedAllocationBufferCreateInfoNV": {
9654      "(VK_NV_dedicated_allocation)": [
9655        {
9656          "vuid": "VUID-VkDedicatedAllocationBufferCreateInfoNV-sType-sType",
9657          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV</code>"
9658        }
9659      ]
9660    },
9661    "VkExternalMemoryBufferCreateInfo": {
9662      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
9663        {
9664          "vuid": "VUID-VkExternalMemoryBufferCreateInfo-sType-sType",
9665          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO</code>"
9666        },
9667        {
9668          "vuid": "VUID-VkExternalMemoryBufferCreateInfo-handleTypes-parameter",
9669          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values"
9670        }
9671      ]
9672    },
9673    "VkBufferOpaqueCaptureAddressCreateInfo": {
9674      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
9675        {
9676          "vuid": "VUID-VkBufferOpaqueCaptureAddressCreateInfo-sType-sType",
9677          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO</code>"
9678        }
9679      ]
9680    },
9681    "VkBufferDeviceAddressCreateInfoEXT": {
9682      "(VK_EXT_buffer_device_address)": [
9683        {
9684          "vuid": "VUID-VkBufferDeviceAddressCreateInfoEXT-sType-sType",
9685          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT</code>"
9686        }
9687      ]
9688    },
9689    "vkDestroyBuffer": {
9690      "core": [
9691        {
9692          "vuid": "VUID-vkDestroyBuffer-buffer-00922",
9693          "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"
9694        },
9695        {
9696          "vuid": "VUID-vkDestroyBuffer-buffer-00923",
9697          "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"
9698        },
9699        {
9700          "vuid": "VUID-vkDestroyBuffer-buffer-00924",
9701          "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>"
9702        },
9703        {
9704          "vuid": "VUID-vkDestroyBuffer-device-parameter",
9705          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9706        },
9707        {
9708          "vuid": "VUID-vkDestroyBuffer-buffer-parameter",
9709          "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 <a href=\"#VkBuffer\">VkBuffer</a> handle"
9710        },
9711        {
9712          "vuid": "VUID-vkDestroyBuffer-pAllocator-parameter",
9713          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
9714        },
9715        {
9716          "vuid": "VUID-vkDestroyBuffer-buffer-parent",
9717          "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>"
9718        }
9719      ]
9720    },
9721    "vkCreateBufferView": {
9722      "core": [
9723        {
9724          "vuid": "VUID-vkCreateBufferView-device-parameter",
9725          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9726        },
9727        {
9728          "vuid": "VUID-vkCreateBufferView-pCreateInfo-parameter",
9729          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferViewCreateInfo\">VkBufferViewCreateInfo</a> structure"
9730        },
9731        {
9732          "vuid": "VUID-vkCreateBufferView-pAllocator-parameter",
9733          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
9734        },
9735        {
9736          "vuid": "VUID-vkCreateBufferView-pView-parameter",
9737          "text": " <code>pView</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkBufferView\">VkBufferView</a> handle"
9738        }
9739      ]
9740    },
9741    "VkBufferViewCreateInfo": {
9742      "core": [
9743        {
9744          "vuid": "VUID-VkBufferViewCreateInfo-offset-00925",
9745          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
9746        },
9747        {
9748          "vuid": "VUID-VkBufferViewCreateInfo-range-00928",
9749          "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>"
9750        },
9751        {
9752          "vuid": "VUID-VkBufferViewCreateInfo-range-00929",
9753          "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>"
9754        },
9755        {
9756          "vuid": "VUID-VkBufferViewCreateInfo-range-00930",
9757          "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, the number of texel buffer elements given by <span class=\"eq\">({lfloor}<code>range</code> / (texel block size){rfloor} {times} (texels per block))</span> where texel block size and texels per block are as defined in the <a href=\"#formats-compatibility\">Compatible Formats</a> table for <code>format</code>, <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxTexelBufferElements</code>"
9758        },
9759        {
9760          "vuid": "VUID-VkBufferViewCreateInfo-offset-00931",
9761          "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>"
9762        },
9763        {
9764          "vuid": "VUID-VkBufferViewCreateInfo-range-04059",
9765          "text": " If <code>range</code> is equal to <code>VK_WHOLE_SIZE</code>, the number of texel buffer elements given by <span class=\"eq\">({lfloor}(size - <code>offset</code>) / (texel block size){rfloor} {times} (texels per block))</span> where size is the size of <code>buffer</code>, and texel block size and texels per block are as defined in the <a href=\"#formats-compatibility\">Compatible Formats</a> table for <code>format</code>, <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxTexelBufferElements</code>"
9766        },
9767        {
9768          "vuid": "VUID-VkBufferViewCreateInfo-buffer-00932",
9769          "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>"
9770        },
9771        {
9772          "vuid": "VUID-VkBufferViewCreateInfo-buffer-00933",
9773          "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>"
9774        },
9775        {
9776          "vuid": "VUID-VkBufferViewCreateInfo-buffer-00934",
9777          "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>"
9778        },
9779        {
9780          "vuid": "VUID-VkBufferViewCreateInfo-buffer-00935",
9781          "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"
9782        },
9783        {
9784          "vuid": "VUID-VkBufferViewCreateInfo-sType-sType",
9785          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO</code>"
9786        },
9787        {
9788          "vuid": "VUID-VkBufferViewCreateInfo-pNext-pNext",
9789          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
9790        },
9791        {
9792          "vuid": "VUID-VkBufferViewCreateInfo-flags-zerobitmask",
9793          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
9794        },
9795        {
9796          "vuid": "VUID-VkBufferViewCreateInfo-buffer-parameter",
9797          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
9798        },
9799        {
9800          "vuid": "VUID-VkBufferViewCreateInfo-format-parameter",
9801          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
9802        }
9803      ],
9804      "!(VK_EXT_texel_buffer_alignment)": [
9805        {
9806          "vuid": "VUID-VkBufferViewCreateInfo-offset-00926",
9807          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minTexelBufferOffsetAlignment</code>"
9808        }
9809      ],
9810      "(VK_EXT_texel_buffer_alignment)": [
9811        {
9812          "vuid": "VUID-VkBufferViewCreateInfo-offset-02749",
9813          "text": " If the <a href=\"#features-texelBufferAlignment\">texelBufferAlignment</a> feature is not enabled, <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minTexelBufferOffsetAlignment</code>"
9814        },
9815        {
9816          "vuid": "VUID-VkBufferViewCreateInfo-buffer-02750",
9817          "text": " If the <a href=\"#features-texelBufferAlignment\">texelBufferAlignment</a> feature is enabled and if <code>buffer</code> was created with <code>usage</code> containing <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code>, <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of the lesser of <a href=\"#VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\">VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</a>::<code>storageTexelBufferOffsetAlignmentBytes</code> or, if <a href=\"#VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\">VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</a>::<code>storageTexelBufferOffsetSingleTexelAlignment</code> is <code>VK_TRUE</code>, the size of a texel of the requested <code>format</code>. If the size of a texel is a multiple of three bytes, then the size of a single component of <code>format</code> is used instead"
9818        },
9819        {
9820          "vuid": "VUID-VkBufferViewCreateInfo-buffer-02751",
9821          "text": " If the <a href=\"#features-texelBufferAlignment\">texelBufferAlignment</a> feature is enabled and if <code>buffer</code> was created with <code>usage</code> containing <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code>, <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of the lesser of <a href=\"#VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\">VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</a>::<code>uniformTexelBufferOffsetAlignmentBytes</code> or, if <a href=\"#VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\">VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</a>::<code>uniformTexelBufferOffsetSingleTexelAlignment</code> is <code>VK_TRUE</code>, the size of a texel of the requested <code>format</code>. If the size of a texel is a multiple of three bytes, then the size of a single component of <code>format</code> is used instead"
9822        }
9823      ]
9824    },
9825    "vkDestroyBufferView": {
9826      "core": [
9827        {
9828          "vuid": "VUID-vkDestroyBufferView-bufferView-00936",
9829          "text": " All submitted commands that refer to <code>bufferView</code> <strong class=\"purple\">must</strong> have completed execution"
9830        },
9831        {
9832          "vuid": "VUID-vkDestroyBufferView-bufferView-00937",
9833          "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"
9834        },
9835        {
9836          "vuid": "VUID-vkDestroyBufferView-bufferView-00938",
9837          "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>"
9838        },
9839        {
9840          "vuid": "VUID-vkDestroyBufferView-device-parameter",
9841          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9842        },
9843        {
9844          "vuid": "VUID-vkDestroyBufferView-bufferView-parameter",
9845          "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 <a href=\"#VkBufferView\">VkBufferView</a> handle"
9846        },
9847        {
9848          "vuid": "VUID-vkDestroyBufferView-pAllocator-parameter",
9849          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
9850        },
9851        {
9852          "vuid": "VUID-vkDestroyBufferView-bufferView-parent",
9853          "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>"
9854        }
9855      ]
9856    },
9857    "vkCreateImage": {
9858      "core": [
9859        {
9860          "vuid": "VUID-vkCreateImage-flags-00939",
9861          "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>"
9862        },
9863        {
9864          "vuid": "VUID-vkCreateImage-device-parameter",
9865          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9866        },
9867        {
9868          "vuid": "VUID-vkCreateImage-pCreateInfo-parameter",
9869          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure"
9870        },
9871        {
9872          "vuid": "VUID-vkCreateImage-pAllocator-parameter",
9873          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
9874        },
9875        {
9876          "vuid": "VUID-vkCreateImage-pImage-parameter",
9877          "text": " <code>pImage</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkImage\">VkImage</a> handle"
9878        }
9879      ]
9880    },
9881    "VkImageCreateInfo": {
9882      "core": [
9883        {
9884          "vuid": "VUID-VkImageCreateInfo-imageCreateMaxMipLevels-02251",
9885          "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>"
9886        },
9887        {
9888          "vuid": "VUID-VkImageCreateInfo-sharingMode-00941",
9889          "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"
9890        },
9891        {
9892          "vuid": "VUID-VkImageCreateInfo-sharingMode-00942",
9893          "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>"
9894        },
9895        {
9896          "vuid": "VUID-VkImageCreateInfo-extent-00944",
9897          "text": " <code>extent.width</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
9898        },
9899        {
9900          "vuid": "VUID-VkImageCreateInfo-extent-00945",
9901          "text": " <code>extent.height</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
9902        },
9903        {
9904          "vuid": "VUID-VkImageCreateInfo-extent-00946",
9905          "text": " <code>extent.depth</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
9906        },
9907        {
9908          "vuid": "VUID-VkImageCreateInfo-mipLevels-00947",
9909          "text": " <code>mipLevels</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
9910        },
9911        {
9912          "vuid": "VUID-VkImageCreateInfo-arrayLayers-00948",
9913          "text": " <code>arrayLayers</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
9914        },
9915        {
9916          "vuid": "VUID-VkImageCreateInfo-flags-00949",
9917          "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>"
9918        },
9919        {
9920          "vuid": "VUID-VkImageCreateInfo-extent-02252",
9921          "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>)"
9922        },
9923        {
9924          "vuid": "VUID-VkImageCreateInfo-extent-02253",
9925          "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>)"
9926        },
9927        {
9928          "vuid": "VUID-VkImageCreateInfo-extent-02254",
9929          "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>)"
9930        },
9931        {
9932          "vuid": "VUID-VkImageCreateInfo-imageType-00954",
9933          "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"
9934        },
9935        {
9936          "vuid": "VUID-VkImageCreateInfo-imageType-00956",
9937          "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>"
9938        },
9939        {
9940          "vuid": "VUID-VkImageCreateInfo-imageType-00957",
9941          "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>"
9942        },
9943        {
9944          "vuid": "VUID-VkImageCreateInfo-mipLevels-00958",
9945          "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>"
9946        },
9947        {
9948          "vuid": "VUID-VkImageCreateInfo-mipLevels-02255",
9949          "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>)"
9950        },
9951        {
9952          "vuid": "VUID-VkImageCreateInfo-arrayLayers-02256",
9953          "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>)"
9954        },
9955        {
9956          "vuid": "VUID-VkImageCreateInfo-imageType-00961",
9957          "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_3D</code>, <code>arrayLayers</code> <strong class=\"purple\">must</strong> be <code>1</code>"
9958        },
9959        {
9960          "vuid": "VUID-VkImageCreateInfo-samples-02257",
9961          "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>,"
9962        },
9963        {
9964          "vuid": "VUID-VkImageCreateInfo-usage-00963",
9965          "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"
9966        },
9967        {
9968          "vuid": "VUID-VkImageCreateInfo-usage-00964",
9969          "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>"
9970        },
9971        {
9972          "vuid": "VUID-VkImageCreateInfo-usage-00965",
9973          "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>"
9974        },
9975        {
9976          "vuid": "VUID-VkImageCreateInfo-usage-00966",
9977          "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>"
9978        },
9979        {
9980          "vuid": "VUID-VkImageCreateInfo-samples-02258",
9981          "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>)"
9982        },
9983        {
9984          "vuid": "VUID-VkImageCreateInfo-usage-00968",
9985          "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>"
9986        },
9987        {
9988          "vuid": "VUID-VkImageCreateInfo-flags-00969",
9989          "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>"
9990        },
9991        {
9992          "vuid": "VUID-VkImageCreateInfo-flags-01924",
9993          "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>"
9994        },
9995        {
9996          "vuid": "VUID-VkImageCreateInfo-imageType-00970",
9997          "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>"
9998        },
9999        {
10000          "vuid": "VUID-VkImageCreateInfo-imageType-00971",
10001          "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>"
10002        },
10003        {
10004          "vuid": "VUID-VkImageCreateInfo-imageType-00972",
10005          "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>"
10006        },
10007        {
10008          "vuid": "VUID-VkImageCreateInfo-imageType-00973",
10009          "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>"
10010        },
10011        {
10012          "vuid": "VUID-VkImageCreateInfo-imageType-00974",
10013          "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>"
10014        },
10015        {
10016          "vuid": "VUID-VkImageCreateInfo-imageType-00975",
10017          "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>"
10018        },
10019        {
10020          "vuid": "VUID-VkImageCreateInfo-imageType-00976",
10021          "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>"
10022        },
10023        {
10024          "vuid": "VUID-VkImageCreateInfo-flags-00987",
10025          "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>"
10026        },
10027        {
10028          "vuid": "VUID-VkImageCreateInfo-None-01925",
10029          "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"
10030        },
10031        {
10032          "vuid": "VUID-VkImageCreateInfo-initialLayout-00993",
10033          "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>"
10034        },
10035        {
10036          "vuid": "VUID-VkImageCreateInfo-sType-sType",
10037          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO</code>"
10038        },
10039        {
10040          "vuid": "VUID-VkImageCreateInfo-pNext-pNext",
10041          "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=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>, <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>, or <a href=\"#VkImageSwapchainCreateInfoKHR\">VkImageSwapchainCreateInfoKHR</a>"
10042        },
10043        {
10044          "vuid": "VUID-VkImageCreateInfo-sType-unique",
10045          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
10046        },
10047        {
10048          "vuid": "VUID-VkImageCreateInfo-flags-parameter",
10049          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values"
10050        },
10051        {
10052          "vuid": "VUID-VkImageCreateInfo-imageType-parameter",
10053          "text": " <code>imageType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
10054        },
10055        {
10056          "vuid": "VUID-VkImageCreateInfo-format-parameter",
10057          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
10058        },
10059        {
10060          "vuid": "VUID-VkImageCreateInfo-samples-parameter",
10061          "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
10062        },
10063        {
10064          "vuid": "VUID-VkImageCreateInfo-tiling-parameter",
10065          "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
10066        },
10067        {
10068          "vuid": "VUID-VkImageCreateInfo-usage-parameter",
10069          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
10070        },
10071        {
10072          "vuid": "VUID-VkImageCreateInfo-usage-requiredbitmask",
10073          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
10074        },
10075        {
10076          "vuid": "VUID-VkImageCreateInfo-sharingMode-parameter",
10077          "text": " <code>sharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value"
10078        },
10079        {
10080          "vuid": "VUID-VkImageCreateInfo-initialLayout-parameter",
10081          "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
10082        }
10083      ],
10084      "!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
10085        {
10086          "vuid": "VUID-VkImageCreateInfo-sharingMode-01392",
10087          "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>"
10088        }
10089      ],
10090      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
10091        {
10092          "vuid": "VUID-VkImageCreateInfo-sharingMode-01420",
10093          "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>"
10094        }
10095      ],
10096      "!(VK_ANDROID_external_memory_android_hardware_buffer)": [
10097        {
10098          "vuid": "VUID-VkImageCreateInfo-format-00943",
10099          "text": " <code>format</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>"
10100        }
10101      ],
10102      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
10103        {
10104          "vuid": "VUID-VkImageCreateInfo-pNext-01974",
10105          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a> structure, and its <code>externalFormat</code> member is non-zero the <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>"
10106        },
10107        {
10108          "vuid": "VUID-VkImageCreateInfo-pNext-01975",
10109          "text": " If the <code>pNext</code> chain does not include a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a> structure, or does and its <code>externalFormat</code> member is <code>0</code>, the <code>format</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>"
10110        },
10111        {
10112          "vuid": "VUID-VkImageCreateInfo-pNext-02393",
10113          "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>"
10114        },
10115        {
10116          "vuid": "VUID-VkImageCreateInfo-pNext-02394",
10117          "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>"
10118        },
10119        {
10120          "vuid": "VUID-VkImageCreateInfo-pNext-02396",
10121          "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>"
10122        },
10123        {
10124          "vuid": "VUID-VkImageCreateInfo-pNext-02397",
10125          "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>"
10126        },
10127        {
10128          "vuid": "VUID-VkImageCreateInfo-pNext-02398",
10129          "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>"
10130        }
10131      ],
10132      "(VK_EXT_fragment_density_map)": [
10133        {
10134          "vuid": "VUID-VkImageCreateInfo-flags-02557",
10135          "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>"
10136        },
10137        {
10138          "vuid": "VUID-VkImageCreateInfo-samples-02558",
10139          "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>"
10140        },
10141        {
10142          "vuid": "VUID-VkImageCreateInfo-usage-02559",
10143          "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 \\(\\left\\lceil{\\frac{maxFramebufferWidth}{minFragmentDensityTexelSize_{width}}}\\right\\rceil\\)"
10144        },
10145        {
10146          "vuid": "VUID-VkImageCreateInfo-usage-02560",
10147          "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 \\(\\left\\lceil{\\frac{maxFramebufferHeight}{minFragmentDensityTexelSize_{height}}}\\right\\rceil\\)"
10148        },
10149        {
10150          "vuid": "VUID-VkImageCreateInfo-flags-02565",
10151          "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>"
10152        },
10153        {
10154          "vuid": "VUID-VkImageCreateInfo-flags-02566",
10155          "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>"
10156        },
10157        {
10158          "vuid": "VUID-VkImageCreateInfo-flags-02567",
10159          "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>"
10160        },
10161        {
10162          "vuid": "VUID-VkImageCreateInfo-flags-02568",
10163          "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>"
10164        }
10165      ],
10166      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
10167        {
10168          "vuid": "VUID-VkImageCreateInfo-flags-00950",
10169          "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>"
10170        }
10171      ],
10172      "(VK_VERSION_1_1)": [
10173        {
10174          "vuid": "VUID-VkImageCreateInfo-flags-01890",
10175          "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>"
10176        },
10177        {
10178          "vuid": "VUID-VkImageCreateInfo-None-01891",
10179          "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"
10180        }
10181      ],
10182      "(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_NV_external_memory)": [
10183        {
10184          "vuid": "VUID-VkImageCreateInfo-pNext-00988",
10185          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a> structure, it <strong class=\"purple\">must</strong> not contain a <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a> structure"
10186        }
10187      ],
10188      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
10189        {
10190          "vuid": "VUID-VkImageCreateInfo-pNext-00990",
10191          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a> structure, 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 a <a href=\"#VkPhysicalDeviceExternalImageFormatInfo\">VkPhysicalDeviceExternalImageFormatInfo</a> structure included 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>"
10192        }
10193      ],
10194      "(VK_NV_external_memory+VK_NV_external_memory_capabilities)": [
10195        {
10196          "vuid": "VUID-VkImageCreateInfo-pNext-00991",
10197          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a> structure, 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>"
10198        }
10199      ],
10200      "(VK_VERSION_1_1,VK_KHR_device_group)": [
10201        {
10202          "vuid": "VUID-VkImageCreateInfo-physicalDeviceCount-01421",
10203          "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>"
10204        },
10205        {
10206          "vuid": "VUID-VkImageCreateInfo-flags-02259",
10207          "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>"
10208        }
10209      ],
10210      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
10211        {
10212          "vuid": "VUID-VkImageCreateInfo-flags-01572",
10213          "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>"
10214        },
10215        {
10216          "vuid": "VUID-VkImageCreateInfo-flags-01573",
10217          "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>"
10218        }
10219      ],
10220      "(VK_VERSION_1_1,VK_KHR_external_memory,VK_NV_external_memory)": [
10221        {
10222          "vuid": "VUID-VkImageCreateInfo-pNext-01443",
10223          "text": "     If the <code>pNext</code> chain includes a ifdef::VK_VERSION_1_1,VK_KHR_external_memory[<a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>]"
10224        }
10225      ],
10226      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
10227        {
10228          "vuid": "VUID-VkImageCreateInfo-format-02561",
10229          "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y′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"
10230        },
10231        {
10232          "vuid": "VUID-VkImageCreateInfo-format-02562",
10233          "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y′C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>, <code>samples</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLE_COUNT_1_BIT</code>"
10234        },
10235        {
10236          "vuid": "VUID-VkImageCreateInfo-format-02563",
10237          "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y′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>"
10238        },
10239        {
10240          "vuid": "VUID-VkImageCreateInfo-imageCreateFormatFeatures-02260",
10241          "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>"
10242        },
10243        {
10244          "vuid": "VUID-VkImageCreateInfo-format-01577",
10245          "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>"
10246        }
10247      ],
10248      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_ycbcr_image_arrays)": [
10249        {
10250          "vuid": "VUID-VkImageCreateInfo-format-02653",
10251          "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y′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"
10252        }
10253      ],
10254      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VK_EXT_ycbcr_image_arrays)": [
10255        {
10256          "vuid": "VUID-VkImageCreateInfo-format-02564",
10257          "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y′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"
10258        }
10259      ],
10260      "(VK_EXT_image_drm_format_modifier)": [
10261        {
10262          "vuid": "VUID-VkImageCreateInfo-tiling-02261",
10263          "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> include exactly one of <a href=\"#VkImageDrmFormatModifierListCreateInfoEXT\">VkImageDrmFormatModifierListCreateInfoEXT</a> or <a href=\"#VkImageDrmFormatModifierExplicitCreateInfoEXT\">VkImageDrmFormatModifierExplicitCreateInfoEXT</a> structures"
10264        },
10265        {
10266          "vuid": "VUID-VkImageCreateInfo-pNext-02262",
10267          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkImageDrmFormatModifierListCreateInfoEXT\">VkImageDrmFormatModifierListCreateInfoEXT</a> or <a href=\"#VkImageDrmFormatModifierExplicitCreateInfoEXT\">VkImageDrmFormatModifierExplicitCreateInfoEXT</a> structure, then <code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>"
10268        },
10269        {
10270          "vuid": "VUID-VkImageCreateInfo-tiling-02353",
10271          "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> include a <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a> structure with non-zero <code>viewFormatCount</code>"
10272        }
10273      ],
10274      "(VK_EXT_sample_locations)": [
10275        {
10276          "vuid": "VUID-VkImageCreateInfo-flags-01533",
10277          "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"
10278        }
10279      ],
10280      "(VK_EXT_separate_stencil_usage)": [
10281        {
10282          "vuid": "VUID-VkImageCreateInfo-format-02795",
10283          "text": " If <code>format</code> is a depth-stencil format, <code>usage</code> includes <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, and the <code>pNext</code> chain includes a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure, then its <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>::<code>stencilUsage</code> member <strong class=\"purple\">must</strong> also include <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
10284        },
10285        {
10286          "vuid": "VUID-VkImageCreateInfo-format-02796",
10287          "text": " If <code>format</code> is a depth-stencil format, <code>usage</code> does not include <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, and the <code>pNext</code> chain includes a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure, then its <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>::<code>stencilUsage</code> member <strong class=\"purple\">must</strong> also not include <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
10288        },
10289        {
10290          "vuid": "VUID-VkImageCreateInfo-format-02797",
10291          "text": " If <code>format</code> is a depth-stencil format, <code>usage</code> includes <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, and the <code>pNext</code> chain includes a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure, then its <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>::<code>stencilUsage</code> member <strong class=\"purple\">must</strong> also include <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>"
10292        },
10293        {
10294          "vuid": "VUID-VkImageCreateInfo-format-02798",
10295          "text": " If <code>format</code> is a depth-stencil format, <code>usage</code> does not include <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, and the <code>pNext</code> chain includes a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure, then its <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>::<code>stencilUsage</code> member <strong class=\"purple\">must</strong> also not include <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>"
10296        },
10297        {
10298          "vuid": "VUID-VkImageCreateInfo-Format-02536",
10299          "text": " If <code>Format</code> is a depth-stencil format and the <code>pNext</code> chain includes a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure 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>"
10300        },
10301        {
10302          "vuid": "VUID-VkImageCreateInfo-format-02537",
10303          "text": " If <code>format</code> is a depth-stencil format and the <code>pNext</code> chain includes a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure 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>"
10304        },
10305        {
10306          "vuid": "VUID-VkImageCreateInfo-format-02538",
10307          "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 includes a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure 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>"
10308        }
10309      ],
10310      "(VK_NV_corner_sampled_image)": [
10311        {
10312          "vuid": "VUID-VkImageCreateInfo-flags-02050",
10313          "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>"
10314        },
10315        {
10316          "vuid": "VUID-VkImageCreateInfo-flags-02051",
10317          "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"
10318        },
10319        {
10320          "vuid": "VUID-VkImageCreateInfo-flags-02052",
10321          "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.width</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>"
10322        },
10323        {
10324          "vuid": "VUID-VkImageCreateInfo-flags-02053",
10325          "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.width</code>, <code>extent.height</code>, and <code>extent.depth</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>"
10326        }
10327      ],
10328      "(VK_NV_shading_rate_image)": [
10329        {
10330          "vuid": "VUID-VkImageCreateInfo-imageType-02082",
10331          "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>"
10332        },
10333        {
10334          "vuid": "VUID-VkImageCreateInfo-samples-02083",
10335          "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>"
10336        },
10337        {
10338          "vuid": "VUID-VkImageCreateInfo-tiling-02084",
10339          "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>"
10340        }
10341      ]
10342    },
10343    "VkImageStencilUsageCreateInfo": {
10344      "(VK_EXT_separate_stencil_usage)": [
10345        {
10346          "vuid": "VUID-VkImageStencilUsageCreateInfo-stencilUsage-02539",
10347          "text": " If <code>stencilUsage</code> includes <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, it <strong class=\"purple\">must</strong> not include bits other than <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>"
10348        },
10349        {
10350          "vuid": "VUID-VkImageStencilUsageCreateInfo-sType-sType",
10351          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO</code>"
10352        },
10353        {
10354          "vuid": "VUID-VkImageStencilUsageCreateInfo-stencilUsage-parameter",
10355          "text": " <code>stencilUsage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
10356        },
10357        {
10358          "vuid": "VUID-VkImageStencilUsageCreateInfo-stencilUsage-requiredbitmask",
10359          "text": " <code>stencilUsage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
10360        }
10361      ]
10362    },
10363    "VkDedicatedAllocationImageCreateInfoNV": {
10364      "(VK_NV_dedicated_allocation)": [
10365        {
10366          "vuid": "VUID-VkDedicatedAllocationImageCreateInfoNV-dedicatedAllocation-00994",
10367          "text": " If <code>dedicatedAllocation</code> is <code>VK_TRUE</code>, <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<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>"
10368        },
10369        {
10370          "vuid": "VUID-VkDedicatedAllocationImageCreateInfoNV-sType-sType",
10371          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV</code>"
10372        }
10373      ]
10374    },
10375    "VkExternalMemoryImageCreateInfo": {
10376      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
10377        {
10378          "vuid": "VUID-VkExternalMemoryImageCreateInfo-sType-sType",
10379          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO</code>"
10380        },
10381        {
10382          "vuid": "VUID-VkExternalMemoryImageCreateInfo-handleTypes-parameter",
10383          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values"
10384        },
10385        {
10386          "vuid": "VUID-VkExternalMemoryImageCreateInfo-handleTypes-requiredbitmask",
10387          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
10388        }
10389      ]
10390    },
10391    "VkExternalMemoryImageCreateInfoNV": {
10392      "(VK_NV_external_memory)": [
10393        {
10394          "vuid": "VUID-VkExternalMemoryImageCreateInfoNV-sType-sType",
10395          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV</code>"
10396        },
10397        {
10398          "vuid": "VUID-VkExternalMemoryImageCreateInfoNV-handleTypes-parameter",
10399          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
10400        }
10401      ]
10402    },
10403    "VkExternalFormatANDROID": {
10404      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
10405        {
10406          "vuid": "VUID-VkExternalFormatANDROID-externalFormat-01894",
10407          "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>"
10408        },
10409        {
10410          "vuid": "VUID-VkExternalFormatANDROID-sType-sType",
10411          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID</code>"
10412        }
10413      ]
10414    },
10415    "VkImageSwapchainCreateInfoKHR": {
10416      "(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [
10417        {
10418          "vuid": "VUID-VkImageSwapchainCreateInfoKHR-swapchain-00995",
10419          "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"
10420        },
10421        {
10422          "vuid": "VUID-VkImageSwapchainCreateInfoKHR-sType-sType",
10423          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR</code>"
10424        },
10425        {
10426          "vuid": "VUID-VkImageSwapchainCreateInfoKHR-swapchain-parameter",
10427          "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 <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle"
10428        }
10429      ]
10430    },
10431    "VkImageFormatListCreateInfo": {
10432      "(VK_VERSION_1_2,VK_KHR_image_format_list)": [
10433        {
10434          "vuid": "VUID-VkImageFormatListCreateInfo-sType-sType",
10435          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO</code>"
10436        },
10437        {
10438          "vuid": "VUID-VkImageFormatListCreateInfo-pViewFormats-parameter",
10439          "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"
10440        }
10441      ]
10442    },
10443    "VkImageDrmFormatModifierListCreateInfoEXT": {
10444      "(VK_EXT_image_drm_format_modifier)": [
10445        {
10446          "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-pDrmFormatModifiers-02263",
10447          "text": " Each <em>modifier</em> in <code>pDrmFormatModifiers</code> <strong class=\"purple\">must</strong> 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>"
10448        },
10449        {
10450          "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-sType-sType",
10451          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT</code>"
10452        },
10453        {
10454          "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-pDrmFormatModifiers-parameter",
10455          "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"
10456        },
10457        {
10458          "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-drmFormatModifierCount-arraylength",
10459          "text": " <code>drmFormatModifierCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
10460        }
10461      ]
10462    },
10463    "VkImageDrmFormatModifierExplicitCreateInfoEXT": {
10464      "(VK_EXT_image_drm_format_modifier)": [
10465        {
10466          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-drmFormatModifier-02264",
10467          "text": " <code>drmFormatModifier</code> <strong class=\"purple\">must</strong> 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>"
10468        },
10469        {
10470          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-drmFormatModifierPlaneCount-02265",
10471          "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>"
10472        },
10473        {
10474          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-size-02267",
10475          "text": " For each element of <code>pPlaneLayouts</code>, <code>size</code> <strong class=\"purple\">must</strong> be 0"
10476        },
10477        {
10478          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-arrayPitch-02268",
10479          "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"
10480        },
10481        {
10482          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-depthPitch-02269",
10483          "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.depth</code> is 1"
10484        },
10485        {
10486          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-sType-sType",
10487          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT</code>"
10488        },
10489        {
10490          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-pPlaneLayouts-parameter",
10491          "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> <a href=\"#VkSubresourceLayout\">VkSubresourceLayout</a> structures"
10492        }
10493      ]
10494    },
10495    "vkGetImageSubresourceLayout": {
10496      "!(VK_EXT_image_drm_format_modifier)": [
10497        {
10498          "vuid": "VUID-vkGetImageSubresourceLayout-image-00996",
10499          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>tiling</code> equal to <code>VK_IMAGE_TILING_LINEAR</code>"
10500        }
10501      ],
10502      "(VK_EXT_image_drm_format_modifier)": [
10503        {
10504          "vuid": "VUID-vkGetImageSubresourceLayout-image-02270",
10505          "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>"
10506        },
10507        {
10508          "vuid": "VUID-vkGetImageSubresourceLayout-tiling-02271",
10509          "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_i_BIT_EXT</code> and the index <code>i</code> <strong class=\"purple\">must</strong> be less than the <a href=\"#VkDrmFormatModifierPropertiesEXT\">VkDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifierPlaneCount</code> associated with the image&#8217;s <code>format</code> and <a href=\"#VkImageDrmFormatModifierPropertiesEXT\">VkImageDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifier</code>"
10510        }
10511      ],
10512      "core": [
10513        {
10514          "vuid": "VUID-vkGetImageSubresourceLayout-aspectMask-00997",
10515          "text": " The <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> only have a single bit set"
10516        },
10517        {
10518          "vuid": "VUID-vkGetImageSubresourceLayout-mipLevel-01716",
10519          "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"
10520        },
10521        {
10522          "vuid": "VUID-vkGetImageSubresourceLayout-arrayLayer-01717",
10523          "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"
10524        },
10525        {
10526          "vuid": "VUID-vkGetImageSubresourceLayout-device-parameter",
10527          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
10528        },
10529        {
10530          "vuid": "VUID-vkGetImageSubresourceLayout-image-parameter",
10531          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
10532        },
10533        {
10534          "vuid": "VUID-vkGetImageSubresourceLayout-pSubresource-parameter",
10535          "text": " <code>pSubresource</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageSubresource\">VkImageSubresource</a> structure"
10536        },
10537        {
10538          "vuid": "VUID-vkGetImageSubresourceLayout-pLayout-parameter",
10539          "text": " <code>pLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSubresourceLayout\">VkSubresourceLayout</a> structure"
10540        },
10541        {
10542          "vuid": "VUID-vkGetImageSubresourceLayout-image-parent",
10543          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
10544        }
10545      ],
10546      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
10547        {
10548          "vuid": "VUID-vkGetImageSubresourceLayout-format-01581",
10549          "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>"
10550        },
10551        {
10552          "vuid": "VUID-vkGetImageSubresourceLayout-format-01582",
10553          "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>"
10554        }
10555      ],
10556      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
10557        {
10558          "vuid": "VUID-vkGetImageSubresourceLayout-image-01895",
10559          "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"
10560        }
10561      ]
10562    },
10563    "VkImageSubresource": {
10564      "core": [
10565        {
10566          "vuid": "VUID-VkImageSubresource-aspectMask-parameter",
10567          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
10568        },
10569        {
10570          "vuid": "VUID-VkImageSubresource-aspectMask-requiredbitmask",
10571          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
10572        }
10573      ]
10574    },
10575    "vkGetImageDrmFormatModifierPropertiesEXT": {
10576      "(VK_EXT_image_drm_format_modifier)": [
10577        {
10578          "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-02272",
10579          "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>"
10580        },
10581        {
10582          "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-device-parameter",
10583          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
10584        },
10585        {
10586          "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-parameter",
10587          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
10588        },
10589        {
10590          "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-pProperties-parameter",
10591          "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkImageDrmFormatModifierPropertiesEXT\">VkImageDrmFormatModifierPropertiesEXT</a> structure"
10592        },
10593        {
10594          "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-parent",
10595          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
10596        }
10597      ]
10598    },
10599    "VkImageDrmFormatModifierPropertiesEXT": {
10600      "(VK_EXT_image_drm_format_modifier)": [
10601        {
10602          "vuid": "VUID-VkImageDrmFormatModifierPropertiesEXT-sType-sType",
10603          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT</code>"
10604        },
10605        {
10606          "vuid": "VUID-VkImageDrmFormatModifierPropertiesEXT-pNext-pNext",
10607          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
10608        }
10609      ]
10610    },
10611    "vkDestroyImage": {
10612      "core": [
10613        {
10614          "vuid": "VUID-vkDestroyImage-image-01000",
10615          "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"
10616        },
10617        {
10618          "vuid": "VUID-vkDestroyImage-image-01001",
10619          "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"
10620        },
10621        {
10622          "vuid": "VUID-vkDestroyImage-image-01002",
10623          "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>"
10624        },
10625        {
10626          "vuid": "VUID-vkDestroyImage-device-parameter",
10627          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
10628        },
10629        {
10630          "vuid": "VUID-vkDestroyImage-image-parameter",
10631          "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 <a href=\"#VkImage\">VkImage</a> handle"
10632        },
10633        {
10634          "vuid": "VUID-vkDestroyImage-pAllocator-parameter",
10635          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
10636        },
10637        {
10638          "vuid": "VUID-vkDestroyImage-image-parent",
10639          "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>"
10640        }
10641      ]
10642    },
10643    "vkCreateImageView": {
10644      "core": [
10645        {
10646          "vuid": "VUID-vkCreateImageView-device-parameter",
10647          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
10648        },
10649        {
10650          "vuid": "VUID-vkCreateImageView-pCreateInfo-parameter",
10651          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageViewCreateInfo\">VkImageViewCreateInfo</a> structure"
10652        },
10653        {
10654          "vuid": "VUID-vkCreateImageView-pAllocator-parameter",
10655          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
10656        },
10657        {
10658          "vuid": "VUID-vkCreateImageView-pView-parameter",
10659          "text": " <code>pView</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkImageView\">VkImageView</a> handle"
10660        }
10661      ]
10662    },
10663    "VkImageViewCreateInfo": {
10664      "core": [
10665        {
10666          "vuid": "VUID-VkImageViewCreateInfo-image-01003",
10667          "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>"
10668        },
10669        {
10670          "vuid": "VUID-VkImageViewCreateInfo-viewType-01004",
10671          "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>"
10672        },
10673        {
10674          "vuid": "VUID-VkImageViewCreateInfo-None-02273",
10675          "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"
10676        },
10677        {
10678          "vuid": "VUID-VkImageViewCreateInfo-usage-02274",
10679          "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>"
10680        },
10681        {
10682          "vuid": "VUID-VkImageViewCreateInfo-usage-02275",
10683          "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>"
10684        },
10685        {
10686          "vuid": "VUID-VkImageViewCreateInfo-usage-02276",
10687          "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>"
10688        },
10689        {
10690          "vuid": "VUID-VkImageViewCreateInfo-usage-02277",
10691          "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>"
10692        },
10693        {
10694          "vuid": "VUID-VkImageViewCreateInfo-usage-02652",
10695          "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>"
10696        },
10697        {
10698          "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01478",
10699          "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"
10700        },
10701        {
10702          "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01718",
10703          "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"
10704        },
10705        {
10706          "vuid": "VUID-VkImageViewCreateInfo-image-01020",
10707          "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"
10708        },
10709        {
10710          "vuid": "VUID-VkImageViewCreateInfo-subResourceRange-01021",
10711          "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>"
10712        },
10713        {
10714          "vuid": "VUID-VkImageViewCreateInfo-viewType-02960",
10715          "text": " If <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_CUBE</code> and <code>subresourceRange.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <code>subresourceRange.layerCount</code> <strong class=\"purple\">must</strong> be <code>6</code>"
10716        },
10717        {
10718          "vuid": "VUID-VkImageViewCreateInfo-viewType-02961",
10719          "text": " If <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code> and <code>subresourceRange.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <code>subresourceRange.layerCount</code> <strong class=\"purple\">must</strong> be a multiple of <code>6</code>"
10720        },
10721        {
10722          "vuid": "VUID-VkImageViewCreateInfo-viewType-02962",
10723          "text": " If <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_CUBE</code> and <code>subresourceRange.layerCount</code> is <code>VK_REMAINING_ARRAY_LAYERS</code>, the remaining number of layers <strong class=\"purple\">must</strong> be <code>6</code>"
10724        },
10725        {
10726          "vuid": "VUID-VkImageViewCreateInfo-viewType-02963",
10727          "text": " If <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code> and <code>subresourceRange.layerCount</code> is <code>VK_REMAINING_ARRAY_LAYERS</code>, the remaining number of layers <strong class=\"purple\">must</strong> be a multiple of <code>6</code>"
10728        },
10729        {
10730          "vuid": "VUID-VkImageViewCreateInfo-sType-sType",
10731          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO</code>"
10732        },
10733        {
10734          "vuid": "VUID-VkImageViewCreateInfo-pNext-pNext",
10735          "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>"
10736        },
10737        {
10738          "vuid": "VUID-VkImageViewCreateInfo-sType-unique",
10739          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
10740        },
10741        {
10742          "vuid": "VUID-VkImageViewCreateInfo-flags-parameter",
10743          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageViewCreateFlagBits\">VkImageViewCreateFlagBits</a> values"
10744        },
10745        {
10746          "vuid": "VUID-VkImageViewCreateInfo-image-parameter",
10747          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
10748        },
10749        {
10750          "vuid": "VUID-VkImageViewCreateInfo-viewType-parameter",
10751          "text": " <code>viewType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageViewType\">VkImageViewType</a> value"
10752        },
10753        {
10754          "vuid": "VUID-VkImageViewCreateInfo-format-parameter",
10755          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
10756        },
10757        {
10758          "vuid": "VUID-VkImageViewCreateInfo-components-parameter",
10759          "text": " <code>components</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentMapping\">VkComponentMapping</a> structure"
10760        },
10761        {
10762          "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-parameter",
10763          "text": " <code>subresourceRange</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> structure"
10764        }
10765      ],
10766      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
10767        {
10768          "vuid": "VUID-VkImageViewCreateInfo-image-01005",
10769          "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>"
10770        },
10771        {
10772          "vuid": "VUID-VkImageViewCreateInfo-image-01482",
10773          "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.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"
10774        },
10775        {
10776          "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01483",
10777          "text": " If <code>subresourceRange.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.layerCount</code> <strong class=\"purple\">must</strong> be non-zero and <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"
10778        },
10779        {
10780          "vuid": "VUID-VkImageViewCreateInfo-image-02724",
10781          "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.baseArrayLayer</code> <strong class=\"purple\">must</strong> be less than the depth computed from <code>baseMipLevel</code> and <code>extent.depth</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created, according to the formula defined in <a href=\"#resources-image-miplevel-sizing\">Image Miplevel Sizing</a>"
10782        },
10783        {
10784          "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-02725",
10785          "text": " If <code>subresourceRange.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.layerCount</code> <strong class=\"purple\">must</strong> be non-zero and <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 depth computed from <code>baseMipLevel</code> and <code>extent.depth</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created, according to the formula defined in <a href=\"#resources-image-miplevel-sizing\">Image Miplevel Sizing</a>"
10786        }
10787      ],
10788      "!(VK_EXT_fragment_density_map)+!(VK_NV_shading_rate_image)": [
10789        {
10790          "vuid": "VUID-VkImageViewCreateInfo-image-01007",
10791          "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>"
10792        }
10793      ],
10794      "!(VK_EXT_fragment_density_map)+(VK_NV_shading_rate_image)": [
10795        {
10796          "vuid": "VUID-VkImageViewCreateInfo-image-02085",
10797          "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>"
10798        }
10799      ],
10800      "(VK_EXT_fragment_density_map)+!(VK_NV_shading_rate_image)": [
10801        {
10802          "vuid": "VUID-VkImageViewCreateInfo-image-02569",
10803          "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>"
10804        }
10805      ],
10806      "(VK_EXT_fragment_density_map)+(VK_NV_shading_rate_image)": [
10807        {
10808          "vuid": "VUID-VkImageViewCreateInfo-image-02570",
10809          "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>"
10810        }
10811      ],
10812      "(VK_EXT_fragment_density_map)": [
10813        {
10814          "vuid": "VUID-VkImageViewCreateInfo-image-02571",
10815          "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>"
10816        },
10817        {
10818          "vuid": "VUID-VkImageViewCreateInfo-flags-02572",
10819          "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>"
10820        },
10821        {
10822          "vuid": "VUID-VkImageViewCreateInfo-image-02573",
10823          "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>"
10824        }
10825      ],
10826      "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
10827        {
10828          "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01480",
10829          "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"
10830        },
10831        {
10832          "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01719",
10833          "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"
10834        }
10835      ],
10836      "!(VK_VERSION_1_1,VK_KHR_maintenance2)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
10837        {
10838          "vuid": "VUID-VkImageViewCreateInfo-image-01018",
10839          "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>"
10840        }
10841      ],
10842      "(VK_VERSION_1_1,VK_KHR_maintenance2)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
10843        {
10844          "vuid": "VUID-VkImageViewCreateInfo-image-01759",
10845          "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>"
10846        }
10847      ],
10848      "!(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
10849        {
10850          "vuid": "VUID-VkImageViewCreateInfo-image-01760",
10851          "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>"
10852        }
10853      ],
10854      "(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
10855        {
10856          "vuid": "VUID-VkImageViewCreateInfo-image-01761",
10857          "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>"
10858        }
10859      ],
10860      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
10861        {
10862          "vuid": "VUID-VkImageViewCreateInfo-image-01583",
10863          "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>"
10864        },
10865        {
10866          "vuid": "VUID-VkImageViewCreateInfo-image-01584",
10867          "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>"
10868        }
10869      ],
10870      "(VK_VERSION_1_2,VK_KHR_image_format_list)": [
10871        {
10872          "vuid": "VUID-VkImageViewCreateInfo-pNext-01585",
10873          "text": " If a <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a> structure was included in the <code>pNext</code> chain of the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure used when creating <code>image</code> and <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>viewFormatCount</code> is not zero then <code>format</code> <strong class=\"purple\">must</strong> be one of the formats in <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>pViewFormats</code>"
10874        },
10875        {
10876          "vuid": "VUID-VkImageViewCreateInfo-pNext-04082",
10877          "text": " If a <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a> structure was included in the <code>pNext</code> chain of the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure used when creating <code>image</code> and <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>viewFormatCount</code> is not zero then all of the formats in <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>pViewFormats</code> <strong class=\"purple\">must</strong> be compatible with the <code>format</code> as described in the <a href=\"#formats-compatibility\">compatibility table</a>"
10878        },
10879        {
10880          "vuid": "VUID-VkImageViewCreateInfo-flags-04083",
10881          "text": " If <code>flags</code> dose not contain <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> and the <code>pNext</code> chain include a <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a> structure then <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>viewFormatCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>"
10882        }
10883      ],
10884      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
10885        {
10886          "vuid": "VUID-VkImageViewCreateInfo-image-01586",
10887          "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>"
10888        },
10889        {
10890          "vuid": "VUID-VkImageViewCreateInfo-image-01762",
10891          "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>"
10892        },
10893        {
10894          "vuid": "VUID-VkImageViewCreateInfo-pNext-01970",
10895          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a> structure 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 <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a>"
10896        }
10897      ],
10898      "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
10899        {
10900          "vuid": "VUID-VkImageViewCreateInfo-image-01019",
10901          "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>"
10902        }
10903      ],
10904      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
10905        {
10906          "vuid": "VUID-VkImageViewCreateInfo-image-02399",
10907          "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>"
10908        },
10909        {
10910          "vuid": "VUID-VkImageViewCreateInfo-image-02400",
10911          "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> include a <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a> structure with a <code>conversion</code> object created with the same external format as <code>image</code>"
10912        },
10913        {
10914          "vuid": "VUID-VkImageViewCreateInfo-image-02401",
10915          "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 the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a>"
10916        }
10917      ],
10918      "(VK_NV_shading_rate_image)": [
10919        {
10920          "vuid": "VUID-VkImageViewCreateInfo-image-02086",
10921          "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>"
10922        },
10923        {
10924          "vuid": "VUID-VkImageViewCreateInfo-image-02087",
10925          "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>"
10926        }
10927      ],
10928      "(VK_VERSION_1_1,VK_KHR_maintenance2)+!(VK_EXT_separate_stencil_usage)": [
10929        {
10930          "vuid": "VUID-VkImageViewCreateInfo-pNext-02661",
10931          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a> structure, its <code>usage</code> member <strong class=\"purple\">must</strong> not include any bits that were not set in the <code>usage</code> member of the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure used to create <code>image</code>"
10932        }
10933      ],
10934      "(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_EXT_separate_stencil_usage)": [
10935        {
10936          "vuid": "VUID-VkImageViewCreateInfo-pNext-02662",
10937          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a> structure, and <code>image</code> was not created with a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure included in the <code>pNext</code> chain of <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>, its <code>usage</code> member <strong class=\"purple\">must</strong> not include any bits that were not set in the <code>usage</code> member of the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure used to create <code>image</code>"
10938        },
10939        {
10940          "vuid": "VUID-VkImageViewCreateInfo-pNext-02663",
10941          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a> structure, <code>image</code> was created with a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure included in the <code>pNext</code> chain of <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>, and <code>subResourceRange.aspectMask</code> includes <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>, the <code>usage</code> member of the <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a> instance <strong class=\"purple\">must</strong> not include any bits that were not set in the <code>usage</code> member of the <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure used to create <code>image</code>"
10942        },
10943        {
10944          "vuid": "VUID-VkImageViewCreateInfo-pNext-02664",
10945          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a> structure, <code>image</code> was created with a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure included in the <code>pNext</code> chain of <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>, and <code>subResourceRange.aspectMask</code> includes bits other than <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>, the <code>usage</code> member of the <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a> structure <strong class=\"purple\">must</strong> not include any bits that were not set in the <code>usage</code> member of the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure used to create <code>image</code>"
10946        }
10947      ]
10948    },
10949    "VkImageViewUsageCreateInfo": {
10950      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
10951        {
10952          "vuid": "VUID-VkImageViewUsageCreateInfo-sType-sType",
10953          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO</code>"
10954        },
10955        {
10956          "vuid": "VUID-VkImageViewUsageCreateInfo-usage-parameter",
10957          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
10958        },
10959        {
10960          "vuid": "VUID-VkImageViewUsageCreateInfo-usage-requiredbitmask",
10961          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
10962        }
10963      ]
10964    },
10965    "VkImageSubresourceRange": {
10966      "core": [
10967        {
10968          "vuid": "VUID-VkImageSubresourceRange-levelCount-01720",
10969          "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>"
10970        },
10971        {
10972          "vuid": "VUID-VkImageSubresourceRange-layerCount-01721",
10973          "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>"
10974        },
10975        {
10976          "vuid": "VUID-VkImageSubresourceRange-aspectMask-parameter",
10977          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
10978        },
10979        {
10980          "vuid": "VUID-VkImageSubresourceRange-aspectMask-requiredbitmask",
10981          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
10982        }
10983      ],
10984      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
10985        {
10986          "vuid": "VUID-VkImageSubresourceRange-aspectMask-01670",
10987          "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>"
10988        }
10989      ],
10990      "(VK_EXT_image_drm_format_modifier)": [
10991        {
10992          "vuid": "VUID-VkImageSubresourceRange-aspectMask-02278",
10993          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT</code> for any index <code>i</code>"
10994        }
10995      ]
10996    },
10997    "VkComponentMapping": {
10998      "core": [
10999        {
11000          "vuid": "VUID-VkComponentMapping-r-parameter",
11001          "text": " <code>r</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value"
11002        },
11003        {
11004          "vuid": "VUID-VkComponentMapping-g-parameter",
11005          "text": " <code>g</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value"
11006        },
11007        {
11008          "vuid": "VUID-VkComponentMapping-b-parameter",
11009          "text": " <code>b</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value"
11010        },
11011        {
11012          "vuid": "VUID-VkComponentMapping-a-parameter",
11013          "text": " <code>a</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value"
11014        }
11015      ]
11016    },
11017    "VkImageViewASTCDecodeModeEXT": {
11018      "(VK_EXT_astc_decode_mode)": [
11019        {
11020          "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02230",
11021          "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>"
11022        },
11023        {
11024          "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02231",
11025          "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>"
11026        },
11027        {
11028          "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02232",
11029          "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"
11030        },
11031        {
11032          "vuid": "VUID-VkImageViewASTCDecodeModeEXT-format-04084",
11033          "text": " <code>format</code> of the image view <strong class=\"purple\">must</strong> be one of the <a href=\"#appendix-compressedtex-astc\">ASTC Compressed Image Formats</a>"
11034        },
11035        {
11036          "vuid": "VUID-VkImageViewASTCDecodeModeEXT-sType-sType",
11037          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT</code>"
11038        },
11039        {
11040          "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-parameter",
11041          "text": " <code>decodeMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
11042        }
11043      ]
11044    },
11045    "vkDestroyImageView": {
11046      "core": [
11047        {
11048          "vuid": "VUID-vkDestroyImageView-imageView-01026",
11049          "text": " All submitted commands that refer to <code>imageView</code> <strong class=\"purple\">must</strong> have completed execution"
11050        },
11051        {
11052          "vuid": "VUID-vkDestroyImageView-imageView-01027",
11053          "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"
11054        },
11055        {
11056          "vuid": "VUID-vkDestroyImageView-imageView-01028",
11057          "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>"
11058        },
11059        {
11060          "vuid": "VUID-vkDestroyImageView-device-parameter",
11061          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
11062        },
11063        {
11064          "vuid": "VUID-vkDestroyImageView-imageView-parameter",
11065          "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 <a href=\"#VkImageView\">VkImageView</a> handle"
11066        },
11067        {
11068          "vuid": "VUID-vkDestroyImageView-pAllocator-parameter",
11069          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
11070        },
11071        {
11072          "vuid": "VUID-vkDestroyImageView-imageView-parent",
11073          "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>"
11074        }
11075      ]
11076    },
11077    "vkGetImageViewHandleNVX": {
11078      "(VK_NVX_image_view_handle)": [
11079        {
11080          "vuid": "VUID-vkGetImageViewHandleNVX-device-parameter",
11081          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
11082        },
11083        {
11084          "vuid": "VUID-vkGetImageViewHandleNVX-pInfo-parameter",
11085          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageViewHandleInfoNVX\">VkImageViewHandleInfoNVX</a> structure"
11086        }
11087      ]
11088    },
11089    "VkImageViewHandleInfoNVX": {
11090      "(VK_NVX_image_view_handle)": [
11091        {
11092          "vuid": "VUID-VkImageViewHandleInfoNVX-descriptorType-02654",
11093          "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>"
11094        },
11095        {
11096          "vuid": "VUID-VkImageViewHandleInfoNVX-sampler-02655",
11097          "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>"
11098        },
11099        {
11100          "vuid": "VUID-VkImageViewHandleInfoNVX-imageView-02656",
11101          "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"
11102        },
11103        {
11104          "vuid": "VUID-VkImageViewHandleInfoNVX-imageView-02657",
11105          "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"
11106        },
11107        {
11108          "vuid": "VUID-VkImageViewHandleInfoNVX-sType-sType",
11109          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX</code>"
11110        },
11111        {
11112          "vuid": "VUID-VkImageViewHandleInfoNVX-pNext-pNext",
11113          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
11114        },
11115        {
11116          "vuid": "VUID-VkImageViewHandleInfoNVX-imageView-parameter",
11117          "text": " <code>imageView</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageView\">VkImageView</a> handle"
11118        },
11119        {
11120          "vuid": "VUID-VkImageViewHandleInfoNVX-descriptorType-parameter",
11121          "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
11122        },
11123        {
11124          "vuid": "VUID-VkImageViewHandleInfoNVX-sampler-parameter",
11125          "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 <a href=\"#VkSampler\">VkSampler</a> handle"
11126        },
11127        {
11128          "vuid": "VUID-VkImageViewHandleInfoNVX-commonparent",
11129          "text": " Both of <code>imageView</code>, and <code>sampler</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
11130        }
11131      ]
11132    },
11133    "vkGetImageViewAddressNVX": {
11134      "(VK_NVX_image_view_handle)": [
11135        {
11136          "vuid": "VUID-vkGetImageViewAddressNVX-device-parameter",
11137          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
11138        },
11139        {
11140          "vuid": "VUID-vkGetImageViewAddressNVX-imageView-parameter",
11141          "text": " <code>imageView</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageView\">VkImageView</a> handle"
11142        },
11143        {
11144          "vuid": "VUID-vkGetImageViewAddressNVX-pProperties-parameter",
11145          "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkImageViewAddressPropertiesNVX\">VkImageViewAddressPropertiesNVX</a> structure"
11146        },
11147        {
11148          "vuid": "VUID-vkGetImageViewAddressNVX-imageView-parent",
11149          "text": " <code>imageView</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
11150        }
11151      ]
11152    },
11153    "VkImageViewAddressPropertiesNVX": {
11154      "(VK_NVX_image_view_handle)": [
11155        {
11156          "vuid": "VUID-VkImageViewAddressPropertiesNVX-sType-sType",
11157          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX</code>"
11158        },
11159        {
11160          "vuid": "VUID-VkImageViewAddressPropertiesNVX-pNext-pNext",
11161          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
11162        }
11163      ]
11164    },
11165    "vkGetBufferMemoryRequirements": {
11166      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
11167        {
11168          "vuid": "VUID-vkGetBufferMemoryRequirements-buffer-04003",
11169          "text": " If <code>buffer</code> was created with the <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> external memory handle type, then <code>buffer</code> <strong class=\"purple\">must</strong> be bound to memory"
11170        }
11171      ],
11172      "core": [
11173        {
11174          "vuid": "VUID-vkGetBufferMemoryRequirements-device-parameter",
11175          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
11176        },
11177        {
11178          "vuid": "VUID-vkGetBufferMemoryRequirements-buffer-parameter",
11179          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
11180        },
11181        {
11182          "vuid": "VUID-vkGetBufferMemoryRequirements-pMemoryRequirements-parameter",
11183          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure"
11184        },
11185        {
11186          "vuid": "VUID-vkGetBufferMemoryRequirements-buffer-parent",
11187          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
11188        }
11189      ]
11190    },
11191    "vkGetImageMemoryRequirements": {
11192      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
11193        {
11194          "vuid": "VUID-vkGetImageMemoryRequirements-image-01588",
11195          "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag set"
11196        }
11197      ],
11198      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
11199        {
11200          "vuid": "VUID-vkGetImageMemoryRequirements-image-04004",
11201          "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"
11202        }
11203      ],
11204      "core": [
11205        {
11206          "vuid": "VUID-vkGetImageMemoryRequirements-device-parameter",
11207          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
11208        },
11209        {
11210          "vuid": "VUID-vkGetImageMemoryRequirements-image-parameter",
11211          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
11212        },
11213        {
11214          "vuid": "VUID-vkGetImageMemoryRequirements-pMemoryRequirements-parameter",
11215          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure"
11216        },
11217        {
11218          "vuid": "VUID-vkGetImageMemoryRequirements-image-parent",
11219          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
11220        }
11221      ]
11222    },
11223    "vkGetBufferMemoryRequirements2": {
11224      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
11225        {
11226          "vuid": "VUID-vkGetBufferMemoryRequirements2-device-parameter",
11227          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
11228        },
11229        {
11230          "vuid": "VUID-vkGetBufferMemoryRequirements2-pInfo-parameter",
11231          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferMemoryRequirementsInfo2\">VkBufferMemoryRequirementsInfo2</a> structure"
11232        },
11233        {
11234          "vuid": "VUID-vkGetBufferMemoryRequirements2-pMemoryRequirements-parameter",
11235          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2\">VkMemoryRequirements2</a> structure"
11236        }
11237      ]
11238    },
11239    "VkBufferMemoryRequirementsInfo2": {
11240      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
11241        {
11242          "vuid": "VUID-VkBufferMemoryRequirementsInfo2-buffer-04005",
11243          "text": " If <code>buffer</code> was created with the <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> external memory handle type, then <code>buffer</code> <strong class=\"purple\">must</strong> be bound to memory"
11244        }
11245      ],
11246      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
11247        {
11248          "vuid": "VUID-VkBufferMemoryRequirementsInfo2-sType-sType",
11249          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2</code>"
11250        },
11251        {
11252          "vuid": "VUID-VkBufferMemoryRequirementsInfo2-pNext-pNext",
11253          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
11254        },
11255        {
11256          "vuid": "VUID-VkBufferMemoryRequirementsInfo2-buffer-parameter",
11257          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
11258        }
11259      ]
11260    },
11261    "vkGetImageMemoryRequirements2": {
11262      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
11263        {
11264          "vuid": "VUID-vkGetImageMemoryRequirements2-device-parameter",
11265          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
11266        },
11267        {
11268          "vuid": "VUID-vkGetImageMemoryRequirements2-pInfo-parameter",
11269          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
11270        },
11271        {
11272          "vuid": "VUID-vkGetImageMemoryRequirements2-pMemoryRequirements-parameter",
11273          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2\">VkMemoryRequirements2</a> structure"
11274        }
11275      ]
11276    },
11277    "VkImageMemoryRequirementsInfo2": {
11278      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
11279        {
11280          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01589",
11281          "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> included in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
11282        },
11283        {
11284          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01590",
11285          "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> included in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
11286        }
11287      ],
11288      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [
11289        {
11290          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-02279",
11291          "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> included in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
11292        },
11293        {
11294          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-02280",
11295          "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> included in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
11296        }
11297      ],
11298      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VK_EXT_image_drm_format_modifier)": [
11299        {
11300          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01591",
11301          "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> included in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
11302        }
11303      ],
11304      "(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)": [
11305        {
11306          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01897",
11307          "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"
11308        }
11309      ],
11310      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
11311        {
11312          "vuid": "VUID-VkImageMemoryRequirementsInfo2-sType-sType",
11313          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2</code>"
11314        },
11315        {
11316          "vuid": "VUID-VkImageMemoryRequirementsInfo2-pNext-pNext",
11317          "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>"
11318        },
11319        {
11320          "vuid": "VUID-VkImageMemoryRequirementsInfo2-sType-unique",
11321          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
11322        },
11323        {
11324          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-parameter",
11325          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
11326        }
11327      ]
11328    },
11329    "VkImagePlaneMemoryRequirementsInfo": {
11330      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
11331        {
11332          "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02281",
11333          "text": " If the image&#8217;s <code>tiling</code> 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>)"
11334        },
11335        {
11336          "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-sType-sType",
11337          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO</code>"
11338        },
11339        {
11340          "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-parameter",
11341          "text": " <code>planeAspect</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> value"
11342        }
11343      ],
11344      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [
11345        {
11346          "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02282",
11347          "text": " If the image&#8217;s <code>tiling</code> 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\">VkDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifierPlaneCount</code> associated with the image&#8217;s <code>format</code> and <a href=\"#VkImageDrmFormatModifierPropertiesEXT\">VkImageDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifier</code>)"
11348        }
11349      ]
11350    },
11351    "VkMemoryRequirements2": {
11352      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
11353        {
11354          "vuid": "VUID-VkMemoryRequirements2-sType-sType",
11355          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2</code>"
11356        },
11357        {
11358          "vuid": "VUID-VkMemoryRequirements2-pNext-pNext",
11359          "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>"
11360        },
11361        {
11362          "vuid": "VUID-VkMemoryRequirements2-sType-unique",
11363          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
11364        }
11365      ]
11366    },
11367    "VkMemoryDedicatedRequirements": {
11368      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
11369        {
11370          "vuid": "VUID-VkMemoryDedicatedRequirements-sType-sType",
11371          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS</code>"
11372        }
11373      ]
11374    },
11375    "vkBindBufferMemory": {
11376      "core": [
11377        {
11378          "vuid": "VUID-vkBindBufferMemory-buffer-01029",
11379          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
11380        },
11381        {
11382          "vuid": "VUID-vkBindBufferMemory-buffer-01030",
11383          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
11384        },
11385        {
11386          "vuid": "VUID-vkBindBufferMemory-memoryOffset-01031",
11387          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
11388        },
11389        {
11390          "vuid": "VUID-vkBindBufferMemory-memory-01035",
11391          "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>"
11392        },
11393        {
11394          "vuid": "VUID-vkBindBufferMemory-memoryOffset-01036",
11395          "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>"
11396        },
11397        {
11398          "vuid": "VUID-vkBindBufferMemory-size-01037",
11399          "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>"
11400        },
11401        {
11402          "vuid": "VUID-vkBindBufferMemory-device-parameter",
11403          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
11404        },
11405        {
11406          "vuid": "VUID-vkBindBufferMemory-buffer-parameter",
11407          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
11408        },
11409        {
11410          "vuid": "VUID-vkBindBufferMemory-memory-parameter",
11411          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
11412        },
11413        {
11414          "vuid": "VUID-vkBindBufferMemory-buffer-parent",
11415          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
11416        },
11417        {
11418          "vuid": "VUID-vkBindBufferMemory-memory-parent",
11419          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
11420        }
11421      ],
11422      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
11423        {
11424          "vuid": "VUID-vkBindBufferMemory-buffer-01444",
11425          "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>"
11426        },
11427        {
11428          "vuid": "VUID-vkBindBufferMemory-memory-01508",
11429          "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure 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"
11430        }
11431      ],
11432      "(VK_VERSION_1_1)": [
11433        {
11434          "vuid": "VUID-vkBindBufferMemory-None-01898",
11435          "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>"
11436        },
11437        {
11438          "vuid": "VUID-vkBindBufferMemory-None-01899",
11439          "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>"
11440        }
11441      ],
11442      "(VK_NV_dedicated_allocation)": [
11443        {
11444          "vuid": "VUID-vkBindBufferMemory-buffer-01038",
11445          "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"
11446        }
11447      ],
11448      "(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
11449        {
11450          "vuid": "VUID-vkBindBufferMemory-buffer-01039",
11451          "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"
11452        }
11453      ],
11454      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
11455        {
11456          "vuid": "VUID-vkBindBufferMemory-memory-02726",
11457          "text": " If the value of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> used to allocate <code>memory</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> include at least one of the handles set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created"
11458        }
11459      ],
11460      "(VK_VERSION_1_1,VK_KHR_external_memory)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
11461        {
11462          "vuid": "VUID-vkBindBufferMemory-memory-02727",
11463          "text": " If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created"
11464        }
11465      ],
11466      "(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
11467        {
11468          "vuid": "VUID-vkBindBufferMemory-memory-02985",
11469          "text": " If <code>memory</code> was created by a memory import operation, that is not <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> with a non-<code>NULL</code> <code>buffer</code> value, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created"
11470        },
11471        {
11472          "vuid": "VUID-vkBindBufferMemory-memory-02986",
11473          "text": " If <code>memory</code> was created with the <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> memory import operation with a non-<code>NULL</code> <code>buffer</code> value, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created"
11474        }
11475      ],
11476      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
11477        {
11478          "vuid": "VUID-vkBindBufferMemory-bufferDeviceAddress-03339",
11479          "text": " If the <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeatures\">VkPhysicalDeviceBufferDeviceAddressFeatures</a>::<code>bufferDeviceAddress</code> feature is enabled and <code>buffer</code> was created with the <code>VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT</code> bit set, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated with the <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT</code> bit set"
11480        }
11481      ]
11482    },
11483    "vkBindBufferMemory2": {
11484      "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
11485        {
11486          "vuid": "VUID-vkBindBufferMemory2-device-parameter",
11487          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
11488        },
11489        {
11490          "vuid": "VUID-vkBindBufferMemory2-pBindInfos-parameter",
11491          "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <a href=\"#VkBindBufferMemoryInfo\">VkBindBufferMemoryInfo</a> structures"
11492        },
11493        {
11494          "vuid": "VUID-vkBindBufferMemory2-bindInfoCount-arraylength",
11495          "text": " <code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
11496        }
11497      ]
11498    },
11499    "VkBindBufferMemoryInfo": {
11500      "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
11501        {
11502          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01593",
11503          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
11504        },
11505        {
11506          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01594",
11507          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
11508        },
11509        {
11510          "vuid": "VUID-VkBindBufferMemoryInfo-memoryOffset-01595",
11511          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
11512        },
11513        {
11514          "vuid": "VUID-VkBindBufferMemoryInfo-memory-01599",
11515          "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>"
11516        },
11517        {
11518          "vuid": "VUID-VkBindBufferMemoryInfo-memoryOffset-01600",
11519          "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>"
11520        },
11521        {
11522          "vuid": "VUID-VkBindBufferMemoryInfo-size-01601",
11523          "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>"
11524        },
11525        {
11526          "vuid": "VUID-VkBindBufferMemoryInfo-sType-sType",
11527          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO</code>"
11528        },
11529        {
11530          "vuid": "VUID-VkBindBufferMemoryInfo-pNext-pNext",
11531          "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>"
11532        },
11533        {
11534          "vuid": "VUID-VkBindBufferMemoryInfo-sType-unique",
11535          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
11536        },
11537        {
11538          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-parameter",
11539          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
11540        },
11541        {
11542          "vuid": "VUID-VkBindBufferMemoryInfo-memory-parameter",
11543          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
11544        },
11545        {
11546          "vuid": "VUID-VkBindBufferMemoryInfo-commonparent",
11547          "text": " Both of <code>buffer</code>, and <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
11548        }
11549      ],
11550      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
11551        {
11552          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01602",
11553          "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"
11554        },
11555        {
11556          "vuid": "VUID-VkBindBufferMemoryInfo-memory-01900",
11557          "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure 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"
11558        }
11559      ],
11560      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)": [
11561        {
11562          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01603",
11563          "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"
11564        }
11565      ],
11566      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
11567        {
11568          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01604",
11569          "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"
11570        }
11571      ],
11572      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
11573        {
11574          "vuid": "VUID-VkBindBufferMemoryInfo-pNext-01605",
11575          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a> structure, all instances of <code>memory</code> specified by <a href=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a>::<code>pDeviceIndices</code> <strong class=\"purple\">must</strong> have been allocated"
11576        }
11577      ],
11578      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_external_memory)": [
11579        {
11580          "vuid": "VUID-VkBindBufferMemoryInfo-handleTypes-02791",
11581          "text": " If the value of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> used to allocate <code>memory</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> include at least one of the handles set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created"
11582        }
11583      ],
11584      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_external_memory)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
11585        {
11586          "vuid": "VUID-VkBindBufferMemoryInfo-memory-02792",
11587          "text": " If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created"
11588        }
11589      ],
11590      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
11591        {
11592          "vuid": "VUID-VkBindBufferMemoryInfo-memory-02987",
11593          "text": " If <code>memory</code> was created by a memory import operation, that is not <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> with a non-<code>NULL</code> <code>buffer</code> value, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created"
11594        },
11595        {
11596          "vuid": "VUID-VkBindBufferMemoryInfo-memory-02988",
11597          "text": " If <code>memory</code> was created with the <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> memory import operation with a non-<code>NULL</code> <code>buffer</code> value, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created"
11598        }
11599      ],
11600      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_KHR_buffer_device_address)": [
11601        {
11602          "vuid": "VUID-VkBindBufferMemoryInfo-bufferDeviceAddress-02838",
11603          "text": " If the <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeaturesKHR\">VkPhysicalDeviceBufferDeviceAddressFeaturesKHR</a>::<code>bufferDeviceAddress</code> feature is enabled and <code>buffer</code> was created with the <code>VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR</code> bit set, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated with the <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR</code> bit set"
11604        }
11605      ]
11606    },
11607    "VkBindBufferMemoryDeviceGroupInfo": {
11608      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
11609        {
11610          "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-deviceIndexCount-01606",
11611          "text": " <code>deviceIndexCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device"
11612        },
11613        {
11614          "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-01607",
11615          "text": " All elements of <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices"
11616        },
11617        {
11618          "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-sType-sType",
11619          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO</code>"
11620        },
11621        {
11622          "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-parameter",
11623          "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"
11624        }
11625      ]
11626    },
11627    "vkBindImageMemory": {
11628      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
11629        {
11630          "vuid": "VUID-vkBindImageMemory-image-01608",
11631          "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> set"
11632        }
11633      ],
11634      "core": [
11635        {
11636          "vuid": "VUID-vkBindImageMemory-image-01044",
11637          "text": " <code>image</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
11638        },
11639        {
11640          "vuid": "VUID-vkBindImageMemory-image-01045",
11641          "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
11642        },
11643        {
11644          "vuid": "VUID-vkBindImageMemory-memoryOffset-01046",
11645          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
11646        },
11647        {
11648          "vuid": "VUID-vkBindImageMemory-memory-01047",
11649          "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>"
11650        },
11651        {
11652          "vuid": "VUID-vkBindImageMemory-memoryOffset-01048",
11653          "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>"
11654        },
11655        {
11656          "vuid": "VUID-vkBindImageMemory-size-01049",
11657          "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>"
11658        },
11659        {
11660          "vuid": "VUID-vkBindImageMemory-device-parameter",
11661          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
11662        },
11663        {
11664          "vuid": "VUID-vkBindImageMemory-image-parameter",
11665          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
11666        },
11667        {
11668          "vuid": "VUID-vkBindImageMemory-memory-parameter",
11669          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
11670        },
11671        {
11672          "vuid": "VUID-vkBindImageMemory-image-parent",
11673          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
11674        },
11675        {
11676          "vuid": "VUID-vkBindImageMemory-memory-parent",
11677          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
11678        }
11679      ],
11680      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
11681        {
11682          "vuid": "VUID-vkBindImageMemory-image-01445",
11683          "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>"
11684        }
11685      ],
11686      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_NV_dedicated_allocation_image_aliasing)": [
11687        {
11688          "vuid": "VUID-vkBindImageMemory-memory-01509",
11689          "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure 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"
11690        }
11691      ],
11692      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_NV_dedicated_allocation_image_aliasing)": [
11693        {
11694          "vuid": "VUID-vkBindImageMemory-memory-02628",
11695          "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 a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure 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"
11696        },
11697        {
11698          "vuid": "VUID-vkBindImageMemory-memory-02629",
11699          "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 a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure 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 <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>, 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"
11700        }
11701      ],
11702      "(VK_VERSION_1_1)": [
11703        {
11704          "vuid": "VUID-vkBindImageMemory-None-01901",
11705          "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>"
11706        },
11707        {
11708          "vuid": "VUID-vkBindImageMemory-None-01902",
11709          "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>"
11710        }
11711      ],
11712      "(VK_NV_dedicated_allocation)": [
11713        {
11714          "vuid": "VUID-vkBindImageMemory-image-01050",
11715          "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"
11716        }
11717      ],
11718      "(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
11719        {
11720          "vuid": "VUID-vkBindImageMemory-image-01051",
11721          "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"
11722        }
11723      ],
11724      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
11725        {
11726          "vuid": "VUID-vkBindImageMemory-memory-02728",
11727          "text": " If the value of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> used to allocate <code>memory</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> include at least one of the handles set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created"
11728        }
11729      ],
11730      "(VK_VERSION_1_1,VK_KHR_external_memory)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
11731        {
11732          "vuid": "VUID-vkBindImageMemory-memory-02729",
11733          "text": " If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created"
11734        }
11735      ],
11736      "(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
11737        {
11738          "vuid": "VUID-vkBindImageMemory-memory-02989",
11739          "text": " If <code>memory</code> was created by a memory import operation, that is not <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> with a non-<code>NULL</code> <code>buffer</code> value, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created"
11740        },
11741        {
11742          "vuid": "VUID-vkBindImageMemory-memory-02990",
11743          "text": " If <code>memory</code> was created with the <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> memory import operation with a non-<code>NULL</code> <code>buffer</code> value, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created"
11744        }
11745      ]
11746    },
11747    "vkBindImageMemory2": {
11748      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
11749        {
11750          "vuid": "VUID-vkBindImageMemory2-pBindInfos-02858",
11751          "text": " If any <a href=\"#VkBindImageMemoryInfo\">VkBindImageMemoryInfo</a>::image was created with <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> then all planes of <a href=\"#VkBindImageMemoryInfo\">VkBindImageMemoryInfo</a>::image <strong class=\"purple\">must</strong> be bound individually in separate <code>pBindInfos</code>"
11752        },
11753        {
11754          "vuid": "VUID-vkBindImageMemory2-pBindInfos-04006",
11755          "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> not refer to the same image subresource more than once"
11756        }
11757      ],
11758      "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
11759        {
11760          "vuid": "VUID-vkBindImageMemory2-device-parameter",
11761          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
11762        },
11763        {
11764          "vuid": "VUID-vkBindImageMemory2-pBindInfos-parameter",
11765          "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <a href=\"#VkBindImageMemoryInfo\">VkBindImageMemoryInfo</a> structures"
11766        },
11767        {
11768          "vuid": "VUID-vkBindImageMemory2-bindInfoCount-arraylength",
11769          "text": " <code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
11770        }
11771      ]
11772    },
11773    "VkBindImageMemoryInfo": {
11774      "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
11775        {
11776          "vuid": "VUID-VkBindImageMemoryInfo-image-01609",
11777          "text": " <code>image</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
11778        },
11779        {
11780          "vuid": "VUID-VkBindImageMemoryInfo-image-01610",
11781          "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
11782        },
11783        {
11784          "vuid": "VUID-VkBindImageMemoryInfo-memoryOffset-01611",
11785          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
11786        },
11787        {
11788          "vuid": "VUID-VkBindImageMemoryInfo-sType-sType",
11789          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO</code>"
11790        },
11791        {
11792          "vuid": "VUID-VkBindImageMemoryInfo-pNext-pNext",
11793          "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>"
11794        },
11795        {
11796          "vuid": "VUID-VkBindImageMemoryInfo-sType-unique",
11797          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
11798        },
11799        {
11800          "vuid": "VUID-VkBindImageMemoryInfo-image-parameter",
11801          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
11802        },
11803        {
11804          "vuid": "VUID-VkBindImageMemoryInfo-commonparent",
11805          "text": " Both of <code>image</code>, and <code>memory</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
11806        }
11807      ],
11808      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
11809        {
11810          "vuid": "VUID-VkBindImageMemoryInfo-memory-01612",
11811          "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>"
11812        },
11813        {
11814          "vuid": "VUID-VkBindImageMemoryInfo-memoryOffset-01613",
11815          "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>"
11816        },
11817        {
11818          "vuid": "VUID-VkBindImageMemoryInfo-memory-01614",
11819          "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>"
11820        }
11821      ],
11822      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
11823        {
11824          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01615",
11825          "text": " If the <code>pNext</code> chain does not include a <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>"
11826        },
11827        {
11828          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01616",
11829          "text": " If the <code>pNext</code> chain does not include a <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>"
11830        },
11831        {
11832          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01617",
11833          "text": " If the <code>pNext</code> chain does not include a <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>"
11834        },
11835        {
11836          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01618",
11837          "text": " If the <code>pNext</code> chain includes a <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"
11838        },
11839        {
11840          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01619",
11841          "text": " If the <code>pNext</code> chain includes a <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 where <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a>::<code>planeAspect</code> corresponds to the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a>::<code>planeAspect</code> in the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure&#8217;s <code>pNext</code> chain"
11842        },
11843        {
11844          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01620",
11845          "text": " If the <code>pNext</code> chain includes a <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 where <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a>::<code>planeAspect</code> corresponds to the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a>::<code>planeAspect</code> in the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure&#8217;s <code>pNext</code> chain"
11846        },
11847        {
11848          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01621",
11849          "text": " If the <code>pNext</code> chain includes a <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 where <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a>::<code>planeAspect</code> corresponds to the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a>::<code>planeAspect</code> in the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure&#8217;s <code>pNext</code> chain"
11850        }
11851      ],
11852      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
11853        {
11854          "vuid": "VUID-VkBindImageMemoryInfo-image-01622",
11855          "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"
11856        }
11857      ],
11858      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_NV_dedicated_allocation_image_aliasing)": [
11859        {
11860          "vuid": "VUID-VkBindImageMemoryInfo-memory-01903",
11861          "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure 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"
11862        }
11863      ],
11864      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_NV_dedicated_allocation_image_aliasing)": [
11865        {
11866          "vuid": "VUID-VkBindImageMemoryInfo-memory-02630",
11867          "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 a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure 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"
11868        },
11869        {
11870          "vuid": "VUID-VkBindImageMemoryInfo-memory-02631",
11871          "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 a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure 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 <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>, 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"
11872        }
11873      ],
11874      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)": [
11875        {
11876          "vuid": "VUID-VkBindImageMemoryInfo-image-01623",
11877          "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"
11878        }
11879      ],
11880      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
11881        {
11882          "vuid": "VUID-VkBindImageMemoryInfo-image-01624",
11883          "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"
11884        }
11885      ],
11886      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+!(VK_VERSION_1_1+VK_KHR_swapchain)+!(VK_KHR_device_group+VK_KHR_swapchain)": [
11887        {
11888          "vuid": "VUID-VkBindImageMemoryInfo-memory-01625",
11889          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
11890        }
11891      ],
11892      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
11893        {
11894          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01626",
11895          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a> structure, all instances of <code>memory</code> specified by <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pDeviceIndices</code> <strong class=\"purple\">must</strong> have been allocated"
11896        },
11897        {
11898          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01627",
11899          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a> structure, 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"
11900        },
11901        {
11902          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01628",
11903          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a> structure, 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>"
11904        },
11905        {
11906          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01629",
11907          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a> structure, 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"
11908        }
11909      ],
11910      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [
11911        {
11912          "vuid": "VUID-VkBindImageMemoryInfo-image-01630",
11913          "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 <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a> structure containing the same swapchain handle"
11914        },
11915        {
11916          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01631",
11917          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a> structure, <code>memory</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
11918        },
11919        {
11920          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01632",
11921          "text": " If the <code>pNext</code> chain does not include a <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a> structure, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
11922        }
11923      ],
11924      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_external_memory)": [
11925        {
11926          "vuid": "VUID-VkBindImageMemoryInfo-handleTypes-02793",
11927          "text": " If the value of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> used to allocate <code>memory</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> include at least one of the handles set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created"
11928        }
11929      ],
11930      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_external_memory)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
11931        {
11932          "vuid": "VUID-VkBindImageMemoryInfo-memory-02794",
11933          "text": " If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created"
11934        }
11935      ],
11936      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
11937        {
11938          "vuid": "VUID-VkBindImageMemoryInfo-memory-02991",
11939          "text": " If <code>memory</code> was created by a memory import operation, that is not <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> with a non-<code>NULL</code> <code>buffer</code> value, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created"
11940        },
11941        {
11942          "vuid": "VUID-VkBindImageMemoryInfo-memory-02992",
11943          "text": " If <code>memory</code> was created with the <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> memory import operation with a non-<code>NULL</code> <code>buffer</code> value, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created"
11944        }
11945      ]
11946    },
11947    "VkBindImageMemoryDeviceGroupInfo": {
11948      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
11949        {
11950          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01633",
11951          "text": " At least one of <code>deviceIndexCount</code> and <code>splitInstanceBindRegionCount</code> <strong class=\"purple\">must</strong> be zero"
11952        },
11953        {
11954          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01634",
11955          "text": " <code>deviceIndexCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device"
11956        },
11957        {
11958          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-01635",
11959          "text": " All elements of <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices"
11960        },
11961        {
11962          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-splitInstanceBindRegionCount-01636",
11963          "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"
11964        },
11965        {
11966          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-01637",
11967          "text": " Elements of <code>pSplitInstanceBindRegions</code> that correspond to the same instance of an image <strong class=\"purple\">must</strong> not overlap"
11968        },
11969        {
11970          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-offset-01638",
11971          "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"
11972        },
11973        {
11974          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-offset-01639",
11975          "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"
11976        },
11977        {
11978          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-extent-01640",
11979          "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> &#43; <code>offset.x</code> <strong class=\"purple\">must</strong> equal the width of the image subresource"
11980        },
11981        {
11982          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-extent-01641",
11983          "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> &#43; <code>offset.y</code> <strong class=\"purple\">must</strong> equal the width of the image subresource"
11984        },
11985        {
11986          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-sType-sType",
11987          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO</code>"
11988        },
11989        {
11990          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-parameter",
11991          "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"
11992        },
11993        {
11994          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-parameter",
11995          "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> <a href=\"#VkRect2D\">VkRect2D</a> structures"
11996        }
11997      ]
11998    },
11999    "VkBindImageMemorySwapchainInfoKHR": {
12000      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [
12001        {
12002          "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-imageIndex-01644",
12003          "text": " <code>imageIndex</code> <strong class=\"purple\">must</strong> be less than the number of images in <code>swapchain</code>"
12004        },
12005        {
12006          "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-sType-sType",
12007          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR</code>"
12008        },
12009        {
12010          "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-swapchain-parameter",
12011          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle"
12012        }
12013      ]
12014    },
12015    "VkBindImagePlaneMemoryInfo": {
12016      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
12017        {
12018          "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-02283",
12019          "text": " If the image&#8217;s <code>tiling</code> 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>)"
12020        },
12021        {
12022          "vuid": "VUID-VkBindImagePlaneMemoryInfo-sType-sType",
12023          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO</code>"
12024        },
12025        {
12026          "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-parameter",
12027          "text": " <code>planeAspect</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> value"
12028        }
12029      ],
12030      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [
12031        {
12032          "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-02284",
12033          "text": " If the image&#8217;s <code>tiling</code> 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\">VkDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifierPlaneCount</code> associated with the image&#8217;s <code>format</code> and <a href=\"#VkImageDrmFormatModifierPropertiesEXT\">VkImageDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifier</code>)"
12034        }
12035      ]
12036    },
12037    "vkCreateAccelerationStructureNV": {
12038      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
12039        {
12040          "vuid": "VUID-vkCreateAccelerationStructureNV-device-parameter",
12041          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
12042        },
12043        {
12044          "vuid": "VUID-vkCreateAccelerationStructureNV-pCreateInfo-parameter",
12045          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureCreateInfoNV\">VkAccelerationStructureCreateInfoNV</a> structure"
12046        },
12047        {
12048          "vuid": "VUID-vkCreateAccelerationStructureNV-pAllocator-parameter",
12049          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
12050        },
12051        {
12052          "vuid": "VUID-vkCreateAccelerationStructureNV-pAccelerationStructure-parameter",
12053          "text": " <code>pAccelerationStructure</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle"
12054        }
12055      ]
12056    },
12057    "VkAccelerationStructureCreateInfoNV": {
12058      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
12059        {
12060          "vuid": "VUID-VkAccelerationStructureCreateInfoNV-compactedSize-02421",
12061          "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>"
12062        },
12063        {
12064          "vuid": "VUID-VkAccelerationStructureCreateInfoNV-sType-sType",
12065          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV</code>"
12066        },
12067        {
12068          "vuid": "VUID-VkAccelerationStructureCreateInfoNV-pNext-pNext",
12069          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
12070        },
12071        {
12072          "vuid": "VUID-VkAccelerationStructureCreateInfoNV-info-parameter",
12073          "text": " <code>info</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a> structure"
12074        }
12075      ]
12076    },
12077    "VkAccelerationStructureInfoNV": {
12078      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
12079        {
12080          "vuid": "VUID-VkAccelerationStructureInfoNV-geometryCount-02422",
12081          "text": " <code>geometryCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxGeometryCount</code>"
12082        },
12083        {
12084          "vuid": "VUID-VkAccelerationStructureInfoNV-instanceCount-02423",
12085          "text": " <code>instanceCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxInstanceCount</code>"
12086        },
12087        {
12088          "vuid": "VUID-VkAccelerationStructureInfoNV-maxTriangleCount-02424",
12089          "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>"
12090        },
12091        {
12092          "vuid": "VUID-VkAccelerationStructureInfoNV-type-02425",
12093          "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>"
12094        },
12095        {
12096          "vuid": "VUID-VkAccelerationStructureInfoNV-type-02426",
12097          "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>"
12098        },
12099        {
12100          "vuid": "VUID-VkAccelerationStructureInfoNV-type-02786",
12101          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV</code> then the <code>geometryType</code> member of each geometry in <code>pGeometries</code> <strong class=\"purple\">must</strong> be the same"
12102        },
12103        {
12104          "vuid": "VUID-VkAccelerationStructureInfoNV-flags-02592",
12105          "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"
12106        },
12107        {
12108          "vuid": "VUID-VkAccelerationStructureInfoNV-scratch-02781",
12109          "text": " <code>scratch</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_RAY_TRACING_BIT_NV</code> usage flag"
12110        },
12111        {
12112          "vuid": "VUID-VkAccelerationStructureInfoNV-instanceData-02782",
12113          "text": " If <code>instanceData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>instanceData</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_RAY_TRACING_BIT_NV</code> usage flag"
12114        },
12115        {
12116          "vuid": "VUID-VkAccelerationStructureInfoNV-sType-sType",
12117          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV</code>"
12118        },
12119        {
12120          "vuid": "VUID-VkAccelerationStructureInfoNV-pNext-pNext",
12121          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
12122        },
12123        {
12124          "vuid": "VUID-VkAccelerationStructureInfoNV-type-parameter",
12125          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureTypeNV\">VkAccelerationStructureTypeNV</a> value"
12126        },
12127        {
12128          "vuid": "VUID-VkAccelerationStructureInfoNV-flags-parameter",
12129          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBuildAccelerationStructureFlagBitsNV\">VkBuildAccelerationStructureFlagBitsNV</a> values"
12130        },
12131        {
12132          "vuid": "VUID-VkAccelerationStructureInfoNV-pGeometries-parameter",
12133          "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 <a href=\"#VkGeometryNV\">VkGeometryNV</a> structures"
12134        }
12135      ]
12136    },
12137    "vkCreateAccelerationStructureKHR": {
12138      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
12139        {
12140          "vuid": "VUID-vkCreateAccelerationStructureKHR-rayTracing-03487",
12141          "text": " The <a href=\"#features-raytracing\"><code>rayTracing</code></a> or <a href=\"#features-rayQuery\"><code>rayQuery</code></a> feature <strong class=\"purple\">must</strong> be enabled"
12142        },
12143        {
12144          "vuid": "VUID-vkCreateAccelerationStructureKHR-deviceAddress-03488",
12145          "text": " If <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>deviceAddress</code> is not zero, the <a href=\"#features-raytracing-ascapturereplay\"><code>rayTracingAccelerationStructureCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled"
12146        },
12147        {
12148          "vuid": "VUID-vkCreateAccelerationStructureKHR-device-03489",
12149          "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"
12150        },
12151        {
12152          "vuid": "VUID-vkCreateAccelerationStructureKHR-device-parameter",
12153          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
12154        },
12155        {
12156          "vuid": "VUID-vkCreateAccelerationStructureKHR-pCreateInfo-parameter",
12157          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a> structure"
12158        },
12159        {
12160          "vuid": "VUID-vkCreateAccelerationStructureKHR-pAllocator-parameter",
12161          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
12162        },
12163        {
12164          "vuid": "VUID-vkCreateAccelerationStructureKHR-pAccelerationStructure-parameter",
12165          "text": " <code>pAccelerationStructure</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
12166        }
12167      ]
12168    },
12169    "VkAccelerationStructureCreateInfoKHR": {
12170      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
12171        {
12172          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-compactedSize-03490",
12173          "text": " If <code>compactedSize</code> is not <code>0</code> then <code>maxGeometryCount</code> <strong class=\"purple\">must</strong> be <code>0</code>"
12174        },
12175        {
12176          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-compactedSize-02993",
12177          "text": " If <code>compactedSize</code> is <code>0</code> then <code>maxGeometryCount</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
12178        },
12179        {
12180          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-type-03491",
12181          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> then <code>maxGeometryCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesKHR\">VkPhysicalDeviceRayTracingPropertiesKHR</a>::<code>maxGeometryCount</code>"
12182        },
12183        {
12184          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-type-03492",
12185          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code> then the <code>maxPrimitiveCount</code> member of each element of the <code>pGeometryInfos</code> array <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesKHR\">VkPhysicalDeviceRayTracingPropertiesKHR</a>::<code>maxInstanceCount</code>"
12186        },
12187        {
12188          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-maxPrimitiveCount-03493",
12189          "text": " The total number of triangles in all geometries <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesKHR\">VkPhysicalDeviceRayTracingPropertiesKHR</a>::<code>maxPrimitiveCount</code>"
12190        },
12191        {
12192          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-maxPrimitiveCount-03494",
12193          "text": " The total number of AABBs in all geometries <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesKHR\">VkPhysicalDeviceRayTracingPropertiesKHR</a>::<code>maxPrimitiveCount</code>"
12194        },
12195        {
12196          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-type-03495",
12197          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code> and <code>compactedSize</code> is <code>0</code>, <code>maxGeometryCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
12198        },
12199        {
12200          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-type-03496",
12201          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code> and <code>compactedSize</code> is <code>0</code>, the <code>geometryType</code> member of elements of <code>pGeometryInfos</code> <strong class=\"purple\">must</strong> be <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>"
12202        },
12203        {
12204          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-type-03497",
12205          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> and <code>compactedSize</code> is <code>0</code>, the <code>geometryType</code> member of elements of <code>pGeometryInfos</code> <strong class=\"purple\">must</strong> not be <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>"
12206        },
12207        {
12208          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-type-03498",
12209          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> then the <code>geometryType</code> member of each geometry in <code>pGeometryInfos</code> <strong class=\"purple\">must</strong> be the same"
12210        },
12211        {
12212          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-flags-03499",
12213          "text": " If <code>flags</code> has the <code>VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR</code> bit set, then it <strong class=\"purple\">must</strong> not have the <code>VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR</code> bit set"
12214        },
12215        {
12216          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-deviceAddress-03500",
12217          "text": " If <code>deviceAddress</code> is not <code>0</code>, <a href=\"#VkPhysicalDeviceRayTracingFeaturesKHR\">VkPhysicalDeviceRayTracingFeaturesKHR</a>::<code>rayTracingAccelerationStructureCaptureReplay</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>"
12218        },
12219        {
12220          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-sType-sType",
12221          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR</code>"
12222        },
12223        {
12224          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-pNext-pNext",
12225          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
12226        },
12227        {
12228          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-type-parameter",
12229          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureTypeKHR\">VkAccelerationStructureTypeKHR</a> value"
12230        },
12231        {
12232          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-flags-parameter",
12233          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBuildAccelerationStructureFlagBitsKHR\">VkBuildAccelerationStructureFlagBitsKHR</a> values"
12234        },
12235        {
12236          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-pGeometryInfos-parameter",
12237          "text": " If <code>maxGeometryCount</code> is not <code>0</code>, <code>pGeometryInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>maxGeometryCount</code> valid <a href=\"#VkAccelerationStructureCreateGeometryTypeInfoKHR\">VkAccelerationStructureCreateGeometryTypeInfoKHR</a> structures"
12238        }
12239      ]
12240    },
12241    "VkAccelerationStructureCreateGeometryTypeInfoKHR": {
12242      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
12243        {
12244          "vuid": "VUID-VkAccelerationStructureCreateGeometryTypeInfoKHR-geometryType-03501",
12245          "text": " If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, <code>vertexFormat</code> <strong class=\"purple\">must</strong> support the <code>VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR</code> in <a href=\"#VkFormatProperties\">VkFormatProperties</a>::<code>bufferFeatures</code> as returned by <a href=\"#vkGetPhysicalDeviceFormatProperties2\">vkGetPhysicalDeviceFormatProperties2</a>"
12246        },
12247        {
12248          "vuid": "VUID-VkAccelerationStructureCreateGeometryTypeInfoKHR-geometryType-03502",
12249          "text": " If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, <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_KHR</code>"
12250        },
12251        {
12252          "vuid": "VUID-VkAccelerationStructureCreateGeometryTypeInfoKHR-sType-sType",
12253          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR</code>"
12254        },
12255        {
12256          "vuid": "VUID-VkAccelerationStructureCreateGeometryTypeInfoKHR-pNext-pNext",
12257          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
12258        },
12259        {
12260          "vuid": "VUID-VkAccelerationStructureCreateGeometryTypeInfoKHR-geometryType-parameter",
12261          "text": " <code>geometryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryTypeKHR\">VkGeometryTypeKHR</a> value"
12262        },
12263        {
12264          "vuid": "VUID-VkAccelerationStructureCreateGeometryTypeInfoKHR-indexType-parameter",
12265          "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value"
12266        },
12267        {
12268          "vuid": "VUID-VkAccelerationStructureCreateGeometryTypeInfoKHR-vertexFormat-parameter",
12269          "text": " If <code>vertexFormat</code> is not <code>0</code>, <code>vertexFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
12270        }
12271      ]
12272    },
12273    "VkGeometryNV": {
12274      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
12275        {
12276          "vuid": "VUID-VkGeometryNV-geometryType-03503",
12277          "text": " <code>geometryType</code> <strong class=\"purple\">must</strong> be <code>VK_GEOMETRY_TYPE_TRIANGLES_NV</code> or <code>VK_GEOMETRY_TYPE_AABBS_NV</code>"
12278        },
12279        {
12280          "vuid": "VUID-VkGeometryNV-sType-sType",
12281          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_NV</code>"
12282        },
12283        {
12284          "vuid": "VUID-VkGeometryNV-pNext-pNext",
12285          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
12286        },
12287        {
12288          "vuid": "VUID-VkGeometryNV-geometryType-parameter",
12289          "text": " <code>geometryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryTypeKHR\">VkGeometryTypeKHR</a> value"
12290        },
12291        {
12292          "vuid": "VUID-VkGeometryNV-geometry-parameter",
12293          "text": " <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryDataNV\">VkGeometryDataNV</a> structure"
12294        },
12295        {
12296          "vuid": "VUID-VkGeometryNV-flags-parameter",
12297          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkGeometryFlagBitsKHR\">VkGeometryFlagBitsKHR</a> values"
12298        }
12299      ]
12300    },
12301    "VkGeometryDataNV": {
12302      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
12303        {
12304          "vuid": "VUID-VkGeometryDataNV-triangles-parameter",
12305          "text": " <code>triangles</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryTrianglesNV\">VkGeometryTrianglesNV</a> structure"
12306        },
12307        {
12308          "vuid": "VUID-VkGeometryDataNV-aabbs-parameter",
12309          "text": " <code>aabbs</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryAABBNV\">VkGeometryAABBNV</a> structure"
12310        }
12311      ]
12312    },
12313    "VkGeometryTrianglesNV": {
12314      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
12315        {
12316          "vuid": "VUID-VkGeometryTrianglesNV-vertexOffset-02428",
12317          "text": " <code>vertexOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>vertexData</code>"
12318        },
12319        {
12320          "vuid": "VUID-VkGeometryTrianglesNV-vertexOffset-02429",
12321          "text": " <code>vertexOffset</code> <strong class=\"purple\">must</strong> be a multiple of the component size of <code>vertexFormat</code>"
12322        },
12323        {
12324          "vuid": "VUID-VkGeometryTrianglesNV-vertexFormat-02430",
12325          "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>"
12326        },
12327        {
12328          "vuid": "VUID-VkGeometryTrianglesNV-indexOffset-02431",
12329          "text": " <code>indexOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>indexData</code>"
12330        },
12331        {
12332          "vuid": "VUID-VkGeometryTrianglesNV-indexOffset-02432",
12333          "text": " <code>indexOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of <code>indexType</code>"
12334        },
12335        {
12336          "vuid": "VUID-VkGeometryTrianglesNV-indexType-02433",
12337          "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>"
12338        },
12339        {
12340          "vuid": "VUID-VkGeometryTrianglesNV-indexData-02434",
12341          "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>"
12342        },
12343        {
12344          "vuid": "VUID-VkGeometryTrianglesNV-indexData-02435",
12345          "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>"
12346        },
12347        {
12348          "vuid": "VUID-VkGeometryTrianglesNV-indexCount-02436",
12349          "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>"
12350        },
12351        {
12352          "vuid": "VUID-VkGeometryTrianglesNV-transformOffset-02437",
12353          "text": " <code>transformOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>transformData</code>"
12354        },
12355        {
12356          "vuid": "VUID-VkGeometryTrianglesNV-transformOffset-02438",
12357          "text": " <code>transformOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>16</code>"
12358        },
12359        {
12360          "vuid": "VUID-VkGeometryTrianglesNV-sType-sType",
12361          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV</code>"
12362        },
12363        {
12364          "vuid": "VUID-VkGeometryTrianglesNV-pNext-pNext",
12365          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
12366        },
12367        {
12368          "vuid": "VUID-VkGeometryTrianglesNV-vertexData-parameter",
12369          "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 <a href=\"#VkBuffer\">VkBuffer</a> handle"
12370        },
12371        {
12372          "vuid": "VUID-VkGeometryTrianglesNV-vertexFormat-parameter",
12373          "text": " <code>vertexFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
12374        },
12375        {
12376          "vuid": "VUID-VkGeometryTrianglesNV-indexData-parameter",
12377          "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 <a href=\"#VkBuffer\">VkBuffer</a> handle"
12378        },
12379        {
12380          "vuid": "VUID-VkGeometryTrianglesNV-indexType-parameter",
12381          "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value"
12382        },
12383        {
12384          "vuid": "VUID-VkGeometryTrianglesNV-transformData-parameter",
12385          "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 <a href=\"#VkBuffer\">VkBuffer</a> handle"
12386        },
12387        {
12388          "vuid": "VUID-VkGeometryTrianglesNV-commonparent",
12389          "text": " Each of <code>indexData</code>, <code>transformData</code>, and <code>vertexData</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
12390        }
12391      ]
12392    },
12393    "VkGeometryAABBNV": {
12394      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
12395        {
12396          "vuid": "VUID-VkGeometryAABBNV-offset-02439",
12397          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>aabbData</code>"
12398        },
12399        {
12400          "vuid": "VUID-VkGeometryAABBNV-offset-02440",
12401          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>8</code>"
12402        },
12403        {
12404          "vuid": "VUID-VkGeometryAABBNV-stride-02441",
12405          "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>8</code>"
12406        },
12407        {
12408          "vuid": "VUID-VkGeometryAABBNV-sType-sType",
12409          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV</code>"
12410        },
12411        {
12412          "vuid": "VUID-VkGeometryAABBNV-pNext-pNext",
12413          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
12414        },
12415        {
12416          "vuid": "VUID-VkGeometryAABBNV-aabbData-parameter",
12417          "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 <a href=\"#VkBuffer\">VkBuffer</a> handle"
12418        }
12419      ]
12420    },
12421    "vkDestroyAccelerationStructureKHR": {
12422      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
12423        {
12424          "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02442",
12425          "text": " All submitted commands that refer to <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have completed execution"
12426        },
12427        {
12428          "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02443",
12429          "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"
12430        },
12431        {
12432          "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02444",
12433          "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>"
12434        },
12435        {
12436          "vuid": "VUID-vkDestroyAccelerationStructureKHR-device-parameter",
12437          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
12438        },
12439        {
12440          "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-parameter",
12441          "text": " If <code>accelerationStructure</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
12442        },
12443        {
12444          "vuid": "VUID-vkDestroyAccelerationStructureKHR-pAllocator-parameter",
12445          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
12446        },
12447        {
12448          "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-parent",
12449          "text": " If <code>accelerationStructure</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
12450        }
12451      ]
12452    },
12453    "vkGetAccelerationStructureMemoryRequirementsNV": {
12454      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
12455        {
12456          "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-device-parameter",
12457          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
12458        },
12459        {
12460          "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-pInfo-parameter",
12461          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a> structure"
12462        },
12463        {
12464          "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-pMemoryRequirements-parameter",
12465          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2KHR\">VkMemoryRequirements2KHR</a> structure"
12466        }
12467      ]
12468    },
12469    "VkAccelerationStructureMemoryRequirementsInfoNV": {
12470      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
12471        {
12472          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-sType-sType",
12473          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV</code>"
12474        },
12475        {
12476          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-pNext-pNext",
12477          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
12478        },
12479        {
12480          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-type-parameter",
12481          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureMemoryRequirementsTypeNV\">VkAccelerationStructureMemoryRequirementsTypeNV</a> value"
12482        },
12483        {
12484          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-accelerationStructure-parameter",
12485          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle"
12486        }
12487      ]
12488    },
12489    "vkGetAccelerationStructureMemoryRequirementsKHR": {
12490      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
12491        {
12492          "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsKHR-device-parameter",
12493          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
12494        },
12495        {
12496          "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsKHR-pInfo-parameter",
12497          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureMemoryRequirementsInfoKHR\">VkAccelerationStructureMemoryRequirementsInfoKHR</a> structure"
12498        },
12499        {
12500          "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsKHR-pMemoryRequirements-parameter",
12501          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2\">VkMemoryRequirements2</a> structure"
12502        }
12503      ]
12504    },
12505    "VkAccelerationStructureMemoryRequirementsInfoKHR": {
12506      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
12507        {
12508          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoKHR-sType-sType",
12509          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR</code>"
12510        },
12511        {
12512          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoKHR-pNext-pNext",
12513          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
12514        },
12515        {
12516          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoKHR-type-parameter",
12517          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureMemoryRequirementsTypeKHR\">VkAccelerationStructureMemoryRequirementsTypeKHR</a> value"
12518        },
12519        {
12520          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoKHR-buildType-parameter",
12521          "text": " <code>buildType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureBuildTypeKHR\">VkAccelerationStructureBuildTypeKHR</a> value"
12522        },
12523        {
12524          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoKHR-accelerationStructure-parameter",
12525          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
12526        }
12527      ]
12528    },
12529    "vkBindAccelerationStructureMemoryKHR": {
12530      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
12531        {
12532          "vuid": "VUID-vkBindAccelerationStructureMemoryKHR-device-parameter",
12533          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
12534        },
12535        {
12536          "vuid": "VUID-vkBindAccelerationStructureMemoryKHR-pBindInfos-parameter",
12537          "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <a href=\"#VkBindAccelerationStructureMemoryInfoKHR\">VkBindAccelerationStructureMemoryInfoKHR</a> structures"
12538        },
12539        {
12540          "vuid": "VUID-vkBindAccelerationStructureMemoryKHR-bindInfoCount-arraylength",
12541          "text": " <code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
12542        }
12543      ]
12544    },
12545    "VkBindAccelerationStructureMemoryInfoKHR": {
12546      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
12547        {
12548          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-accelerationStructure-02450",
12549          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
12550        },
12551        {
12552          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-memoryOffset-02451",
12553          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
12554        },
12555        {
12556          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-memory-02593",
12557          "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=\"#vkGetAccelerationStructureMemoryRequirementsKHR\">vkGetAccelerationStructureMemoryRequirementsKHR</a> with <code>accelerationStructure</code> and <code>type</code> of <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR</code>"
12558        },
12559        {
12560          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-memoryOffset-02594",
12561          "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=\"#vkGetAccelerationStructureMemoryRequirementsKHR\">vkGetAccelerationStructureMemoryRequirementsKHR</a> with <code>accelerationStructure</code> and <code>type</code> of <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR</code>"
12562        },
12563        {
12564          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-size-02595",
12565          "text": " The <code>size</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsKHR\">vkGetAccelerationStructureMemoryRequirementsKHR</a> with <code>accelerationStructure</code> and <code>type</code> of <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>"
12566        },
12567        {
12568          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-sType-sType",
12569          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR</code>"
12570        },
12571        {
12572          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-pNext-pNext",
12573          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
12574        },
12575        {
12576          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-accelerationStructure-parameter",
12577          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
12578        },
12579        {
12580          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-memory-parameter",
12581          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
12582        },
12583        {
12584          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-pDeviceIndices-parameter",
12585          "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"
12586        },
12587        {
12588          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-commonparent",
12589          "text": " Both of <code>accelerationStructure</code>, and <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
12590        }
12591      ]
12592    },
12593    "vkGetAccelerationStructureHandleNV": {
12594      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
12595        {
12596          "vuid": "VUID-vkGetAccelerationStructureHandleNV-dataSize-02240",
12597          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be large enough to contain the result of the query, as described above"
12598        },
12599        {
12600          "vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-02787",
12601          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object via <a href=\"#vkBindAccelerationStructureMemoryKHR\">vkBindAccelerationStructureMemoryKHR</a>"
12602        },
12603        {
12604          "vuid": "VUID-vkGetAccelerationStructureHandleNV-device-parameter",
12605          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
12606        },
12607        {
12608          "vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parameter",
12609          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
12610        },
12611        {
12612          "vuid": "VUID-vkGetAccelerationStructureHandleNV-pData-parameter",
12613          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
12614        },
12615        {
12616          "vuid": "VUID-vkGetAccelerationStructureHandleNV-dataSize-arraylength",
12617          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
12618        },
12619        {
12620          "vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parent",
12621          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
12622        }
12623      ]
12624    },
12625    "vkGetAccelerationStructureDeviceAddressKHR": {
12626      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
12627        {
12628          "vuid": "VUID-vkGetAccelerationStructureDeviceAddressKHR-device-03504",
12629          "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"
12630        },
12631        {
12632          "vuid": "VUID-vkGetAccelerationStructureDeviceAddressKHR-device-parameter",
12633          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
12634        },
12635        {
12636          "vuid": "VUID-vkGetAccelerationStructureDeviceAddressKHR-pInfo-parameter",
12637          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureDeviceAddressInfoKHR\">VkAccelerationStructureDeviceAddressInfoKHR</a> structure"
12638        }
12639      ]
12640    },
12641    "VkAccelerationStructureDeviceAddressInfoKHR": {
12642      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
12643        {
12644          "vuid": "VUID-VkAccelerationStructureDeviceAddressInfoKHR-sType-sType",
12645          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR</code>"
12646        },
12647        {
12648          "vuid": "VUID-VkAccelerationStructureDeviceAddressInfoKHR-pNext-pNext",
12649          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
12650        },
12651        {
12652          "vuid": "VUID-VkAccelerationStructureDeviceAddressInfoKHR-accelerationStructure-parameter",
12653          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
12654        }
12655      ]
12656    },
12657    "vkCreateSampler": {
12658      "core": [
12659        {
12660          "vuid": "VUID-vkCreateSampler-maxSamplerAllocationCount-04110",
12661          "text": " There <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxSamplerAllocationCount</code> VkSampler objects currently created on the device."
12662        },
12663        {
12664          "vuid": "VUID-vkCreateSampler-device-parameter",
12665          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
12666        },
12667        {
12668          "vuid": "VUID-vkCreateSampler-pCreateInfo-parameter",
12669          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSamplerCreateInfo\">VkSamplerCreateInfo</a> structure"
12670        },
12671        {
12672          "vuid": "VUID-vkCreateSampler-pAllocator-parameter",
12673          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
12674        },
12675        {
12676          "vuid": "VUID-vkCreateSampler-pSampler-parameter",
12677          "text": " <code>pSampler</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSampler\">VkSampler</a> handle"
12678        }
12679      ]
12680    },
12681    "VkSamplerCreateInfo": {
12682      "core": [
12683        {
12684          "vuid": "VUID-VkSamplerCreateInfo-mipLodBias-01069",
12685          "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>"
12686        },
12687        {
12688          "vuid": "VUID-VkSamplerCreateInfo-maxLod-01973",
12689          "text": " <code>maxLod</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>minLod</code>"
12690        },
12691        {
12692          "vuid": "VUID-VkSamplerCreateInfo-anisotropyEnable-01070",
12693          "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>"
12694        },
12695        {
12696          "vuid": "VUID-VkSamplerCreateInfo-anisotropyEnable-01071",
12697          "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"
12698        },
12699        {
12700          "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01072",
12701          "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>minFilter</code> and <code>magFilter</code> <strong class=\"purple\">must</strong> be equal"
12702        },
12703        {
12704          "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01073",
12705          "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>"
12706        },
12707        {
12708          "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01074",
12709          "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>minLod</code> and <code>maxLod</code> <strong class=\"purple\">must</strong> be zero"
12710        },
12711        {
12712          "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01075",
12713          "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>"
12714        },
12715        {
12716          "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01076",
12717          "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
12718        },
12719        {
12720          "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01077",
12721          "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>compareEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
12722        },
12723        {
12724          "vuid": "VUID-VkSamplerCreateInfo-addressModeU-01078",
12725          "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"
12726        },
12727        {
12728          "vuid": "VUID-VkSamplerCreateInfo-compareEnable-01080",
12729          "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"
12730        },
12731        {
12732          "vuid": "VUID-VkSamplerCreateInfo-sType-sType",
12733          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO</code>"
12734        },
12735        {
12736          "vuid": "VUID-VkSamplerCreateInfo-pNext-pNext",
12737          "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=\"#VkSamplerCustomBorderColorCreateInfoEXT\">VkSamplerCustomBorderColorCreateInfoEXT</a>, <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>, or <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a>"
12738        },
12739        {
12740          "vuid": "VUID-VkSamplerCreateInfo-sType-unique",
12741          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
12742        },
12743        {
12744          "vuid": "VUID-VkSamplerCreateInfo-flags-parameter",
12745          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSamplerCreateFlagBits\">VkSamplerCreateFlagBits</a> values"
12746        },
12747        {
12748          "vuid": "VUID-VkSamplerCreateInfo-magFilter-parameter",
12749          "text": " <code>magFilter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value"
12750        },
12751        {
12752          "vuid": "VUID-VkSamplerCreateInfo-minFilter-parameter",
12753          "text": " <code>minFilter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value"
12754        },
12755        {
12756          "vuid": "VUID-VkSamplerCreateInfo-mipmapMode-parameter",
12757          "text": " <code>mipmapMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerMipmapMode\">VkSamplerMipmapMode</a> value"
12758        },
12759        {
12760          "vuid": "VUID-VkSamplerCreateInfo-addressModeU-parameter",
12761          "text": " <code>addressModeU</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> value"
12762        },
12763        {
12764          "vuid": "VUID-VkSamplerCreateInfo-addressModeV-parameter",
12765          "text": " <code>addressModeV</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> value"
12766        },
12767        {
12768          "vuid": "VUID-VkSamplerCreateInfo-addressModeW-parameter",
12769          "text": " <code>addressModeW</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> value"
12770        }
12771      ],
12772      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
12773        {
12774          "vuid": "VUID-VkSamplerCreateInfo-minFilter-01645",
12775          "text": " If <a href=\"#samplers-YCbCr-conversion\">sampler {YCbCr} conversion</a> is enabled and the <a href=\"#potential-format-features\">potential format features</a> of the sampler {YCbCr} conversion do not support <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT</code>, <code>minFilter</code> and <code>magFilter</code> <strong class=\"purple\">must</strong> be equal to the sampler {YCbCr} conversion&#8217;s <code>chromaFilter</code>"
12776        },
12777        {
12778          "vuid": "VUID-VkSamplerCreateInfo-addressModeU-01646",
12779          "text": " If <a href=\"#samplers-YCbCr-conversion\">sampler {YCbCr} 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>"
12780        }
12781      ],
12782      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_VERSION_1_2,VK_EXT_sampler_filter_minmax)": [
12783        {
12784          "vuid": "VUID-VkSamplerCreateInfo-None-01647",
12785          "text": " The sampler reduction mode <strong class=\"purple\">must</strong> be set to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code> if <a href=\"#samplers-YCbCr-conversion\">sampler {YCbCr} conversion</a> is enabled"
12786        }
12787      ],
12788      "(VK_VERSION_1_2,VK_KHR_sampler_mirror_clamp_to_edge)": [
12789        {
12790          "vuid": "VUID-VkSamplerCreateInfo-addressModeU-01079",
12791          "text": "     If ifdef::VK_VERSION_1_2[<a href=\"#features-samplerMirrorClampToEdge\">samplerMirrorClampToEdge</a> is not enabled, and 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>"
12792        }
12793      ],
12794      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
12795        {
12796          "vuid": "VUID-VkSamplerCreateInfo-magFilter-01081",
12797          "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>"
12798        }
12799      ],
12800      "(VK_IMG_filter_cubic+VK_EXT_sampler_filter_minmax)+!(VK_EXT_filter_cubic)": [
12801        {
12802          "vuid": "VUID-VkSamplerCreateInfo-magFilter-01422",
12803          "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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>"
12804        }
12805      ],
12806      "(VK_VERSION_1_2,VK_EXT_sampler_filter_minmax)": [
12807        {
12808          "vuid": "VUID-VkSamplerCreateInfo-compareEnable-01423",
12809          "text": " If <code>compareEnable</code> is <code>VK_TRUE</code>, the <code>reductionMode</code> member of <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>"
12810        }
12811      ],
12812      "(VK_EXT_fragment_density_map)": [
12813        {
12814          "vuid": "VUID-VkSamplerCreateInfo-flags-02574",
12815          "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"
12816        },
12817        {
12818          "vuid": "VUID-VkSamplerCreateInfo-flags-02575",
12819          "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>"
12820        },
12821        {
12822          "vuid": "VUID-VkSamplerCreateInfo-flags-02576",
12823          "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"
12824        },
12825        {
12826          "vuid": "VUID-VkSamplerCreateInfo-flags-02577",
12827          "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>"
12828        },
12829        {
12830          "vuid": "VUID-VkSamplerCreateInfo-flags-02578",
12831          "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>"
12832        },
12833        {
12834          "vuid": "VUID-VkSamplerCreateInfo-flags-02579",
12835          "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>"
12836        },
12837        {
12838          "vuid": "VUID-VkSamplerCreateInfo-flags-02580",
12839          "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>"
12840        }
12841      ],
12842      "(VK_EXT_custom_border_color)": [
12843        {
12844          "vuid": "VUID-VkSamplerCreateInfo-borderColor-04011",
12845          "text": " If <code>borderColor</code> is set to one of <code>VK_BORDER_COLOR_FLOAT_CUSTOM_EXT</code> or <code>VK_BORDER_COLOR_INT_CUSTOM_EXT</code>, then a <a href=\"#VkSamplerCustomBorderColorCreateInfoEXT\">VkSamplerCustomBorderColorCreateInfoEXT</a> <strong class=\"purple\">must</strong> be present in the <code>pNext</code> chain"
12846        },
12847        {
12848          "vuid": "VUID-VkSamplerCreateInfo-customBorderColors-04085",
12849          "text": " If the <a href=\"#features-customBorderColors\"><code>customBorderColors</code></a> feature is not enabled, <code>borderColor</code> <strong class=\"purple\">must</strong> not be set to <code>VK_BORDER_COLOR_FLOAT_CUSTOM_EXT</code> or <code>VK_BORDER_COLOR_INT_CUSTOM_EXT</code>"
12850        },
12851        {
12852          "vuid": "VUID-VkSamplerCreateInfo-None-04012",
12853          "text": " The maximum number of samplers with custom border colors which <strong class=\"purple\">can</strong> be simultaneously created on a device is implementation-dependent and specified by the <a href=\"#limits-maxCustomBorderColorSamplers\">maxCustomBorderColorSamplers</a> member of the <a href=\"#VkPhysicalDeviceCustomBorderColorPropertiesEXT\">VkPhysicalDeviceCustomBorderColorPropertiesEXT</a> structure"
12854        }
12855      ]
12856    },
12857    "VkSamplerReductionModeCreateInfo": {
12858      "(VK_VERSION_1_2,VK_EXT_sampler_filter_minmax)": [
12859        {
12860          "vuid": "VUID-VkSamplerReductionModeCreateInfo-sType-sType",
12861          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO</code>"
12862        },
12863        {
12864          "vuid": "VUID-VkSamplerReductionModeCreateInfo-reductionMode-parameter",
12865          "text": " <code>reductionMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerReductionMode\">VkSamplerReductionMode</a> value"
12866        }
12867      ]
12868    },
12869    "vkDestroySampler": {
12870      "core": [
12871        {
12872          "vuid": "VUID-vkDestroySampler-sampler-01082",
12873          "text": " All submitted commands that refer to <code>sampler</code> <strong class=\"purple\">must</strong> have completed execution"
12874        },
12875        {
12876          "vuid": "VUID-vkDestroySampler-sampler-01083",
12877          "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"
12878        },
12879        {
12880          "vuid": "VUID-vkDestroySampler-sampler-01084",
12881          "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>"
12882        },
12883        {
12884          "vuid": "VUID-vkDestroySampler-device-parameter",
12885          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
12886        },
12887        {
12888          "vuid": "VUID-vkDestroySampler-sampler-parameter",
12889          "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 <a href=\"#VkSampler\">VkSampler</a> handle"
12890        },
12891        {
12892          "vuid": "VUID-vkDestroySampler-pAllocator-parameter",
12893          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
12894        },
12895        {
12896          "vuid": "VUID-vkDestroySampler-sampler-parent",
12897          "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>"
12898        }
12899      ]
12900    },
12901    "VkSamplerYcbcrConversionInfo": {
12902      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
12903        {
12904          "vuid": "VUID-VkSamplerYcbcrConversionInfo-sType-sType",
12905          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO</code>"
12906        },
12907        {
12908          "vuid": "VUID-VkSamplerYcbcrConversionInfo-conversion-parameter",
12909          "text": " <code>conversion</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerYcbcrConversion\">VkSamplerYcbcrConversion</a> handle"
12910        }
12911      ]
12912    },
12913    "vkCreateSamplerYcbcrConversion": {
12914      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
12915        {
12916          "vuid": "VUID-vkCreateSamplerYcbcrConversion-None-01648",
12917          "text": " The <a href=\"#features-sampler-YCbCr-conversion\">sampler {YCbCr} conversion feature</a> <strong class=\"purple\">must</strong> be enabled"
12918        },
12919        {
12920          "vuid": "VUID-vkCreateSamplerYcbcrConversion-device-parameter",
12921          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
12922        },
12923        {
12924          "vuid": "VUID-vkCreateSamplerYcbcrConversion-pCreateInfo-parameter",
12925          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSamplerYcbcrConversionCreateInfo\">VkSamplerYcbcrConversionCreateInfo</a> structure"
12926        },
12927        {
12928          "vuid": "VUID-vkCreateSamplerYcbcrConversion-pAllocator-parameter",
12929          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
12930        },
12931        {
12932          "vuid": "VUID-vkCreateSamplerYcbcrConversion-pYcbcrConversion-parameter",
12933          "text": " <code>pYcbcrConversion</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSamplerYcbcrConversion\">VkSamplerYcbcrConversion</a> handle"
12934        }
12935      ]
12936    },
12937    "VkSamplerYcbcrConversionCreateInfo": {
12938      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
12939        {
12940          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-04060",
12941          "text": " <code>format</code> <strong class=\"purple\">must</strong> represent unsigned normalized values (i.e. the format must be a <code>UNORM</code> format)"
12942        }
12943      ],
12944      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
12945        {
12946          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01904",
12947          "text": " If an external format conversion is being created, <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>"
12948        },
12949        {
12950          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-04061",
12951          "text": " If an external format conversion is not being created, <code>format</code> <strong class=\"purple\">must</strong> represent unsigned normalized values (i.e. the format must be a <code>UNORM</code> format)"
12952        }
12953      ],
12954      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
12955        {
12956          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01650",
12957          "text": " The <a href=\"#potential-format-features\">potential format features</a> of the sampler {YCbCr} conversion <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>"
12958        },
12959        {
12960          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01651",
12961          "text": " If the <a href=\"#potential-format-features\">potential format features</a> of the sampler {YCbCr} conversion do 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>"
12962        },
12963        {
12964          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01652",
12965          "text": " If the <a href=\"#potential-format-features\">potential format features</a> of the sampler {YCbCr} conversion do 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>"
12966        },
12967        {
12968          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02581",
12969          "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 the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a>"
12970        },
12971        {
12972          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02582",
12973          "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 the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a>, <code>VK_COMPONENT_SWIZZLE_ONE</code>, or <code>VK_COMPONENT_SWIZZLE_ZERO</code>"
12974        },
12975        {
12976          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02583",
12977          "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 the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a> or <code>VK_COMPONENT_SWIZZLE_B</code>"
12978        },
12979        {
12980          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02584",
12981          "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 the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a> or <code>VK_COMPONENT_SWIZZLE_R</code>"
12982        },
12983        {
12984          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02585",
12985          "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 the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a>, both values <strong class=\"purple\">must</strong> be the identity swizzle"
12986        },
12987        {
12988          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrModel-01655",
12989          "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>"
12990        },
12991        {
12992          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrRange-02748",
12993          "text": " If <code>ycbcrRange</code> is <code>VK_SAMPLER_YCBCR_RANGE_ITU_NARROW</code> then the R, G and B channels obtained by applying the <code>component</code> swizzle to <code>format</code> <strong class=\"purple\">must</strong> each have a bit-depth greater than or equal to 8"
12994        },
12995        {
12996          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-forceExplicitReconstruction-01656",
12997          "text": " If the <a href=\"#potential-format-features\">potential format features</a> of the sampler {YCbCr} conversion do 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 <code>VK_FALSE</code>"
12998        },
12999        {
13000          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-01657",
13001          "text": " If the <a href=\"#potential-format-features\">potential format features</a> of the sampler {YCbCr} conversion do not support <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT</code>, <code>chromaFilter</code> <strong class=\"purple\">must</strong> not be <code>VK_FILTER_LINEAR</code>"
13002        },
13003        {
13004          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-sType-sType",
13005          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO</code>"
13006        },
13007        {
13008          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-pNext-pNext",
13009          "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>"
13010        },
13011        {
13012          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-sType-unique",
13013          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
13014        },
13015        {
13016          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-parameter",
13017          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
13018        },
13019        {
13020          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrModel-parameter",
13021          "text": " <code>ycbcrModel</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerYcbcrModelConversion\">VkSamplerYcbcrModelConversion</a> value"
13022        },
13023        {
13024          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrRange-parameter",
13025          "text": " <code>ycbcrRange</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerYcbcrRange\">VkSamplerYcbcrRange</a> value"
13026        },
13027        {
13028          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-parameter",
13029          "text": " <code>components</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentMapping\">VkComponentMapping</a> structure"
13030        },
13031        {
13032          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-parameter",
13033          "text": " <code>xChromaOffset</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkChromaLocation\">VkChromaLocation</a> value"
13034        },
13035        {
13036          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-yChromaOffset-parameter",
13037          "text": " <code>yChromaOffset</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkChromaLocation\">VkChromaLocation</a> value"
13038        },
13039        {
13040          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-parameter",
13041          "text": " <code>chromaFilter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value"
13042        }
13043      ]
13044    },
13045    "vkDestroySamplerYcbcrConversion": {
13046      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
13047        {
13048          "vuid": "VUID-vkDestroySamplerYcbcrConversion-device-parameter",
13049          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
13050        },
13051        {
13052          "vuid": "VUID-vkDestroySamplerYcbcrConversion-ycbcrConversion-parameter",
13053          "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 <a href=\"#VkSamplerYcbcrConversion\">VkSamplerYcbcrConversion</a> handle"
13054        },
13055        {
13056          "vuid": "VUID-vkDestroySamplerYcbcrConversion-pAllocator-parameter",
13057          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
13058        },
13059        {
13060          "vuid": "VUID-vkDestroySamplerYcbcrConversion-ycbcrConversion-parent",
13061          "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>"
13062        }
13063      ]
13064    },
13065    "VkSamplerCustomBorderColorCreateInfoEXT": {
13066      "(VK_EXT_custom_border_color)": [
13067        {
13068          "vuid": "VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-04013",
13069          "text": " If provided <code>format</code> is not <code>VK_FORMAT_UNDEFINED</code> then the <a href=\"#VkSamplerCreateInfo\">VkSamplerCreateInfo</a>::<code>borderColor</code> type <strong class=\"purple\">must</strong> match the sampled type of the provided <code>format</code>, as shown in the <em>SPIR-V Sampled Type</em> column of the <a href=\"#formats-numericformat\">Interpretation of Numeric Format</a> table"
13070        },
13071        {
13072          "vuid": "VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-04014",
13073          "text": " If the <a href=\"#features-customBorderColorWithoutFormat\">customBorderColorWithoutFormat</a> feature is not enabled then <code>format</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>"
13074        },
13075        {
13076          "vuid": "VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-04015",
13077          "text": " If the sampler is used to sample an image view of <code>VK_FORMAT_B4G4R4A4_UNORM_PACK16</code>, <code>VK_FORMAT_B5G6R5_UNORM_PACK16</code>, or <code>VK_FORMAT_B5G5R5A1_UNORM_PACK16</code> format then <code>format</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>"
13078        },
13079        {
13080          "vuid": "VUID-VkSamplerCustomBorderColorCreateInfoEXT-sType-sType",
13081          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT</code>"
13082        },
13083        {
13084          "vuid": "VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-parameter",
13085          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
13086        }
13087      ]
13088    },
13089    "vkCreateDescriptorSetLayout": {
13090      "core": [
13091        {
13092          "vuid": "VUID-vkCreateDescriptorSetLayout-device-parameter",
13093          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
13094        },
13095        {
13096          "vuid": "VUID-vkCreateDescriptorSetLayout-pCreateInfo-parameter",
13097          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a> structure"
13098        },
13099        {
13100          "vuid": "VUID-vkCreateDescriptorSetLayout-pAllocator-parameter",
13101          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
13102        },
13103        {
13104          "vuid": "VUID-vkCreateDescriptorSetLayout-pSetLayout-parameter",
13105          "text": " <code>pSetLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> handle"
13106        }
13107      ]
13108    },
13109    "VkDescriptorSetLayoutCreateInfo": {
13110      "core": [
13111        {
13112          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-binding-00279",
13113          "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"
13114        },
13115        {
13116          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-sType-sType",
13117          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO</code>"
13118        },
13119        {
13120          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-pNext-pNext",
13121          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDescriptorSetLayoutBindingFlagsCreateInfo\">VkDescriptorSetLayoutBindingFlagsCreateInfo</a>"
13122        },
13123        {
13124          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-sType-unique",
13125          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
13126        },
13127        {
13128          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-parameter",
13129          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDescriptorSetLayoutCreateFlagBits\">VkDescriptorSetLayoutCreateFlagBits</a> values"
13130        },
13131        {
13132          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-pBindings-parameter",
13133          "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 <a href=\"#VkDescriptorSetLayoutBinding\">VkDescriptorSetLayoutBinding</a> structures"
13134        }
13135      ],
13136      "(VK_KHR_push_descriptor)": [
13137        {
13138          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-00280",
13139          "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>"
13140        },
13141        {
13142          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-00281",
13143          "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>"
13144        }
13145      ],
13146      "(VK_KHR_push_descriptor)+(VK_EXT_inline_uniform_block)": [
13147        {
13148          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-02208",
13149          "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>"
13150        }
13151      ],
13152      "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
13153        {
13154          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-03000",
13155          "text": " If any binding has the <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT</code> bit set, <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code>"
13156        },
13157        {
13158          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-descriptorType-03001",
13159          "text": " If any binding has the <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT</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>"
13160        }
13161      ]
13162    },
13163    "VkDescriptorSetLayoutBinding": {
13164      "core": [
13165        {
13166          "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-00282",
13167          "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"
13168        },
13169        {
13170          "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorCount-00283",
13171          "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"
13172        },
13173        {
13174          "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-01510",
13175          "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>"
13176        },
13177        {
13178          "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-parameter",
13179          "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
13180        }
13181      ],
13182      "(VK_EXT_inline_uniform_block)": [
13183        {
13184          "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-02209",
13185          "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>"
13186        },
13187        {
13188          "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-02210",
13189          "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>"
13190        }
13191      ],
13192      "(VK_EXT_custom_border_color)": [
13193        {
13194          "vuid": "VUID-VkDescriptorSetLayoutBinding-pImmutableSamplers-04009",
13195          "text": " The sampler objects indicated by <code>pImmutableSamplers</code> <strong class=\"purple\">must</strong> not have a <code>borderColor</code> with one of the values <code>VK_BORDER_COLOR_FLOAT_CUSTOM_EXT</code> or <code>VK_BORDER_COLOR_INT_CUSTOM_EXT</code>"
13196        }
13197      ]
13198    },
13199    "VkDescriptorSetLayoutBindingFlagsCreateInfo": {
13200      "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
13201        {
13202          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-bindingCount-03002",
13203          "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>"
13204        },
13205        {
13206          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-pBindingFlags-03004",
13207          "text": " If an element of <code>pBindingFlags</code> includes <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT</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>"
13208        },
13209        {
13210          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingUniformBufferUpdateAfterBind-03005",
13211          "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</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</code>"
13212        },
13213        {
13214          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingSampledImageUpdateAfterBind-03006",
13215          "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</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</code>"
13216        },
13217        {
13218          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingStorageImageUpdateAfterBind-03007",
13219          "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</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</code>"
13220        },
13221        {
13222          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingStorageBufferUpdateAfterBind-03008",
13223          "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</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</code>"
13224        },
13225        {
13226          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingUniformTexelBufferUpdateAfterBind-03009",
13227          "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</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</code>"
13228        },
13229        {
13230          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingStorageTexelBufferUpdateAfterBind-03010",
13231          "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</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</code>"
13232        },
13233        {
13234          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-None-03011",
13235          "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</code>"
13236        },
13237        {
13238          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingUpdateUnusedWhilePending-03012",
13239          "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</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</code>"
13240        },
13241        {
13242          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingPartiallyBound-03013",
13243          "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</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</code>"
13244        },
13245        {
13246          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingVariableDescriptorCount-03014",
13247          "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</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</code>"
13248        },
13249        {
13250          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-pBindingFlags-03015",
13251          "text": " If an element of <code>pBindingFlags</code> includes <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT</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>"
13252        },
13253        {
13254          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-sType-sType",
13255          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO</code>"
13256        },
13257        {
13258          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-pBindingFlags-parameter",
13259          "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=\"#VkDescriptorBindingFlagBits\">VkDescriptorBindingFlagBits</a> values"
13260        }
13261      ],
13262      "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+(VK_KHR_push_descriptor)": [
13263        {
13264          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-flags-03003",
13265          "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</code>, <code>VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT</code>, or <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT</code>"
13266        }
13267      ],
13268      "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+(VK_EXT_inline_uniform_block)": [
13269        {
13270          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingInlineUniformBlockUpdateAfterBind-02211",
13271          "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</code>"
13272        }
13273      ]
13274    },
13275    "vkGetDescriptorSetLayoutSupport": {
13276      "(VK_VERSION_1_1,VK_KHR_maintenance3)": [
13277        {
13278          "vuid": "VUID-vkGetDescriptorSetLayoutSupport-device-parameter",
13279          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
13280        },
13281        {
13282          "vuid": "VUID-vkGetDescriptorSetLayoutSupport-pCreateInfo-parameter",
13283          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a> structure"
13284        },
13285        {
13286          "vuid": "VUID-vkGetDescriptorSetLayoutSupport-pSupport-parameter",
13287          "text": " <code>pSupport</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDescriptorSetLayoutSupport\">VkDescriptorSetLayoutSupport</a> structure"
13288        }
13289      ]
13290    },
13291    "VkDescriptorSetLayoutSupport": {
13292      "(VK_VERSION_1_1,VK_KHR_maintenance3)": [
13293        {
13294          "vuid": "VUID-VkDescriptorSetLayoutSupport-sType-sType",
13295          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT</code>"
13296        },
13297        {
13298          "vuid": "VUID-VkDescriptorSetLayoutSupport-pNext-pNext",
13299          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDescriptorSetVariableDescriptorCountLayoutSupport\">VkDescriptorSetVariableDescriptorCountLayoutSupport</a>"
13300        },
13301        {
13302          "vuid": "VUID-VkDescriptorSetLayoutSupport-sType-unique",
13303          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
13304        }
13305      ]
13306    },
13307    "VkDescriptorSetVariableDescriptorCountLayoutSupport": {
13308      "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
13309        {
13310          "vuid": "VUID-VkDescriptorSetVariableDescriptorCountLayoutSupport-sType-sType",
13311          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT</code>"
13312        }
13313      ]
13314    },
13315    "vkDestroyDescriptorSetLayout": {
13316      "core": [
13317        {
13318          "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-00284",
13319          "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"
13320        },
13321        {
13322          "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-00285",
13323          "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>"
13324        },
13325        {
13326          "vuid": "VUID-vkDestroyDescriptorSetLayout-device-parameter",
13327          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
13328        },
13329        {
13330          "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-parameter",
13331          "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 <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> handle"
13332        },
13333        {
13334          "vuid": "VUID-vkDestroyDescriptorSetLayout-pAllocator-parameter",
13335          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
13336        },
13337        {
13338          "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-parent",
13339          "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>"
13340        }
13341      ]
13342    },
13343    "vkCreatePipelineLayout": {
13344      "core": [
13345        {
13346          "vuid": "VUID-vkCreatePipelineLayout-device-parameter",
13347          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
13348        },
13349        {
13350          "vuid": "VUID-vkCreatePipelineLayout-pCreateInfo-parameter",
13351          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a> structure"
13352        },
13353        {
13354          "vuid": "VUID-vkCreatePipelineLayout-pAllocator-parameter",
13355          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
13356        },
13357        {
13358          "vuid": "VUID-vkCreatePipelineLayout-pPipelineLayout-parameter",
13359          "text": " <code>pPipelineLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle"
13360        }
13361      ]
13362    },
13363    "VkPipelineLayoutCreateInfo": {
13364      "core": [
13365        {
13366          "vuid": "VUID-VkPipelineLayoutCreateInfo-setLayoutCount-00286",
13367          "text": " <code>setLayoutCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxBoundDescriptorSets</code>"
13368        },
13369        {
13370          "vuid": "VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-00292",
13371          "text": " Any two elements of <code>pPushConstantRanges</code> <strong class=\"purple\">must</strong> not include the same stage in <code>stageFlags</code>"
13372        },
13373        {
13374          "vuid": "VUID-VkPipelineLayoutCreateInfo-sType-sType",
13375          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO</code>"
13376        },
13377        {
13378          "vuid": "VUID-VkPipelineLayoutCreateInfo-pNext-pNext",
13379          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
13380        },
13381        {
13382          "vuid": "VUID-VkPipelineLayoutCreateInfo-flags-zerobitmask",
13383          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
13384        },
13385        {
13386          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-parameter",
13387          "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 <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> handles"
13388        },
13389        {
13390          "vuid": "VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-parameter",
13391          "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 <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> structures"
13392        }
13393      ],
13394      "!(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
13395        {
13396          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00287",
13397          "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>"
13398        },
13399        {
13400          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00288",
13401          "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>"
13402        },
13403        {
13404          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00289",
13405          "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>"
13406        },
13407        {
13408          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00290",
13409          "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>"
13410        },
13411        {
13412          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00291",
13413          "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>"
13414        },
13415        {
13416          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01676",
13417          "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>"
13418        },
13419        {
13420          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01677",
13421          "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>"
13422        },
13423        {
13424          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01678",
13425          "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>"
13426        },
13427        {
13428          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01679",
13429          "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>"
13430        },
13431        {
13432          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01680",
13433          "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>"
13434        },
13435        {
13436          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01681",
13437          "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>"
13438        },
13439        {
13440          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01682",
13441          "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>"
13442        },
13443        {
13444          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01683",
13445          "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>"
13446        },
13447        {
13448          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01684",
13449          "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>"
13450        }
13451      ],
13452      "!(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+(VK_EXT_inline_uniform_block)": [
13453        {
13454          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02212",
13455          "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>"
13456        },
13457        {
13458          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02213",
13459          "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>"
13460        }
13461      ],
13462      "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
13463        {
13464          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03016",
13465          "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</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>"
13466        },
13467        {
13468          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03017",
13469          "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</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>"
13470        },
13471        {
13472          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03018",
13473          "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</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>"
13474        },
13475        {
13476          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03019",
13477          "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</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>"
13478        },
13479        {
13480          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03020",
13481          "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</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>"
13482        },
13483        {
13484          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03021",
13485          "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</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>"
13486        },
13487        {
13488          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03022",
13489          "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>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxPerStageDescriptorUpdateAfterBindSamplers</code>"
13490        },
13491        {
13492          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03023",
13493          "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>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxPerStageDescriptorUpdateAfterBindUniformBuffers</code>"
13494        },
13495        {
13496          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03024",
13497          "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>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxPerStageDescriptorUpdateAfterBindStorageBuffers</code>"
13498        },
13499        {
13500          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03025",
13501          "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>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxPerStageDescriptorUpdateAfterBindSampledImages</code>"
13502        },
13503        {
13504          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03026",
13505          "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>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxPerStageDescriptorUpdateAfterBindStorageImages</code>"
13506        },
13507        {
13508          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03027",
13509          "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>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxPerStageDescriptorUpdateAfterBindInputAttachments</code>"
13510        },
13511        {
13512          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03028",
13513          "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</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>"
13514        },
13515        {
13516          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03029",
13517          "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</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>"
13518        },
13519        {
13520          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03030",
13521          "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</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>"
13522        },
13523        {
13524          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03031",
13525          "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</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>"
13526        },
13527        {
13528          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03032",
13529          "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</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>"
13530        },
13531        {
13532          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03033",
13533          "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</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>"
13534        },
13535        {
13536          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03034",
13537          "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</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>"
13538        },
13539        {
13540          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03035",
13541          "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</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>"
13542        },
13543        {
13544          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03036",
13545          "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>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxDescriptorSetUpdateAfterBindSamplers</code>"
13546        },
13547        {
13548          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03037",
13549          "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>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxDescriptorSetUpdateAfterBindUniformBuffers</code>"
13550        },
13551        {
13552          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03038",
13553          "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>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxDescriptorSetUpdateAfterBindUniformBuffersDynamic</code>"
13554        },
13555        {
13556          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03039",
13557          "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>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxDescriptorSetUpdateAfterBindStorageBuffers</code>"
13558        },
13559        {
13560          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03040",
13561          "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>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxDescriptorSetUpdateAfterBindStorageBuffersDynamic</code>"
13562        },
13563        {
13564          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03041",
13565          "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>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxDescriptorSetUpdateAfterBindSampledImages</code>"
13566        },
13567        {
13568          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03042",
13569          "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>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxDescriptorSetUpdateAfterBindStorageImages</code>"
13570        },
13571        {
13572          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03043",
13573          "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>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxDescriptorSetUpdateAfterBindInputAttachments</code>"
13574        }
13575      ],
13576      "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+(VK_EXT_inline_uniform_block)": [
13577        {
13578          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02214",
13579          "text": " The total number of bindings in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</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>"
13580        },
13581        {
13582          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02215",
13583          "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>"
13584        },
13585        {
13586          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02216",
13587          "text": " The total number of bindings in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</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>"
13588        },
13589        {
13590          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02217",
13591          "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>"
13592        }
13593      ],
13594      "(VK_KHR_push_descriptor)": [
13595        {
13596          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00293",
13597          "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"
13598        }
13599      ],
13600      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
13601        {
13602          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02381",
13603          "text": " The total number of bindings with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR</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>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>maxDescriptorSetAccelerationStructures</code>"
13604        }
13605      ]
13606    },
13607    "VkPushConstantRange": {
13608      "core": [
13609        {
13610          "vuid": "VUID-VkPushConstantRange-offset-00294",
13611          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code>"
13612        },
13613        {
13614          "vuid": "VUID-VkPushConstantRange-offset-00295",
13615          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
13616        },
13617        {
13618          "vuid": "VUID-VkPushConstantRange-size-00296",
13619          "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
13620        },
13621        {
13622          "vuid": "VUID-VkPushConstantRange-size-00297",
13623          "text": " <code>size</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
13624        },
13625        {
13626          "vuid": "VUID-VkPushConstantRange-size-00298",
13627          "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>"
13628        },
13629        {
13630          "vuid": "VUID-VkPushConstantRange-stageFlags-parameter",
13631          "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values"
13632        },
13633        {
13634          "vuid": "VUID-VkPushConstantRange-stageFlags-requiredbitmask",
13635          "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
13636        }
13637      ]
13638    },
13639    "vkDestroyPipelineLayout": {
13640      "core": [
13641        {
13642          "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-00299",
13643          "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"
13644        },
13645        {
13646          "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-00300",
13647          "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>"
13648        },
13649        {
13650          "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-02004",
13651          "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"
13652        },
13653        {
13654          "vuid": "VUID-vkDestroyPipelineLayout-device-parameter",
13655          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
13656        },
13657        {
13658          "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-parameter",
13659          "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 <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle"
13660        },
13661        {
13662          "vuid": "VUID-vkDestroyPipelineLayout-pAllocator-parameter",
13663          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
13664        },
13665        {
13666          "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-parent",
13667          "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>"
13668        }
13669      ]
13670    },
13671    "vkCreateDescriptorPool": {
13672      "core": [
13673        {
13674          "vuid": "VUID-vkCreateDescriptorPool-device-parameter",
13675          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
13676        },
13677        {
13678          "vuid": "VUID-vkCreateDescriptorPool-pCreateInfo-parameter",
13679          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorPoolCreateInfo\">VkDescriptorPoolCreateInfo</a> structure"
13680        },
13681        {
13682          "vuid": "VUID-vkCreateDescriptorPool-pAllocator-parameter",
13683          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
13684        },
13685        {
13686          "vuid": "VUID-vkCreateDescriptorPool-pDescriptorPool-parameter",
13687          "text": " <code>pDescriptorPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDescriptorPool\">VkDescriptorPool</a> handle"
13688        }
13689      ]
13690    },
13691    "VkDescriptorPoolCreateInfo": {
13692      "core": [
13693        {
13694          "vuid": "VUID-VkDescriptorPoolCreateInfo-maxSets-00301",
13695          "text": " <code>maxSets</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
13696        },
13697        {
13698          "vuid": "VUID-VkDescriptorPoolCreateInfo-sType-sType",
13699          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO</code>"
13700        },
13701        {
13702          "vuid": "VUID-VkDescriptorPoolCreateInfo-pNext-pNext",
13703          "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>"
13704        },
13705        {
13706          "vuid": "VUID-VkDescriptorPoolCreateInfo-sType-unique",
13707          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
13708        },
13709        {
13710          "vuid": "VUID-VkDescriptorPoolCreateInfo-flags-parameter",
13711          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDescriptorPoolCreateFlagBits\">VkDescriptorPoolCreateFlagBits</a> values"
13712        },
13713        {
13714          "vuid": "VUID-VkDescriptorPoolCreateInfo-pPoolSizes-parameter",
13715          "text": " <code>pPoolSizes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>poolSizeCount</code> valid <a href=\"#VkDescriptorPoolSize\">VkDescriptorPoolSize</a> structures"
13716        },
13717        {
13718          "vuid": "VUID-VkDescriptorPoolCreateInfo-poolSizeCount-arraylength",
13719          "text": " <code>poolSizeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
13720        }
13721      ]
13722    },
13723    "VkDescriptorPoolInlineUniformBlockCreateInfoEXT": {
13724      "(VK_EXT_inline_uniform_block)": [
13725        {
13726          "vuid": "VUID-VkDescriptorPoolInlineUniformBlockCreateInfoEXT-sType-sType",
13727          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT</code>"
13728        }
13729      ]
13730    },
13731    "VkDescriptorPoolSize": {
13732      "core": [
13733        {
13734          "vuid": "VUID-VkDescriptorPoolSize-descriptorCount-00302",
13735          "text": " <code>descriptorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
13736        },
13737        {
13738          "vuid": "VUID-VkDescriptorPoolSize-type-parameter",
13739          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
13740        }
13741      ],
13742      "(VK_EXT_inline_uniform_block)": [
13743        {
13744          "vuid": "VUID-VkDescriptorPoolSize-type-02218",
13745          "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>"
13746        }
13747      ]
13748    },
13749    "vkDestroyDescriptorPool": {
13750      "core": [
13751        {
13752          "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00303",
13753          "text": " All submitted commands that refer to <code>descriptorPool</code> (via any allocated descriptor sets) <strong class=\"purple\">must</strong> have completed execution"
13754        },
13755        {
13756          "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00304",
13757          "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"
13758        },
13759        {
13760          "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00305",
13761          "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>"
13762        },
13763        {
13764          "vuid": "VUID-vkDestroyDescriptorPool-device-parameter",
13765          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
13766        },
13767        {
13768          "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-parameter",
13769          "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 <a href=\"#VkDescriptorPool\">VkDescriptorPool</a> handle"
13770        },
13771        {
13772          "vuid": "VUID-vkDestroyDescriptorPool-pAllocator-parameter",
13773          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
13774        },
13775        {
13776          "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-parent",
13777          "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>"
13778        }
13779      ]
13780    },
13781    "vkAllocateDescriptorSets": {
13782      "core": [
13783        {
13784          "vuid": "VUID-vkAllocateDescriptorSets-device-parameter",
13785          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
13786        },
13787        {
13788          "vuid": "VUID-vkAllocateDescriptorSets-pAllocateInfo-parameter",
13789          "text": " <code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorSetAllocateInfo\">VkDescriptorSetAllocateInfo</a> structure"
13790        },
13791        {
13792          "vuid": "VUID-vkAllocateDescriptorSets-pDescriptorSets-parameter",
13793          "text": " <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pAllocateInfo-&gt;descriptorSetCount</code> <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handles"
13794        },
13795        {
13796          "vuid": "VUID-vkAllocateDescriptorSets-pAllocateInfo::descriptorSetCount-arraylength",
13797          "text": " The value referenced by <code>pAllocateInfo-&gt;descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
13798        }
13799      ]
13800    },
13801    "VkDescriptorSetAllocateInfo": {
13802      "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
13803        {
13804          "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorSetCount-00306",
13805          "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>"
13806        },
13807        {
13808          "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorPool-00307",
13809          "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have enough free descriptor capacity remaining to allocate the descriptor sets of the specified layouts"
13810        }
13811      ],
13812      "(VK_KHR_push_descriptor)": [
13813        {
13814          "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-00308",
13815          "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"
13816        }
13817      ],
13818      "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
13819        {
13820          "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-03044",
13821          "text": " If any element of <code>pSetLayouts</code> was created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</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</code> flag set"
13822        }
13823      ],
13824      "core": [
13825        {
13826          "vuid": "VUID-VkDescriptorSetAllocateInfo-sType-sType",
13827          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO</code>"
13828        },
13829        {
13830          "vuid": "VUID-VkDescriptorSetAllocateInfo-pNext-pNext",
13831          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDescriptorSetVariableDescriptorCountAllocateInfo\">VkDescriptorSetVariableDescriptorCountAllocateInfo</a>"
13832        },
13833        {
13834          "vuid": "VUID-VkDescriptorSetAllocateInfo-sType-unique",
13835          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
13836        },
13837        {
13838          "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorPool-parameter",
13839          "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorPool\">VkDescriptorPool</a> handle"
13840        },
13841        {
13842          "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-parameter",
13843          "text": " <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorSetCount</code> valid <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> handles"
13844        },
13845        {
13846          "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorSetCount-arraylength",
13847          "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
13848        },
13849        {
13850          "vuid": "VUID-VkDescriptorSetAllocateInfo-commonparent",
13851          "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 <a href=\"#VkDevice\">VkDevice</a>"
13852        }
13853      ]
13854    },
13855    "VkDescriptorSetVariableDescriptorCountAllocateInfo": {
13856      "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
13857        {
13858          "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfo-descriptorSetCount-03045",
13859          "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>"
13860        },
13861        {
13862          "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfo-pSetLayouts-03046",
13863          "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"
13864        },
13865        {
13866          "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfo-sType-sType",
13867          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO</code>"
13868        },
13869        {
13870          "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfo-pDescriptorCounts-parameter",
13871          "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"
13872        }
13873      ]
13874    },
13875    "vkFreeDescriptorSets": {
13876      "core": [
13877        {
13878          "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00309",
13879          "text": " All submitted commands that refer to any element of <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have completed execution"
13880        },
13881        {
13882          "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00310",
13883          "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>"
13884        },
13885        {
13886          "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00311",
13887          "text": " Each valid handle in <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have been allocated from <code>descriptorPool</code>"
13888        },
13889        {
13890          "vuid": "VUID-vkFreeDescriptorSets-descriptorPool-00312",
13891          "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"
13892        },
13893        {
13894          "vuid": "VUID-vkFreeDescriptorSets-device-parameter",
13895          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
13896        },
13897        {
13898          "vuid": "VUID-vkFreeDescriptorSets-descriptorPool-parameter",
13899          "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorPool\">VkDescriptorPool</a> handle"
13900        },
13901        {
13902          "vuid": "VUID-vkFreeDescriptorSets-descriptorSetCount-arraylength",
13903          "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
13904        },
13905        {
13906          "vuid": "VUID-vkFreeDescriptorSets-descriptorPool-parent",
13907          "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
13908        },
13909        {
13910          "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-parent",
13911          "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>"
13912        }
13913      ]
13914    },
13915    "vkResetDescriptorPool": {
13916      "core": [
13917        {
13918          "vuid": "VUID-vkResetDescriptorPool-descriptorPool-00313",
13919          "text": " All uses of <code>descriptorPool</code> (via any allocated descriptor sets) <strong class=\"purple\">must</strong> have completed execution"
13920        },
13921        {
13922          "vuid": "VUID-vkResetDescriptorPool-device-parameter",
13923          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
13924        },
13925        {
13926          "vuid": "VUID-vkResetDescriptorPool-descriptorPool-parameter",
13927          "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorPool\">VkDescriptorPool</a> handle"
13928        },
13929        {
13930          "vuid": "VUID-vkResetDescriptorPool-flags-zerobitmask",
13931          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
13932        },
13933        {
13934          "vuid": "VUID-vkResetDescriptorPool-descriptorPool-parent",
13935          "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
13936        }
13937      ]
13938    },
13939    "vkUpdateDescriptorSets": {
13940      "!(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
13941        {
13942          "vuid": "VUID-vkUpdateDescriptorSets-dstSet-00314",
13943          "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>"
13944        }
13945      ],
13946      "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
13947        {
13948          "vuid": "VUID-vkUpdateDescriptorSets-None-03047",
13949          "text": " Descriptor bindings updated by this command which were created without the <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT</code> or <code>VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT</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>"
13950        }
13951      ],
13952      "core": [
13953        {
13954          "vuid": "VUID-vkUpdateDescriptorSets-device-parameter",
13955          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
13956        },
13957        {
13958          "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-parameter",
13959          "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 <a href=\"#VkWriteDescriptorSet\">VkWriteDescriptorSet</a> structures"
13960        },
13961        {
13962          "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorCopies-parameter",
13963          "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 <a href=\"#VkCopyDescriptorSet\">VkCopyDescriptorSet</a> structures"
13964        }
13965      ]
13966    },
13967    "VkWriteDescriptorSet": {
13968      "core": [
13969        {
13970          "vuid": "VUID-VkWriteDescriptorSet-dstBinding-00315",
13971          "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"
13972        },
13973        {
13974          "vuid": "VUID-VkWriteDescriptorSet-dstBinding-00316",
13975          "text": " <code>dstBinding</code> <strong class=\"purple\">must</strong> be a binding with a non-zero <code>descriptorCount</code>"
13976        },
13977        {
13978          "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-00317",
13979          "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>"
13980        },
13981        {
13982          "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-00318",
13983          "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"
13984        },
13985        {
13986          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00319",
13987          "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> match the type of <code>dstBinding</code> within <code>dstSet</code>"
13988        },
13989        {
13990          "vuid": "VUID-VkWriteDescriptorSet-dstSet-00320",
13991          "text": " <code>dstSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handle"
13992        },
13993        {
13994          "vuid": "VUID-VkWriteDescriptorSet-dstArrayElement-00321",
13995          "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>"
13996        },
13997        {
13998          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00322",
13999          "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"
14000        },
14001        {
14002          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02994",
14003          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code>, each element of <code>pTexelBufferView</code> <strong class=\"purple\">must</strong> be either a valid <code>VkBufferView</code> handle or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
14004        },
14005        {
14006          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02995",
14007          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> and the <a href=\"#features-nullDescriptor\">nullDescriptor</a> feature is not enabled, each element of <code>pTexelBufferView</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
14008        },
14009        {
14010          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00324",
14011          "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"
14012        },
14013        {
14014          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00325",
14015          "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"
14016        },
14017        {
14018          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02996",
14019          "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> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be either a valid <code>VkImageView</code> handle or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
14020        },
14021        {
14022          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02997",
14023          "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> and the <a href=\"#features-nullDescriptor\">nullDescriptor</a> feature is not enabled, the <code>imageView</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
14024        },
14025        {
14026          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01402",
14027          "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>"
14028        },
14029        {
14030          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00327",
14031          "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>"
14032        },
14033        {
14034          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00328",
14035          "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>"
14036        },
14037        {
14038          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00329",
14039          "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"
14040        },
14041        {
14042          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00330",
14043          "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"
14044        },
14045        {
14046          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00331",
14047          "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"
14048        },
14049        {
14050          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00332",
14051          "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>"
14052        },
14053        {
14054          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00333",
14055          "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>"
14056        },
14057        {
14058          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00334",
14059          "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"
14060        },
14061        {
14062          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00335",
14063          "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"
14064        },
14065        {
14066          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00336",
14067          "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"
14068        },
14069        {
14070          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00337",
14071          "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"
14072        },
14073        {
14074          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01403",
14075          "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"
14076        },
14077        {
14078          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00338",
14079          "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"
14080        },
14081        {
14082          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00339",
14083          "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"
14084        },
14085        {
14086          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02752",
14087          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLER</code>, then <code>dstSet</code> <strong class=\"purple\">must</strong> not have been allocated with a layout that included immutable samplers for <code>dstBinding</code>"
14088        },
14089        {
14090          "vuid": "VUID-VkWriteDescriptorSet-sType-sType",
14091          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET</code>"
14092        },
14093        {
14094          "vuid": "VUID-VkWriteDescriptorSet-pNext-pNext",
14095          "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=\"#VkWriteDescriptorSetAccelerationStructureKHR\">VkWriteDescriptorSetAccelerationStructureKHR</a> or <a href=\"#VkWriteDescriptorSetInlineUniformBlockEXT\">VkWriteDescriptorSetInlineUniformBlockEXT</a>"
14096        },
14097        {
14098          "vuid": "VUID-VkWriteDescriptorSet-sType-unique",
14099          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
14100        },
14101        {
14102          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-parameter",
14103          "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
14104        },
14105        {
14106          "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-arraylength",
14107          "text": " <code>descriptorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
14108        },
14109        {
14110          "vuid": "VUID-VkWriteDescriptorSet-commonparent",
14111          "text": " Both of <code>dstSet</code>, and the elements of <code>pTexelBufferView</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
14112        }
14113      ],
14114      "(VK_EXT_inline_uniform_block)": [
14115        {
14116          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02219",
14117          "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>"
14118        },
14119        {
14120          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02220",
14121          "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>"
14122        },
14123        {
14124          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02221",
14125          "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>"
14126        }
14127      ],
14128      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
14129        {
14130          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02382",
14131          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkWriteDescriptorSetAccelerationStructureKHR\">VkWriteDescriptorSetAccelerationStructureKHR</a> structure whose <code>accelerationStructureCount</code> member equals <code>descriptorCount</code>"
14132        }
14133      ],
14134      "(VK_VULKAN_1_1,VK_KHR_sampler_ycbcr_conversion)": [
14135        {
14136          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01946",
14137          "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"
14138        },
14139        {
14140          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02738",
14141          "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>, and the corresponding immutable sampler <strong class=\"purple\">must</strong> have been created with an <em>identically defined</em> <code>VkSamplerYcbcrConversionInfo</code> object"
14142        },
14143        {
14144          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01948",
14145          "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 {YCbCr} 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"
14146        }
14147      ],
14148      "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
14149        {
14150          "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-03048",
14151          "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=\"#VkDescriptorBindingFlagBits\">VkDescriptorBindingFlagBits</a>"
14152        }
14153      ]
14154    },
14155    "VkDescriptorBufferInfo": {
14156      "core": [
14157        {
14158          "vuid": "VUID-VkDescriptorBufferInfo-offset-00340",
14159          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
14160        },
14161        {
14162          "vuid": "VUID-VkDescriptorBufferInfo-range-00341",
14163          "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>"
14164        },
14165        {
14166          "vuid": "VUID-VkDescriptorBufferInfo-range-00342",
14167          "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>"
14168        },
14169        {
14170          "vuid": "VUID-VkDescriptorBufferInfo-buffer-02998",
14171          "text": " If the <a href=\"#features-nullDescriptor\">nullDescriptor</a> feature is not enabled, <code>buffer</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
14172        },
14173        {
14174          "vuid": "VUID-VkDescriptorBufferInfo-buffer-parameter",
14175          "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 <a href=\"#VkBuffer\">VkBuffer</a> handle"
14176        }
14177      ],
14178      "(VK_EXT_robustness2)": [
14179        {
14180          "vuid": "VUID-VkDescriptorBufferInfo-buffer-02999",
14181          "text": " If <code>buffer</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>offset</code> <strong class=\"purple\">must</strong> be zero and <code>range</code> <strong class=\"purple\">must</strong> be <code>VK_WHOLE_SIZE</code>"
14182        }
14183      ]
14184    },
14185    "VkDescriptorImageInfo": {
14186      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
14187        {
14188          "vuid": "VUID-VkDescriptorImageInfo-imageView-00343",
14189          "text": " <code>imageView</code> <strong class=\"purple\">must</strong> not be 2D or 2D array image view created from a 3D image"
14190        }
14191      ],
14192      "core": [
14193        {
14194          "vuid": "VUID-VkDescriptorImageInfo-imageView-01976",
14195          "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"
14196        },
14197        {
14198          "vuid": "VUID-VkDescriptorImageInfo-imageLayout-00344",
14199          "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>"
14200        },
14201        {
14202          "vuid": "VUID-VkDescriptorImageInfo-commonparent",
14203          "text": " Both of <code>imageView</code>, and <code>sampler</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
14204        }
14205      ],
14206      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
14207        {
14208          "vuid": "VUID-VkDescriptorImageInfo-sampler-01564",
14209          "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>"
14210        }
14211      ]
14212    },
14213    "VkWriteDescriptorSetInlineUniformBlockEXT": {
14214      "(VK_EXT_inline_uniform_block)": [
14215        {
14216          "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-dataSize-02222",
14217          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>"
14218        },
14219        {
14220          "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-sType-sType",
14221          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT</code>"
14222        },
14223        {
14224          "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-pData-parameter",
14225          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
14226        },
14227        {
14228          "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-dataSize-arraylength",
14229          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
14230        }
14231      ]
14232    },
14233    "VkWriteDescriptorSetAccelerationStructureKHR": {
14234      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
14235        {
14236          "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureKHR-accelerationStructureCount-02236",
14237          "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be equal to <code>descriptorCount</code> in the extended structure"
14238        },
14239        {
14240          "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-02764",
14241          "text": " Each acceleration structure in <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been created with <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code>"
14242        },
14243        {
14244          "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureKHR-sType-sType",
14245          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR</code>"
14246        },
14247        {
14248          "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-parameter",
14249          "text": " <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>accelerationStructureCount</code> valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handles"
14250        },
14251        {
14252          "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureKHR-accelerationStructureCount-arraylength",
14253          "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
14254        }
14255      ]
14256    },
14257    "VkCopyDescriptorSet": {
14258      "core": [
14259        {
14260          "vuid": "VUID-VkCopyDescriptorSet-srcBinding-00345",
14261          "text": " <code>srcBinding</code> <strong class=\"purple\">must</strong> be a valid binding within <code>srcSet</code>"
14262        },
14263        {
14264          "vuid": "VUID-VkCopyDescriptorSet-srcArrayElement-00346",
14265          "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>"
14266        },
14267        {
14268          "vuid": "VUID-VkCopyDescriptorSet-dstBinding-00347",
14269          "text": " <code>dstBinding</code> <strong class=\"purple\">must</strong> be a valid binding within <code>dstSet</code>"
14270        },
14271        {
14272          "vuid": "VUID-VkCopyDescriptorSet-dstArrayElement-00348",
14273          "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>"
14274        },
14275        {
14276          "vuid": "VUID-VkCopyDescriptorSet-dstBinding-02632",
14277          "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>"
14278        },
14279        {
14280          "vuid": "VUID-VkCopyDescriptorSet-srcSet-00349",
14281          "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>"
14282        },
14283        {
14284          "vuid": "VUID-VkCopyDescriptorSet-dstBinding-02753",
14285          "text": " If the descriptor type of the descriptor set binding specified by <code>dstBinding</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLER</code>, then <code>dstSet</code> <strong class=\"purple\">must</strong> not have been allocated with a layout that included immutable samplers for <code>dstBinding</code>"
14286        },
14287        {
14288          "vuid": "VUID-VkCopyDescriptorSet-sType-sType",
14289          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET</code>"
14290        },
14291        {
14292          "vuid": "VUID-VkCopyDescriptorSet-pNext-pNext",
14293          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
14294        },
14295        {
14296          "vuid": "VUID-VkCopyDescriptorSet-srcSet-parameter",
14297          "text": " <code>srcSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handle"
14298        },
14299        {
14300          "vuid": "VUID-VkCopyDescriptorSet-dstSet-parameter",
14301          "text": " <code>dstSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handle"
14302        },
14303        {
14304          "vuid": "VUID-VkCopyDescriptorSet-commonparent",
14305          "text": " Both of <code>dstSet</code>, and <code>srcSet</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
14306        }
14307      ],
14308      "(VK_EXT_inline_uniform_block)": [
14309        {
14310          "vuid": "VUID-VkCopyDescriptorSet-srcBinding-02223",
14311          "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>"
14312        },
14313        {
14314          "vuid": "VUID-VkCopyDescriptorSet-dstBinding-02224",
14315          "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>"
14316        },
14317        {
14318          "vuid": "VUID-VkCopyDescriptorSet-srcBinding-02225",
14319          "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>"
14320        }
14321      ],
14322      "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
14323        {
14324          "vuid": "VUID-VkCopyDescriptorSet-srcSet-01918",
14325          "text": " If <code>srcSet</code>&#8217;s layout was created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</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</code> flag set"
14326        },
14327        {
14328          "vuid": "VUID-VkCopyDescriptorSet-srcSet-01919",
14329          "text": " If <code>srcSet</code>&#8217;s layout was created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</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</code> flag set"
14330        },
14331        {
14332          "vuid": "VUID-VkCopyDescriptorSet-srcSet-01920",
14333          "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</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</code> flag set"
14334        },
14335        {
14336          "vuid": "VUID-VkCopyDescriptorSet-srcSet-01921",
14337          "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</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</code> flag set"
14338        }
14339      ]
14340    },
14341    "vkCreateDescriptorUpdateTemplate": {
14342      "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
14343        {
14344          "vuid": "VUID-vkCreateDescriptorUpdateTemplate-device-parameter",
14345          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
14346        },
14347        {
14348          "vuid": "VUID-vkCreateDescriptorUpdateTemplate-pCreateInfo-parameter",
14349          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorUpdateTemplateCreateInfo\">VkDescriptorUpdateTemplateCreateInfo</a> structure"
14350        },
14351        {
14352          "vuid": "VUID-vkCreateDescriptorUpdateTemplate-pAllocator-parameter",
14353          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
14354        },
14355        {
14356          "vuid": "VUID-vkCreateDescriptorUpdateTemplate-pDescriptorUpdateTemplate-parameter",
14357          "text": " <code>pDescriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDescriptorUpdateTemplate\">VkDescriptorUpdateTemplate</a> handle"
14358        }
14359      ]
14360    },
14361    "VkDescriptorUpdateTemplateCreateInfo": {
14362      "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
14363        {
14364          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00350",
14365          "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"
14366        },
14367        {
14368          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-sType-sType",
14369          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO</code>"
14370        },
14371        {
14372          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-pNext-pNext",
14373          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
14374        },
14375        {
14376          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-flags-zerobitmask",
14377          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
14378        },
14379        {
14380          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-pDescriptorUpdateEntries-parameter",
14381          "text": " <code>pDescriptorUpdateEntries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorUpdateEntryCount</code> valid <a href=\"#VkDescriptorUpdateTemplateEntry\">VkDescriptorUpdateTemplateEntry</a> structures"
14382        },
14383        {
14384          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-parameter",
14385          "text": " <code>templateType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorUpdateTemplateType\">VkDescriptorUpdateTemplateType</a> value"
14386        },
14387        {
14388          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-descriptorUpdateEntryCount-arraylength",
14389          "text": " <code>descriptorUpdateEntryCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
14390        },
14391        {
14392          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-commonparent",
14393          "text": " Both of <code>descriptorSetLayout</code>, and <code>pipelineLayout</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
14394        }
14395      ],
14396      "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+(VK_KHR_push_descriptor)": [
14397        {
14398          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00351",
14399          "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"
14400        },
14401        {
14402          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00352",
14403          "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"
14404        },
14405        {
14406          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00353",
14407          "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>"
14408        }
14409      ]
14410    },
14411    "VkDescriptorUpdateTemplateEntry": {
14412      "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
14413        {
14414          "vuid": "VUID-VkDescriptorUpdateTemplateEntry-dstBinding-00354",
14415          "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"
14416        },
14417        {
14418          "vuid": "VUID-VkDescriptorUpdateTemplateEntry-dstArrayElement-00355",
14419          "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>"
14420        },
14421        {
14422          "vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptorType-parameter",
14423          "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
14424        }
14425      ],
14426      "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+(VK_EXT_inline_uniform_block)": [
14427        {
14428          "vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptor-02226",
14429          "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>"
14430        },
14431        {
14432          "vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptor-02227",
14433          "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>"
14434        }
14435      ]
14436    },
14437    "vkDestroyDescriptorUpdateTemplate": {
14438      "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
14439        {
14440          "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00356",
14441          "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"
14442        },
14443        {
14444          "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00357",
14445          "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>"
14446        },
14447        {
14448          "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-device-parameter",
14449          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
14450        },
14451        {
14452          "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorUpdateTemplate-parameter",
14453          "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 <a href=\"#VkDescriptorUpdateTemplate\">VkDescriptorUpdateTemplate</a> handle"
14454        },
14455        {
14456          "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-pAllocator-parameter",
14457          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
14458        },
14459        {
14460          "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorUpdateTemplate-parent",
14461          "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>"
14462        }
14463      ]
14464    },
14465    "vkUpdateDescriptorSetWithTemplate": {
14466      "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
14467        {
14468          "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-pData-01685",
14469          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to a memory containing 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>"
14470        },
14471        {
14472          "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-device-parameter",
14473          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
14474        },
14475        {
14476          "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorSet-parameter",
14477          "text": " <code>descriptorSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handle"
14478        },
14479        {
14480          "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorUpdateTemplate-parameter",
14481          "text": " <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorUpdateTemplate\">VkDescriptorUpdateTemplate</a> handle"
14482        },
14483        {
14484          "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorUpdateTemplate-parent",
14485          "text": " <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
14486        }
14487      ]
14488    },
14489    "vkCmdBindDescriptorSets": {
14490      "core": [
14491        {
14492          "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-00358",
14493          "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>"
14494        },
14495        {
14496          "vuid": "VUID-vkCmdBindDescriptorSets-dynamicOffsetCount-00359",
14497          "text": " <code>dynamicOffsetCount</code> <strong class=\"purple\">must</strong> be equal to the total number of dynamic descriptors in <code>pDescriptorSets</code>"
14498        },
14499        {
14500          "vuid": "VUID-vkCmdBindDescriptorSets-firstSet-00360",
14501          "text": " The sum of <code>firstSet</code> and <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a>::<code>setLayoutCount</code> provided when <code>layout</code> was created"
14502        },
14503        {
14504          "vuid": "VUID-vkCmdBindDescriptorSets-pipelineBindPoint-00361",
14505          "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"
14506        },
14507        {
14508          "vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01971",
14509          "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>"
14510        },
14511        {
14512          "vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01972",
14513          "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>"
14514        },
14515        {
14516          "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-01979",
14517          "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"
14518        },
14519        {
14520          "vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-parameter",
14521          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
14522        },
14523        {
14524          "vuid": "VUID-vkCmdBindDescriptorSets-pipelineBindPoint-parameter",
14525          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
14526        },
14527        {
14528          "vuid": "VUID-vkCmdBindDescriptorSets-layout-parameter",
14529          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle"
14530        },
14531        {
14532          "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-parameter",
14533          "text": " <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorSetCount</code> valid <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handles"
14534        },
14535        {
14536          "vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-parameter",
14537          "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"
14538        },
14539        {
14540          "vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-recording",
14541          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
14542        },
14543        {
14544          "vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-cmdpool",
14545          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
14546        },
14547        {
14548          "vuid": "VUID-vkCmdBindDescriptorSets-descriptorSetCount-arraylength",
14549          "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
14550        },
14551        {
14552          "vuid": "VUID-vkCmdBindDescriptorSets-commonparent",
14553          "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 <a href=\"#VkDevice\">VkDevice</a>"
14554        }
14555      ]
14556    },
14557    "vkCmdPushDescriptorSetKHR": {
14558      "(VK_KHR_push_descriptor)": [
14559        {
14560          "vuid": "VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-00363",
14561          "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"
14562        },
14563        {
14564          "vuid": "VUID-vkCmdPushDescriptorSetKHR-set-00364",
14565          "text": " <code>set</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a>::<code>setLayoutCount</code> provided when <code>layout</code> was created"
14566        },
14567        {
14568          "vuid": "VUID-vkCmdPushDescriptorSetKHR-set-00365",
14569          "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>"
14570        },
14571        {
14572          "vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-parameter",
14573          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
14574        },
14575        {
14576          "vuid": "VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-parameter",
14577          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
14578        },
14579        {
14580          "vuid": "VUID-vkCmdPushDescriptorSetKHR-layout-parameter",
14581          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle"
14582        },
14583        {
14584          "vuid": "VUID-vkCmdPushDescriptorSetKHR-pDescriptorWrites-parameter",
14585          "text": " <code>pDescriptorWrites</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorWriteCount</code> valid <a href=\"#VkWriteDescriptorSet\">VkWriteDescriptorSet</a> structures"
14586        },
14587        {
14588          "vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-recording",
14589          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
14590        },
14591        {
14592          "vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-cmdpool",
14593          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
14594        },
14595        {
14596          "vuid": "VUID-vkCmdPushDescriptorSetKHR-descriptorWriteCount-arraylength",
14597          "text": " <code>descriptorWriteCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
14598        },
14599        {
14600          "vuid": "VUID-vkCmdPushDescriptorSetKHR-commonparent",
14601          "text": " Both of <code>commandBuffer</code>, and <code>layout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
14602        }
14603      ]
14604    },
14605    "vkCmdPushDescriptorSetWithTemplateKHR": {
14606      "(VK_KHR_push_descriptor)+(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
14607        {
14608          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-00366",
14609          "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"
14610        },
14611        {
14612          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-pData-01686",
14613          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to a memory containing 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>"
14614        },
14615        {
14616          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-parameter",
14617          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
14618        },
14619        {
14620          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-parameter",
14621          "text": " <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorUpdateTemplate\">VkDescriptorUpdateTemplate</a> handle"
14622        },
14623        {
14624          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-layout-parameter",
14625          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle"
14626        },
14627        {
14628          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-recording",
14629          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
14630        },
14631        {
14632          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-cmdpool",
14633          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
14634        },
14635        {
14636          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commonparent",
14637          "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 <a href=\"#VkDevice\">VkDevice</a>"
14638        }
14639      ]
14640    },
14641    "vkCmdPushConstants": {
14642      "core": [
14643        {
14644          "vuid": "VUID-vkCmdPushConstants-offset-01795",
14645          "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"
14646        },
14647        {
14648          "vuid": "VUID-vkCmdPushConstants-offset-01796",
14649          "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>"
14650        },
14651        {
14652          "vuid": "VUID-vkCmdPushConstants-offset-00368",
14653          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
14654        },
14655        {
14656          "vuid": "VUID-vkCmdPushConstants-size-00369",
14657          "text": " <code>size</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
14658        },
14659        {
14660          "vuid": "VUID-vkCmdPushConstants-offset-00370",
14661          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code>"
14662        },
14663        {
14664          "vuid": "VUID-vkCmdPushConstants-size-00371",
14665          "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>"
14666        },
14667        {
14668          "vuid": "VUID-vkCmdPushConstants-commandBuffer-parameter",
14669          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
14670        },
14671        {
14672          "vuid": "VUID-vkCmdPushConstants-layout-parameter",
14673          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle"
14674        },
14675        {
14676          "vuid": "VUID-vkCmdPushConstants-stageFlags-parameter",
14677          "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values"
14678        },
14679        {
14680          "vuid": "VUID-vkCmdPushConstants-stageFlags-requiredbitmask",
14681          "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
14682        },
14683        {
14684          "vuid": "VUID-vkCmdPushConstants-pValues-parameter",
14685          "text": " <code>pValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>size</code> bytes"
14686        },
14687        {
14688          "vuid": "VUID-vkCmdPushConstants-commandBuffer-recording",
14689          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
14690        },
14691        {
14692          "vuid": "VUID-vkCmdPushConstants-commandBuffer-cmdpool",
14693          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
14694        },
14695        {
14696          "vuid": "VUID-vkCmdPushConstants-size-arraylength",
14697          "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
14698        },
14699        {
14700          "vuid": "VUID-vkCmdPushConstants-commonparent",
14701          "text": " Both of <code>commandBuffer</code>, and <code>layout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
14702        }
14703      ]
14704    },
14705    "vkGetBufferDeviceAddress": {
14706      "(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)": [
14707        {
14708          "vuid": "VUID-vkGetBufferDeviceAddress-bufferDeviceAddress-03324",
14709          "text": " The <a href=\"#features-bufferDeviceAddress\">bufferDeviceAddress</a> or <a href=\"#features-bufferDeviceAddressEXT\"><code>VkPhysicalDeviceBufferDeviceAddressFeaturesEXT</code>::<code>bufferDeviceAddress</code></a> feature <strong class=\"purple\">must</strong> be enabled"
14710        },
14711        {
14712          "vuid": "VUID-vkGetBufferDeviceAddress-device-03325",
14713          "text": " If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\">bufferDeviceAddressMultiDevice</a> or <a href=\"#features-bufferDeviceAddressMultiDeviceEXT\"><code>VkPhysicalDeviceBufferDeviceAddressFeaturesEXT</code>::<code>bufferDeviceAddressMultiDevice</code></a> feature <strong class=\"purple\">must</strong> be enabled"
14714        },
14715        {
14716          "vuid": "VUID-vkGetBufferDeviceAddress-device-parameter",
14717          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
14718        },
14719        {
14720          "vuid": "VUID-vkGetBufferDeviceAddress-pInfo-parameter",
14721          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferDeviceAddressInfo\">VkBufferDeviceAddressInfo</a> structure"
14722        }
14723      ]
14724    },
14725    "VkBufferDeviceAddressInfo": {
14726      "(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)": [
14727        {
14728          "vuid": "VUID-VkBufferDeviceAddressInfo-buffer-02600",
14729          "text": " If <code>buffer</code> is non-sparse and was not created with the <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code> flag, then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
14730        },
14731        {
14732          "vuid": "VUID-VkBufferDeviceAddressInfo-buffer-02601",
14733          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT</code>"
14734        },
14735        {
14736          "vuid": "VUID-VkBufferDeviceAddressInfo-sType-sType",
14737          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO</code>"
14738        },
14739        {
14740          "vuid": "VUID-VkBufferDeviceAddressInfo-pNext-pNext",
14741          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
14742        },
14743        {
14744          "vuid": "VUID-VkBufferDeviceAddressInfo-buffer-parameter",
14745          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
14746        }
14747      ]
14748    },
14749    "vkGetBufferOpaqueCaptureAddress": {
14750      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
14751        {
14752          "vuid": "VUID-vkGetBufferOpaqueCaptureAddress-None-03326",
14753          "text": " The <a href=\"#features-bufferDeviceAddress\">bufferDeviceAddress</a> feature <strong class=\"purple\">must</strong> be enabled"
14754        },
14755        {
14756          "vuid": "VUID-vkGetBufferOpaqueCaptureAddress-device-03327",
14757          "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"
14758        },
14759        {
14760          "vuid": "VUID-vkGetBufferOpaqueCaptureAddress-device-parameter",
14761          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
14762        },
14763        {
14764          "vuid": "VUID-vkGetBufferOpaqueCaptureAddress-pInfo-parameter",
14765          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferDeviceAddressInfo\">VkBufferDeviceAddressInfo</a> structure"
14766        }
14767      ]
14768    },
14769    "vkCreateQueryPool": {
14770      "core": [
14771        {
14772          "vuid": "VUID-vkCreateQueryPool-device-parameter",
14773          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
14774        },
14775        {
14776          "vuid": "VUID-vkCreateQueryPool-pCreateInfo-parameter",
14777          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkQueryPoolCreateInfo\">VkQueryPoolCreateInfo</a> structure"
14778        },
14779        {
14780          "vuid": "VUID-vkCreateQueryPool-pAllocator-parameter",
14781          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
14782        },
14783        {
14784          "vuid": "VUID-vkCreateQueryPool-pQueryPool-parameter",
14785          "text": " <code>pQueryPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkQueryPool\">VkQueryPool</a> handle"
14786        }
14787      ]
14788    },
14789    "VkQueryPoolCreateInfo": {
14790      "core": [
14791        {
14792          "vuid": "VUID-VkQueryPoolCreateInfo-queryType-00791",
14793          "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>"
14794        },
14795        {
14796          "vuid": "VUID-VkQueryPoolCreateInfo-queryType-00792",
14797          "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"
14798        },
14799        {
14800          "vuid": "VUID-VkQueryPoolCreateInfo-queryCount-02763",
14801          "text": " <code>queryCount</code> <strong class=\"purple\">must</strong> be greater than 0"
14802        },
14803        {
14804          "vuid": "VUID-VkQueryPoolCreateInfo-sType-sType",
14805          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO</code>"
14806        },
14807        {
14808          "vuid": "VUID-VkQueryPoolCreateInfo-pNext-pNext",
14809          "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=\"#VkQueryPoolPerformanceCreateInfoKHR\">VkQueryPoolPerformanceCreateInfoKHR</a> or <a href=\"#VkQueryPoolPerformanceQueryCreateInfoINTEL\">VkQueryPoolPerformanceQueryCreateInfoINTEL</a>"
14810        },
14811        {
14812          "vuid": "VUID-VkQueryPoolCreateInfo-sType-unique",
14813          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
14814        },
14815        {
14816          "vuid": "VUID-VkQueryPoolCreateInfo-flags-zerobitmask",
14817          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
14818        },
14819        {
14820          "vuid": "VUID-VkQueryPoolCreateInfo-queryType-parameter",
14821          "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value"
14822        }
14823      ],
14824      "(VK_KHR_performance_query)": [
14825        {
14826          "vuid": "VUID-VkQueryPoolCreateInfo-queryType-03222",
14827          "text": " If <code>queryType</code> is <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a structure of type <a href=\"#VkQueryPoolPerformanceCreateInfoKHR\">VkQueryPoolPerformanceCreateInfoKHR</a>"
14828        }
14829      ]
14830    },
14831    "VkQueryPoolPerformanceCreateInfoKHR": {
14832      "(VK_KHR_performance_query)": [
14833        {
14834          "vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-queueFamilyIndex-03236",
14835          "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be a valid queue family index of the device"
14836        },
14837        {
14838          "vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-performanceCounterQueryPools-03237",
14839          "text": " The <a href=\"#features-features-performanceCounterQueryPools\"><code>performanceCounterQueryPools</code></a> feature <strong class=\"purple\">must</strong> be enabled"
14840        },
14841        {
14842          "vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-pCounterIndices-03321",
14843          "text": " Each element of <code>pCounterIndices</code> <strong class=\"purple\">must</strong> be in the range of counters reported by <code>vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR</code> for the queue family specified in <code>queueFamilyIndex</code>"
14844        },
14845        {
14846          "vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-sType-sType",
14847          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR</code>"
14848        },
14849        {
14850          "vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-pCounterIndices-parameter",
14851          "text": " <code>pCounterIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>counterIndexCount</code> <code>uint32_t</code> values"
14852        },
14853        {
14854          "vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-counterIndexCount-arraylength",
14855          "text": " <code>counterIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
14856        }
14857      ]
14858    },
14859    "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR": {
14860      "(VK_KHR_performance_query)": [
14861        {
14862          "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR-physicalDevice-parameter",
14863          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
14864        },
14865        {
14866          "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR-pPerformanceQueryCreateInfo-parameter",
14867          "text": " <code>pPerformanceQueryCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkQueryPoolPerformanceCreateInfoKHR\">VkQueryPoolPerformanceCreateInfoKHR</a> structure"
14868        },
14869        {
14870          "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR-pNumPasses-parameter",
14871          "text": " <code>pNumPasses</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
14872        }
14873      ]
14874    },
14875    "vkDestroyQueryPool": {
14876      "core": [
14877        {
14878          "vuid": "VUID-vkDestroyQueryPool-queryPool-00793",
14879          "text": " All submitted commands that refer to <code>queryPool</code> <strong class=\"purple\">must</strong> have completed execution"
14880        },
14881        {
14882          "vuid": "VUID-vkDestroyQueryPool-queryPool-00794",
14883          "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"
14884        },
14885        {
14886          "vuid": "VUID-vkDestroyQueryPool-queryPool-00795",
14887          "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>"
14888        },
14889        {
14890          "vuid": "VUID-vkDestroyQueryPool-device-parameter",
14891          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
14892        },
14893        {
14894          "vuid": "VUID-vkDestroyQueryPool-queryPool-parameter",
14895          "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 <a href=\"#VkQueryPool\">VkQueryPool</a> handle"
14896        },
14897        {
14898          "vuid": "VUID-vkDestroyQueryPool-pAllocator-parameter",
14899          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
14900        },
14901        {
14902          "vuid": "VUID-vkDestroyQueryPool-queryPool-parent",
14903          "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>"
14904        }
14905      ]
14906    },
14907    "vkCmdResetQueryPool": {
14908      "core": [
14909        {
14910          "vuid": "VUID-vkCmdResetQueryPool-firstQuery-00796",
14911          "text": " <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
14912        },
14913        {
14914          "vuid": "VUID-vkCmdResetQueryPool-firstQuery-00797",
14915          "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>"
14916        },
14917        {
14918          "vuid": "VUID-vkCmdResetQueryPool-None-02841",
14919          "text": " All queries used by the command <strong class=\"purple\">must</strong> not be active"
14920        },
14921        {
14922          "vuid": "VUID-vkCmdResetQueryPool-commandBuffer-parameter",
14923          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
14924        },
14925        {
14926          "vuid": "VUID-vkCmdResetQueryPool-queryPool-parameter",
14927          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle"
14928        },
14929        {
14930          "vuid": "VUID-vkCmdResetQueryPool-commandBuffer-recording",
14931          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
14932        },
14933        {
14934          "vuid": "VUID-vkCmdResetQueryPool-commandBuffer-cmdpool",
14935          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
14936        },
14937        {
14938          "vuid": "VUID-vkCmdResetQueryPool-renderpass",
14939          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
14940        },
14941        {
14942          "vuid": "VUID-vkCmdResetQueryPool-commonparent",
14943          "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
14944        }
14945      ],
14946      "(VK_KHR_performance_query)": [
14947        {
14948          "vuid": "VUID-vkCmdResetQueryPool-firstQuery-02862",
14949          "text": " If <code>queryPool</code> was created with <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, this command <strong class=\"purple\">must</strong> not be recorded in a command buffer that, either directly or through secondary command buffers, also contains begin commands for a query from the set of queries <span class=\"eq\">[<code>firstQuery</code>, <code>firstQuery</code> &#43; <code>queryCount</code> - 1]</span>"
14950        }
14951      ]
14952    },
14953    "vkResetQueryPool": {
14954      "(VK_VERSION_1_2,VK_EXT_host_query_reset)": [
14955        {
14956          "vuid": "VUID-vkResetQueryPool-None-02665",
14957          "text": " The <a href=\"#features-hostQueryReset\">hostQueryReset</a> feature <strong class=\"purple\">must</strong> be enabled"
14958        },
14959        {
14960          "vuid": "VUID-vkResetQueryPool-firstQuery-02666",
14961          "text": " <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
14962        },
14963        {
14964          "vuid": "VUID-vkResetQueryPool-firstQuery-02667",
14965          "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>"
14966        },
14967        {
14968          "vuid": "VUID-vkResetQueryPool-firstQuery-02741",
14969          "text": " Submitted commands that refer to the range specified by <code>firstQuery</code> and <code>queryCount</code> in <code>queryPool</code> <strong class=\"purple\">must</strong> have completed execution"
14970        },
14971        {
14972          "vuid": "VUID-vkResetQueryPool-firstQuery-02742",
14973          "text": " The range of queries specified by <code>firstQuery</code> and <code>queryCount</code> in <code>queryPool</code> <strong class=\"purple\">must</strong> not be in use by calls to <a href=\"#vkGetQueryPoolResults\">vkGetQueryPoolResults</a> or <code>vkResetQueryPool</code> in other threads"
14974        },
14975        {
14976          "vuid": "VUID-vkResetQueryPool-device-parameter",
14977          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
14978        },
14979        {
14980          "vuid": "VUID-vkResetQueryPool-queryPool-parameter",
14981          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle"
14982        },
14983        {
14984          "vuid": "VUID-vkResetQueryPool-queryPool-parent",
14985          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
14986        }
14987      ]
14988    },
14989    "vkCmdBeginQuery": {
14990      "core": [
14991        {
14992          "vuid": "VUID-vkCmdBeginQuery-queryPool-01922",
14993          "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>"
14994        },
14995        {
14996          "vuid": "VUID-vkCmdBeginQuery-None-00807",
14997          "text": " All queries used by the command <strong class=\"purple\">must</strong> be unavailable"
14998        },
14999        {
15000          "vuid": "VUID-vkCmdBeginQuery-queryType-02804",
15001          "text": " The <code>queryType</code> used to create <code>queryPool</code> <strong class=\"purple\">must</strong> not be <code>VK_QUERY_TYPE_TIMESTAMP</code>"
15002        },
15003        {
15004          "vuid": "VUID-vkCmdBeginQuery-queryType-00800",
15005          "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>"
15006        },
15007        {
15008          "vuid": "VUID-vkCmdBeginQuery-query-00802",
15009          "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
15010        },
15011        {
15012          "vuid": "VUID-vkCmdBeginQuery-queryType-00803",
15013          "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"
15014        },
15015        {
15016          "vuid": "VUID-vkCmdBeginQuery-queryType-00804",
15017          "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"
15018        },
15019        {
15020          "vuid": "VUID-vkCmdBeginQuery-queryType-00805",
15021          "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"
15022        },
15023        {
15024          "vuid": "VUID-vkCmdBeginQuery-commandBuffer-parameter",
15025          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
15026        },
15027        {
15028          "vuid": "VUID-vkCmdBeginQuery-queryPool-parameter",
15029          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle"
15030        },
15031        {
15032          "vuid": "VUID-vkCmdBeginQuery-flags-parameter",
15033          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryControlFlagBits\">VkQueryControlFlagBits</a> values"
15034        },
15035        {
15036          "vuid": "VUID-vkCmdBeginQuery-commandBuffer-recording",
15037          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
15038        },
15039        {
15040          "vuid": "VUID-vkCmdBeginQuery-commandBuffer-cmdpool",
15041          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
15042        },
15043        {
15044          "vuid": "VUID-vkCmdBeginQuery-commonparent",
15045          "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
15046        }
15047      ],
15048      "(VK_VERSION_1_1)": [
15049        {
15050          "vuid": "VUID-vkCmdBeginQuery-commandBuffer-01885",
15051          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
15052        }
15053      ],
15054      "(VK_VERSION_1_1,VK_KHR_multiview)": [
15055        {
15056          "vuid": "VUID-vkCmdBeginQuery-query-00808",
15057          "text": " If 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>"
15058        }
15059      ],
15060      "(VK_EXT_transform_feedback)": [
15061        {
15062          "vuid": "VUID-vkCmdBeginQuery-queryType-02327",
15063          "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"
15064        },
15065        {
15066          "vuid": "VUID-vkCmdBeginQuery-queryType-02328",
15067          "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"
15068        }
15069      ],
15070      "(VK_KHR_performance_query)": [
15071        {
15072          "vuid": "VUID-vkCmdBeginQuery-queryPool-03223",
15073          "text": " If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, the <a href=\"#profiling-lock\">profiling lock</a> <strong class=\"purple\">must</strong> have been held before <a href=\"#vkBeginCommandBuffer\">vkBeginCommandBuffer</a> was called on <code>commandBuffer</code>"
15074        },
15075        {
15076          "vuid": "VUID-vkCmdBeginQuery-queryPool-03224",
15077          "text": " If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> and one of the counters used to create <code>queryPool</code> was <code>VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR</code>, the query begin <strong class=\"purple\">must</strong> be the first recorded command in <code>commandBuffer</code>"
15078        },
15079        {
15080          "vuid": "VUID-vkCmdBeginQuery-queryPool-03225",
15081          "text": " If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> and one of the counters used to create <code>queryPool</code> was <code>VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR</code>, the begin command <strong class=\"purple\">must</strong> not be recorded within a render pass instance"
15082        },
15083        {
15084          "vuid": "VUID-vkCmdBeginQuery-queryPool-03226",
15085          "text": " If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> and another query pool with a <code>queryType</code> <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> has been used within <code>commandBuffer</code>, its parent primary command buffer or secondary command buffer recorded within the same parent primary command buffer as <code>commandBuffer</code>, the <a href=\"#features-features-performanceCounterMultipleQueryPools\"><code>performanceCounterMultipleQueryPools</code></a> feature <strong class=\"purple\">must</strong> be enabled"
15086        },
15087        {
15088          "vuid": "VUID-vkCmdBeginQuery-None-02863",
15089          "text": " If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, this command <strong class=\"purple\">must</strong> not be recorded in a command buffer that, either directly or through secondary command buffers, also contains a <code>vkCmdResetQueryPool</code> command affecting the same query"
15090        }
15091      ]
15092    },
15093    "vkCmdBeginQueryIndexedEXT": {
15094      "core": [
15095        {
15096          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-01922",
15097          "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>"
15098        },
15099        {
15100          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-None-00807",
15101          "text": " All queries used by the command <strong class=\"purple\">must</strong> be unavailable"
15102        },
15103        {
15104          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02804",
15105          "text": " The <code>queryType</code> used to create <code>queryPool</code> <strong class=\"purple\">must</strong> not be <code>VK_QUERY_TYPE_TIMESTAMP</code>"
15106        },
15107        {
15108          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-00800",
15109          "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>"
15110        },
15111        {
15112          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-query-00802",
15113          "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
15114        },
15115        {
15116          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-00803",
15117          "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"
15118        },
15119        {
15120          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-00804",
15121          "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"
15122        },
15123        {
15124          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-00805",
15125          "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"
15126        },
15127        {
15128          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02338",
15129          "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"
15130        },
15131        {
15132          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02339",
15133          "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>"
15134        },
15135        {
15136          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02340",
15137          "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"
15138        },
15139        {
15140          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02341",
15141          "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"
15142        }
15143      ],
15144      "(VK_VERSION_1_1)": [
15145        {
15146          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-01885",
15147          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
15148        }
15149      ],
15150      "(VK_VERSION_1_1,VK_KHR_multiview)": [
15151        {
15152          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-query-00808",
15153          "text": " If 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>"
15154        }
15155      ],
15156      "(VK_KHR_performance_query)": [
15157        {
15158          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-03223",
15159          "text": " If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, the <a href=\"#profiling-lock\">profiling lock</a> <strong class=\"purple\">must</strong> have been held before <a href=\"#vkBeginCommandBuffer\">vkBeginCommandBuffer</a> was called on <code>commandBuffer</code>"
15160        },
15161        {
15162          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-03224",
15163          "text": " If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> and one of the counters used to create <code>queryPool</code> was <code>VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR</code>, the query begin <strong class=\"purple\">must</strong> be the first recorded command in <code>commandBuffer</code>"
15164        },
15165        {
15166          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-03225",
15167          "text": " If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> and one of the counters used to create <code>queryPool</code> was <code>VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR</code>, the begin command <strong class=\"purple\">must</strong> not be recorded within a render pass instance"
15168        },
15169        {
15170          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-03226",
15171          "text": " If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> and another query pool with a <code>queryType</code> <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> has been used within <code>commandBuffer</code>, its parent primary command buffer or secondary command buffer recorded within the same parent primary command buffer as <code>commandBuffer</code>, the <a href=\"#features-features-performanceCounterMultipleQueryPools\"><code>performanceCounterMultipleQueryPools</code></a> feature <strong class=\"purple\">must</strong> be enabled"
15172        },
15173        {
15174          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-None-02863",
15175          "text": " If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, this command <strong class=\"purple\">must</strong> not be recorded in a command buffer that, either directly or through secondary command buffers, also contains a <code>vkCmdResetQueryPool</code> command affecting the same query"
15176        }
15177      ],
15178      "(VK_EXT_transform_feedback)": [
15179        {
15180          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-parameter",
15181          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
15182        },
15183        {
15184          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-parameter",
15185          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle"
15186        },
15187        {
15188          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-flags-parameter",
15189          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryControlFlagBits\">VkQueryControlFlagBits</a> values"
15190        },
15191        {
15192          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-recording",
15193          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
15194        },
15195        {
15196          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-cmdpool",
15197          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
15198        },
15199        {
15200          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commonparent",
15201          "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
15202        }
15203      ]
15204    },
15205    "vkCmdEndQuery": {
15206      "core": [
15207        {
15208          "vuid": "VUID-vkCmdEndQuery-None-01923",
15209          "text": " All queries used by the command <strong class=\"purple\">must</strong> be <a href=\"#queries-operation-active\">active</a>"
15210        },
15211        {
15212          "vuid": "VUID-vkCmdEndQuery-query-00810",
15213          "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
15214        },
15215        {
15216          "vuid": "VUID-vkCmdEndQuery-commandBuffer-parameter",
15217          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
15218        },
15219        {
15220          "vuid": "VUID-vkCmdEndQuery-queryPool-parameter",
15221          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle"
15222        },
15223        {
15224          "vuid": "VUID-vkCmdEndQuery-commandBuffer-recording",
15225          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
15226        },
15227        {
15228          "vuid": "VUID-vkCmdEndQuery-commandBuffer-cmdpool",
15229          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
15230        },
15231        {
15232          "vuid": "VUID-vkCmdEndQuery-commonparent",
15233          "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
15234        }
15235      ],
15236      "(VK_VERSION_1_1)": [
15237        {
15238          "vuid": "VUID-vkCmdEndQuery-commandBuffer-01886",
15239          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
15240        }
15241      ],
15242      "(VK_VERSION_1_1,VK_KHR_multiview)": [
15243        {
15244          "vuid": "VUID-vkCmdEndQuery-query-00812",
15245          "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>"
15246        }
15247      ],
15248      "(VK_KHR_performance_query)": [
15249        {
15250          "vuid": "VUID-vkCmdEndQuery-queryPool-03227",
15251          "text": " If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> and one or more of the counters used to create <code>queryPool</code> was <code>VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR</code>, the <a href=\"#vkCmdEndQuery\">vkCmdEndQuery</a> <strong class=\"purple\">must</strong> be the last recorded command in <code>commandBuffer</code>"
15252        },
15253        {
15254          "vuid": "VUID-vkCmdEndQuery-queryPool-03228",
15255          "text": " If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> and one or more of the counters used to create <code>queryPool</code> was <code>VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR</code>, the <a href=\"#vkCmdEndQuery\">vkCmdEndQuery</a> <strong class=\"purple\">must</strong> not be recorded within a render pass instance"
15256        }
15257      ]
15258    },
15259    "vkCmdEndQueryIndexedEXT": {
15260      "(VK_EXT_transform_feedback)": [
15261        {
15262          "vuid": "VUID-vkCmdEndQueryIndexedEXT-None-02342",
15263          "text": " All queries used by the command <strong class=\"purple\">must</strong> be <a href=\"#queries-operation-active\">active</a>"
15264        },
15265        {
15266          "vuid": "VUID-vkCmdEndQueryIndexedEXT-query-02343",
15267          "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
15268        },
15269        {
15270          "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-02346",
15271          "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>"
15272        },
15273        {
15274          "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-02347",
15275          "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"
15276        },
15277        {
15278          "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-02723",
15279          "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> <code>index</code> <strong class=\"purple\">must</strong> equal the <code>index</code> used to begin the query"
15280        },
15281        {
15282          "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-parameter",
15283          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
15284        },
15285        {
15286          "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryPool-parameter",
15287          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle"
15288        },
15289        {
15290          "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-recording",
15291          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
15292        },
15293        {
15294          "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-cmdpool",
15295          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
15296        },
15297        {
15298          "vuid": "VUID-vkCmdEndQueryIndexedEXT-commonparent",
15299          "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
15300        }
15301      ],
15302      "(VK_EXT_transform_feedback)+(VK_VERSION_1_1)": [
15303        {
15304          "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-02344",
15305          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
15306        }
15307      ],
15308      "(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [
15309        {
15310          "vuid": "VUID-vkCmdEndQueryIndexedEXT-query-02345",
15311          "text": " If <code>vkCmdEndQueryIndexedEXT</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>"
15312        }
15313      ]
15314    },
15315    "vkGetQueryPoolResults": {
15316      "core": [
15317        {
15318          "vuid": "VUID-vkGetQueryPoolResults-firstQuery-00813",
15319          "text": " <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
15320        },
15321        {
15322          "vuid": "VUID-vkGetQueryPoolResults-flags-02827",
15323          "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>"
15324        },
15325        {
15326          "vuid": "VUID-vkGetQueryPoolResults-flags-00815",
15327          "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>"
15328        },
15329        {
15330          "vuid": "VUID-vkGetQueryPoolResults-firstQuery-00816",
15331          "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>"
15332        },
15333        {
15334          "vuid": "VUID-vkGetQueryPoolResults-dataSize-00817",
15335          "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>"
15336        },
15337        {
15338          "vuid": "VUID-vkGetQueryPoolResults-queryType-00818",
15339          "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>"
15340        },
15341        {
15342          "vuid": "VUID-vkGetQueryPoolResults-device-parameter",
15343          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
15344        },
15345        {
15346          "vuid": "VUID-vkGetQueryPoolResults-queryPool-parameter",
15347          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle"
15348        },
15349        {
15350          "vuid": "VUID-vkGetQueryPoolResults-pData-parameter",
15351          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
15352        },
15353        {
15354          "vuid": "VUID-vkGetQueryPoolResults-flags-parameter",
15355          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryResultFlagBits\">VkQueryResultFlagBits</a> values"
15356        },
15357        {
15358          "vuid": "VUID-vkGetQueryPoolResults-dataSize-arraylength",
15359          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
15360        },
15361        {
15362          "vuid": "VUID-vkGetQueryPoolResults-queryPool-parent",
15363          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
15364        }
15365      ],
15366      "(VK_KHR_performance_query)": [
15367        {
15368          "vuid": "VUID-vkGetQueryPoolResults-flags-02828",
15369          "text": " If <code>VK_QUERY_RESULT_64_BIT</code> is not set in <code>flags</code> and the <code>queryType</code> used to create <code>queryPool</code> was not <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, then <code>pData</code> and <code>stride</code> <strong class=\"purple\">must</strong> be multiples of <code>4</code>"
15370        },
15371        {
15372          "vuid": "VUID-vkGetQueryPoolResults-queryType-03229",
15373          "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, then <code>pData</code> and <code>stride</code> <strong class=\"purple\">must</strong> be multiples of the size of <a href=\"#VkPerformanceCounterResultKHR\">VkPerformanceCounterResultKHR</a>"
15374        },
15375        {
15376          "vuid": "VUID-vkGetQueryPoolResults-queryType-03230",
15377          "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_RESULT_WITH_AVAILABILITY_BIT</code>, <code>VK_QUERY_RESULT_PARTIAL_BIT</code> or <code>VK_QUERY_RESULT_64_BIT</code>"
15378        },
15379        {
15380          "vuid": "VUID-vkGetQueryPoolResults-queryType-03231",
15381          "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, the <code>queryPool</code> <strong class=\"purple\">must</strong> have been recorded once for each pass as retrieved via a call to <a href=\"#vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR\">vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR</a>"
15382        }
15383      ]
15384    },
15385    "vkCmdCopyQueryPoolResults": {
15386      "core": [
15387        {
15388          "vuid": "VUID-vkCmdCopyQueryPoolResults-dstOffset-00819",
15389          "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>"
15390        },
15391        {
15392          "vuid": "VUID-vkCmdCopyQueryPoolResults-firstQuery-00820",
15393          "text": " <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
15394        },
15395        {
15396          "vuid": "VUID-vkCmdCopyQueryPoolResults-firstQuery-00821",
15397          "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>"
15398        },
15399        {
15400          "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-00822",
15401          "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>"
15402        },
15403        {
15404          "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-00823",
15405          "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>"
15406        },
15407        {
15408          "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00824",
15409          "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>"
15410        },
15411        {
15412          "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00825",
15413          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
15414        },
15415        {
15416          "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00826",
15417          "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"
15418        },
15419        {
15420          "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-00827",
15421          "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>"
15422        },
15423        {
15424          "vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-parameter",
15425          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
15426        },
15427        {
15428          "vuid": "VUID-vkCmdCopyQueryPoolResults-queryPool-parameter",
15429          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle"
15430        },
15431        {
15432          "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-parameter",
15433          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
15434        },
15435        {
15436          "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-parameter",
15437          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryResultFlagBits\">VkQueryResultFlagBits</a> values"
15438        },
15439        {
15440          "vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-recording",
15441          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
15442        },
15443        {
15444          "vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-cmdpool",
15445          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
15446        },
15447        {
15448          "vuid": "VUID-vkCmdCopyQueryPoolResults-renderpass",
15449          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
15450        },
15451        {
15452          "vuid": "VUID-vkCmdCopyQueryPoolResults-commonparent",
15453          "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 <a href=\"#VkDevice\">VkDevice</a>"
15454        }
15455      ],
15456      "(VK_KHR_performance_query)": [
15457        {
15458          "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-03232",
15459          "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, <a href=\"#VkPhysicalDevicePerformanceQueryPropertiesKHR\">VkPhysicalDevicePerformanceQueryPropertiesKHR</a>::<code>allowCommandBufferQueryCopies</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>"
15460        },
15461        {
15462          "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-03233",
15463          "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_RESULT_WITH_AVAILABILITY_BIT</code>, <code>VK_QUERY_RESULT_PARTIAL_BIT</code> or <code>VK_QUERY_RESULT_64_BIT</code>"
15464        },
15465        {
15466          "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-03234",
15467          "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, the <code>queryPool</code> <strong class=\"purple\">must</strong> have been submitted once for each pass as retrieved via a call to <a href=\"#vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR\">vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR</a>"
15468        }
15469      ],
15470      "(VK_INTEL_performance_query)": [
15471        {
15472          "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-02734",
15473          "text": " <a href=\"#vkCmdCopyQueryPoolResults\">vkCmdCopyQueryPoolResults</a> <strong class=\"purple\">must</strong> not be called if the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL</code>"
15474        }
15475      ]
15476    },
15477    "vkCmdWriteTimestamp": {
15478      "core": [
15479        {
15480          "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04074",
15481          "text": " <code>pipelineStage</code> <strong class=\"purple\">must</strong> be a <a href=\"#synchronization-pipeline-stages-supported\">valid stage</a> for the queue family that was used to create the command pool that <code>commandBuffer</code> was allocated from"
15482        },
15483        {
15484          "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04075",
15485          "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
15486        },
15487        {
15488          "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04076",
15489          "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
15490        },
15491        {
15492          "vuid": "VUID-vkCmdWriteTimestamp-queryPool-01416",
15493          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> of <code>VK_QUERY_TYPE_TIMESTAMP</code>"
15494        },
15495        {
15496          "vuid": "VUID-vkCmdWriteTimestamp-queryPool-00828",
15497          "text": " The query identified by <code>queryPool</code> and <code>query</code> <strong class=\"purple\">must</strong> be <em>unavailable</em>"
15498        },
15499        {
15500          "vuid": "VUID-vkCmdWriteTimestamp-timestampValidBits-00829",
15501          "text": " The command pool&#8217;s queue family <strong class=\"purple\">must</strong> support a non-zero <code>timestampValidBits</code>"
15502        },
15503        {
15504          "vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-parameter",
15505          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
15506        },
15507        {
15508          "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-parameter",
15509          "text": " <code>pipelineStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> value"
15510        },
15511        {
15512          "vuid": "VUID-vkCmdWriteTimestamp-queryPool-parameter",
15513          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle"
15514        },
15515        {
15516          "vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-recording",
15517          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
15518        },
15519        {
15520          "vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-cmdpool",
15521          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
15522        },
15523        {
15524          "vuid": "VUID-vkCmdWriteTimestamp-commonparent",
15525          "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
15526        }
15527      ],
15528      "(VK_EXT_conditional_rendering)": [
15529        {
15530          "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04077",
15531          "text": " If the <a href=\"#features-conditionalRendering\">conditional rendering</a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>"
15532        }
15533      ],
15534      "(VK_EXT_fragment_density_map)": [
15535        {
15536          "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04078",
15537          "text": " If the <a href=\"#features-fragmentDensityMap\">fragment density map</a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>"
15538        }
15539      ],
15540      "(VK_EXT_transform_feedback)": [
15541        {
15542          "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04079",
15543          "text": " If the <a href=\"#features-transformFeedback\">transform feedback</a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>"
15544        }
15545      ],
15546      "(VK_NV_mesh_shader)": [
15547        {
15548          "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04080",
15549          "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code> or <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
15550        }
15551      ],
15552      "(VK_NV_shading_rate_image)": [
15553        {
15554          "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04081",
15555          "text": " If the <a href=\"#features-shadingRateImage\">shading rate image</a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV</code>"
15556        }
15557      ],
15558      "(VK_VERSION_1_1,VK_KHR_multiview)": [
15559        {
15560          "vuid": "VUID-vkCmdWriteTimestamp-None-00830",
15561          "text": " All queries used by the command <strong class=\"purple\">must</strong> be unavailable"
15562        },
15563        {
15564          "vuid": "VUID-vkCmdWriteTimestamp-query-00831",
15565          "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>"
15566        }
15567      ]
15568    },
15569    "vkAcquireProfilingLockKHR": {
15570      "(VK_KHR_performance_query)": [
15571        {
15572          "vuid": "VUID-vkAcquireProfilingLockKHR-device-parameter",
15573          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
15574        },
15575        {
15576          "vuid": "VUID-vkAcquireProfilingLockKHR-pInfo-parameter",
15577          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAcquireProfilingLockInfoKHR\">VkAcquireProfilingLockInfoKHR</a> structure"
15578        }
15579      ]
15580    },
15581    "VkAcquireProfilingLockInfoKHR": {
15582      "(VK_KHR_performance_query)": [
15583        {
15584          "vuid": "VUID-VkAcquireProfilingLockInfoKHR-sType-sType",
15585          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR</code>"
15586        },
15587        {
15588          "vuid": "VUID-VkAcquireProfilingLockInfoKHR-pNext-pNext",
15589          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
15590        },
15591        {
15592          "vuid": "VUID-VkAcquireProfilingLockInfoKHR-flags-zerobitmask",
15593          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
15594        }
15595      ]
15596    },
15597    "vkReleaseProfilingLockKHR": {
15598      "(VK_KHR_performance_query)": [
15599        {
15600          "vuid": "VUID-vkReleaseProfilingLockKHR-device-03235",
15601          "text": " The profiling lock of <code>device</code> <strong class=\"purple\">must</strong> have been held via a previous successful call to <a href=\"#vkAcquireProfilingLockKHR\">vkAcquireProfilingLockKHR</a>"
15602        },
15603        {
15604          "vuid": "VUID-vkReleaseProfilingLockKHR-device-parameter",
15605          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
15606        }
15607      ]
15608    },
15609    "vkInitializePerformanceApiINTEL": {
15610      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
15611        {
15612          "vuid": "VUID-vkInitializePerformanceApiINTEL-device-parameter",
15613          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
15614        },
15615        {
15616          "vuid": "VUID-vkInitializePerformanceApiINTEL-pInitializeInfo-parameter",
15617          "text": " <code>pInitializeInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkInitializePerformanceApiInfoINTEL\">VkInitializePerformanceApiInfoINTEL</a> structure"
15618        }
15619      ]
15620    },
15621    "VkInitializePerformanceApiInfoINTEL": {
15622      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
15623        {
15624          "vuid": "VUID-VkInitializePerformanceApiInfoINTEL-sType-sType",
15625          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL</code>"
15626        },
15627        {
15628          "vuid": "VUID-VkInitializePerformanceApiInfoINTEL-pNext-pNext",
15629          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
15630        }
15631      ]
15632    },
15633    "vkUninitializePerformanceApiINTEL": {
15634      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
15635        {
15636          "vuid": "VUID-vkUninitializePerformanceApiINTEL-device-parameter",
15637          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
15638        }
15639      ]
15640    },
15641    "vkGetPerformanceParameterINTEL": {
15642      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
15643        {
15644          "vuid": "VUID-vkGetPerformanceParameterINTEL-device-parameter",
15645          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
15646        },
15647        {
15648          "vuid": "VUID-vkGetPerformanceParameterINTEL-parameter-parameter",
15649          "text": " <code>parameter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPerformanceParameterTypeINTEL\">VkPerformanceParameterTypeINTEL</a> value"
15650        },
15651        {
15652          "vuid": "VUID-vkGetPerformanceParameterINTEL-pValue-parameter",
15653          "text": " <code>pValue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPerformanceValueINTEL\">VkPerformanceValueINTEL</a> structure"
15654        }
15655      ]
15656    },
15657    "VkPerformanceValueINTEL": {
15658      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
15659        {
15660          "vuid": "VUID-VkPerformanceValueINTEL-type-parameter",
15661          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPerformanceValueTypeINTEL\">VkPerformanceValueTypeINTEL</a> value"
15662        },
15663        {
15664          "vuid": "VUID-VkPerformanceValueINTEL-valueString-parameter",
15665          "text": " If <code>type</code> is <code>VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL</code>, the <code>valueString</code> member of <code>data</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
15666        }
15667      ]
15668    },
15669    "VkQueryPoolPerformanceQueryCreateInfoINTEL": {
15670      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
15671        {
15672          "vuid": "VUID-VkQueryPoolPerformanceQueryCreateInfoINTEL-sType-sType",
15673          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL</code>"
15674        },
15675        {
15676          "vuid": "VUID-VkQueryPoolPerformanceQueryCreateInfoINTEL-performanceCountersSampling-parameter",
15677          "text": " <code>performanceCountersSampling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPoolSamplingModeINTEL\">VkQueryPoolSamplingModeINTEL</a> value"
15678        }
15679      ]
15680    },
15681    "vkCmdSetPerformanceMarkerINTEL": {
15682      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
15683        {
15684          "vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-parameter",
15685          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
15686        },
15687        {
15688          "vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-pMarkerInfo-parameter",
15689          "text": " <code>pMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPerformanceMarkerInfoINTEL\">VkPerformanceMarkerInfoINTEL</a> structure"
15690        },
15691        {
15692          "vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-recording",
15693          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
15694        },
15695        {
15696          "vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-cmdpool",
15697          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations"
15698        }
15699      ]
15700    },
15701    "VkPerformanceMarkerInfoINTEL": {
15702      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
15703        {
15704          "vuid": "VUID-VkPerformanceMarkerInfoINTEL-sType-sType",
15705          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL</code>"
15706        },
15707        {
15708          "vuid": "VUID-VkPerformanceMarkerInfoINTEL-pNext-pNext",
15709          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
15710        }
15711      ]
15712    },
15713    "vkCmdSetPerformanceStreamMarkerINTEL": {
15714      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
15715        {
15716          "vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-parameter",
15717          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
15718        },
15719        {
15720          "vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-pMarkerInfo-parameter",
15721          "text": " <code>pMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPerformanceStreamMarkerInfoINTEL\">VkPerformanceStreamMarkerInfoINTEL</a> structure"
15722        },
15723        {
15724          "vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-recording",
15725          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
15726        },
15727        {
15728          "vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-cmdpool",
15729          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations"
15730        }
15731      ]
15732    },
15733    "VkPerformanceStreamMarkerInfoINTEL": {
15734      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
15735        {
15736          "vuid": "VUID-VkPerformanceStreamMarkerInfoINTEL-marker-02735",
15737          "text": " The value written by the application into <code>marker</code> <strong class=\"purple\">must</strong> only used the valid bits as reported by <a href=\"#vkGetPerformanceParameterINTEL\">vkGetPerformanceParameterINTEL</a> with the <code>VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL</code>"
15738        },
15739        {
15740          "vuid": "VUID-VkPerformanceStreamMarkerInfoINTEL-sType-sType",
15741          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL</code>"
15742        },
15743        {
15744          "vuid": "VUID-VkPerformanceStreamMarkerInfoINTEL-pNext-pNext",
15745          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
15746        }
15747      ]
15748    },
15749    "vkCmdSetPerformanceOverrideINTEL": {
15750      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
15751        {
15752          "vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-pOverrideInfo-02736",
15753          "text": " <code>pOverrideInfo</code> <strong class=\"purple\">must</strong> not be used with a <a href=\"#VkPerformanceOverrideTypeINTEL\">VkPerformanceOverrideTypeINTEL</a> that is not reported available by <code>vkGetPerformanceParameterINTEL</code>"
15754        },
15755        {
15756          "vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-parameter",
15757          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
15758        },
15759        {
15760          "vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-pOverrideInfo-parameter",
15761          "text": " <code>pOverrideInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPerformanceOverrideInfoINTEL\">VkPerformanceOverrideInfoINTEL</a> structure"
15762        },
15763        {
15764          "vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-recording",
15765          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
15766        },
15767        {
15768          "vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-cmdpool",
15769          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations"
15770        }
15771      ]
15772    },
15773    "VkPerformanceOverrideInfoINTEL": {
15774      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
15775        {
15776          "vuid": "VUID-VkPerformanceOverrideInfoINTEL-sType-sType",
15777          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL</code>"
15778        },
15779        {
15780          "vuid": "VUID-VkPerformanceOverrideInfoINTEL-pNext-pNext",
15781          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
15782        },
15783        {
15784          "vuid": "VUID-VkPerformanceOverrideInfoINTEL-type-parameter",
15785          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPerformanceOverrideTypeINTEL\">VkPerformanceOverrideTypeINTEL</a> value"
15786        }
15787      ]
15788    },
15789    "vkAcquirePerformanceConfigurationINTEL": {
15790      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
15791        {
15792          "vuid": "VUID-vkAcquirePerformanceConfigurationINTEL-device-parameter",
15793          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
15794        },
15795        {
15796          "vuid": "VUID-vkAcquirePerformanceConfigurationINTEL-pAcquireInfo-parameter",
15797          "text": " <code>pAcquireInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPerformanceConfigurationAcquireInfoINTEL\">VkPerformanceConfigurationAcquireInfoINTEL</a> structure"
15798        },
15799        {
15800          "vuid": "VUID-vkAcquirePerformanceConfigurationINTEL-pConfiguration-parameter",
15801          "text": " <code>pConfiguration</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPerformanceConfigurationINTEL\">VkPerformanceConfigurationINTEL</a> handle"
15802        }
15803      ]
15804    },
15805    "VkPerformanceConfigurationAcquireInfoINTEL": {
15806      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
15807        {
15808          "vuid": "VUID-VkPerformanceConfigurationAcquireInfoINTEL-sType-sType",
15809          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL</code>"
15810        },
15811        {
15812          "vuid": "VUID-VkPerformanceConfigurationAcquireInfoINTEL-pNext-pNext",
15813          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
15814        },
15815        {
15816          "vuid": "VUID-VkPerformanceConfigurationAcquireInfoINTEL-type-parameter",
15817          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPerformanceConfigurationTypeINTEL\">VkPerformanceConfigurationTypeINTEL</a> value"
15818        }
15819      ]
15820    },
15821    "vkQueueSetPerformanceConfigurationINTEL": {
15822      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
15823        {
15824          "vuid": "VUID-vkQueueSetPerformanceConfigurationINTEL-queue-parameter",
15825          "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle"
15826        },
15827        {
15828          "vuid": "VUID-vkQueueSetPerformanceConfigurationINTEL-configuration-parameter",
15829          "text": " <code>configuration</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPerformanceConfigurationINTEL\">VkPerformanceConfigurationINTEL</a> handle"
15830        },
15831        {
15832          "vuid": "VUID-vkQueueSetPerformanceConfigurationINTEL-commonparent",
15833          "text": " Both of <code>configuration</code>, and <code>queue</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
15834        }
15835      ]
15836    },
15837    "vkReleasePerformanceConfigurationINTEL": {
15838      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
15839        {
15840          "vuid": "VUID-vkReleasePerformanceConfigurationINTEL-configuration-02737",
15841          "text": " <code>configuration</code> <strong class=\"purple\">must</strong> not be released before all command buffers submitted while the configuration was set are in <a href=\"#commandbuffers-lifecycle\">pending state</a>"
15842        },
15843        {
15844          "vuid": "VUID-vkReleasePerformanceConfigurationINTEL-device-parameter",
15845          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
15846        },
15847        {
15848          "vuid": "VUID-vkReleasePerformanceConfigurationINTEL-configuration-parameter",
15849          "text": " <code>configuration</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPerformanceConfigurationINTEL\">VkPerformanceConfigurationINTEL</a> handle"
15850        },
15851        {
15852          "vuid": "VUID-vkReleasePerformanceConfigurationINTEL-configuration-parent",
15853          "text": " <code>configuration</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
15854        }
15855      ]
15856    },
15857    "vkCmdClearColorImage": {
15858      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
15859        {
15860          "vuid": "VUID-vkCmdClearColorImage-image-01993",
15861          "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>"
15862        }
15863      ],
15864      "core": [
15865        {
15866          "vuid": "VUID-vkCmdClearColorImage-image-00002",
15867          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
15868        },
15869        {
15870          "vuid": "VUID-vkCmdClearColorImage-image-00003",
15871          "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"
15872        },
15873        {
15874          "vuid": "VUID-vkCmdClearColorImage-imageLayout-00004",
15875          "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>"
15876        },
15877        {
15878          "vuid": "VUID-vkCmdClearColorImage-aspectMask-02498",
15879          "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>"
15880        },
15881        {
15882          "vuid": "VUID-vkCmdClearColorImage-baseMipLevel-01470",
15883          "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"
15884        },
15885        {
15886          "vuid": "VUID-vkCmdClearColorImage-pRanges-01692",
15887          "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"
15888        },
15889        {
15890          "vuid": "VUID-vkCmdClearColorImage-baseArrayLayer-01472",
15891          "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"
15892        },
15893        {
15894          "vuid": "VUID-vkCmdClearColorImage-pRanges-01693",
15895          "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"
15896        },
15897        {
15898          "vuid": "VUID-vkCmdClearColorImage-image-00007",
15899          "text": " <code>image</code> <strong class=\"purple\">must</strong> not have a compressed or depth/stencil format"
15900        },
15901        {
15902          "vuid": "VUID-vkCmdClearColorImage-commandBuffer-parameter",
15903          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
15904        },
15905        {
15906          "vuid": "VUID-vkCmdClearColorImage-image-parameter",
15907          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
15908        },
15909        {
15910          "vuid": "VUID-vkCmdClearColorImage-imageLayout-parameter",
15911          "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
15912        },
15913        {
15914          "vuid": "VUID-vkCmdClearColorImage-pColor-parameter",
15915          "text": " <code>pColor</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkClearColorValue\">VkClearColorValue</a> union"
15916        },
15917        {
15918          "vuid": "VUID-vkCmdClearColorImage-pRanges-parameter",
15919          "text": " <code>pRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rangeCount</code> valid <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> structures"
15920        },
15921        {
15922          "vuid": "VUID-vkCmdClearColorImage-commandBuffer-recording",
15923          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
15924        },
15925        {
15926          "vuid": "VUID-vkCmdClearColorImage-commandBuffer-cmdpool",
15927          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
15928        },
15929        {
15930          "vuid": "VUID-vkCmdClearColorImage-renderpass",
15931          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
15932        },
15933        {
15934          "vuid": "VUID-vkCmdClearColorImage-rangeCount-arraylength",
15935          "text": " <code>rangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
15936        },
15937        {
15938          "vuid": "VUID-vkCmdClearColorImage-commonparent",
15939          "text": " Both of <code>commandBuffer</code>, and <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
15940        }
15941      ],
15942      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
15943        {
15944          "vuid": "VUID-vkCmdClearColorImage-image-01545",
15945          "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′C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>"
15946        }
15947      ],
15948      "!(VK_KHR_shared_presentable_image)": [
15949        {
15950          "vuid": "VUID-vkCmdClearColorImage-imageLayout-00005",
15951          "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>"
15952        }
15953      ],
15954      "(VK_KHR_shared_presentable_image)": [
15955        {
15956          "vuid": "VUID-vkCmdClearColorImage-imageLayout-01394",
15957          "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>"
15958        }
15959      ],
15960      "(VK_VERSION_1_1)": [
15961        {
15962          "vuid": "VUID-vkCmdClearColorImage-commandBuffer-01805",
15963          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be a protected image"
15964        },
15965        {
15966          "vuid": "VUID-vkCmdClearColorImage-commandBuffer-01806",
15967          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be an unprotected image"
15968        }
15969      ]
15970    },
15971    "vkCmdClearDepthStencilImage": {
15972      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
15973        {
15974          "vuid": "VUID-vkCmdClearDepthStencilImage-image-01994",
15975          "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>"
15976        }
15977      ],
15978      "!(VK_VERSION_1_2,VK_EXT_separate_stencil_usage)": [
15979        {
15980          "vuid": "VUID-vkCmdClearDepthStencilImage-image-00009",
15981          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
15982        }
15983      ],
15984      "(VK_VERSION_1_2,VK_EXT_separate_stencil_usage)": [
15985        {
15986          "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-02658",
15987          "text": " If the <code>aspect</code> member of any element of <code>pRanges</code> includes <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>, and <code>image</code> was created with <a href=\"#VkImageStencilUsageCreateInfo\">separate stencil usage</a>, <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> <strong class=\"purple\">must</strong> have been included in the <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>::<code>stencilUsage</code> used to create <code>image</code>"
15988        },
15989        {
15990          "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-02659",
15991          "text": " If the <code>aspect</code> member of any element of <code>pRanges</code> includes <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>, and <code>image</code> was not created with <a href=\"#VkImageStencilUsageCreateInfo\">separate stencil usage</a>, <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> <strong class=\"purple\">must</strong> have been included in the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>usage</code> used to create <code>image</code>"
15992        },
15993        {
15994          "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-02660",
15995          "text": " If the <code>aspect</code> member of any element of <code>pRanges</code> includes <code>VK_IMAGE_ASPECT_DEPTH_BIT</code>, <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> <strong class=\"purple\">must</strong> have been included in the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>usage</code> used to create <code>image</code>"
15996        }
15997      ],
15998      "core": [
15999        {
16000          "vuid": "VUID-vkCmdClearDepthStencilImage-image-00010",
16001          "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"
16002        },
16003        {
16004          "vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-00011",
16005          "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>"
16006        },
16007        {
16008          "vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-00012",
16009          "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>"
16010        },
16011        {
16012          "vuid": "VUID-vkCmdClearDepthStencilImage-aspectMask-02824",
16013          "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>aspectMask</code> member of each element of the <code>pRanges</code> array <strong class=\"purple\">must</strong> not include bits other than <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>"
16014        },
16015        {
16016          "vuid": "VUID-vkCmdClearDepthStencilImage-image-02825",
16017          "text": " If the <code>image</code>&#8217;s format does not have a stencil component, then the <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>aspectMask</code> member of each element of the <code>pRanges</code> array <strong class=\"purple\">must</strong> not include the <code>VK_IMAGE_ASPECT_STENCIL_BIT</code> bit"
16018        },
16019        {
16020          "vuid": "VUID-vkCmdClearDepthStencilImage-image-02826",
16021          "text": " If the <code>image</code>&#8217;s format does not have a depth component, then the <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>aspectMask</code> member of each element of the <code>pRanges</code> array <strong class=\"purple\">must</strong> not include the <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> bit"
16022        },
16023        {
16024          "vuid": "VUID-vkCmdClearDepthStencilImage-baseMipLevel-01474",
16025          "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"
16026        },
16027        {
16028          "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-01694",
16029          "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"
16030        },
16031        {
16032          "vuid": "VUID-vkCmdClearDepthStencilImage-baseArrayLayer-01476",
16033          "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"
16034        },
16035        {
16036          "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-01695",
16037          "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"
16038        },
16039        {
16040          "vuid": "VUID-vkCmdClearDepthStencilImage-image-00014",
16041          "text": " <code>image</code> <strong class=\"purple\">must</strong> have a depth/stencil format"
16042        },
16043        {
16044          "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-parameter",
16045          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
16046        },
16047        {
16048          "vuid": "VUID-vkCmdClearDepthStencilImage-image-parameter",
16049          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
16050        },
16051        {
16052          "vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-parameter",
16053          "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
16054        },
16055        {
16056          "vuid": "VUID-vkCmdClearDepthStencilImage-pDepthStencil-parameter",
16057          "text": " <code>pDepthStencil</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkClearDepthStencilValue\">VkClearDepthStencilValue</a> structure"
16058        },
16059        {
16060          "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-parameter",
16061          "text": " <code>pRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rangeCount</code> valid <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> structures"
16062        },
16063        {
16064          "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-recording",
16065          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
16066        },
16067        {
16068          "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-cmdpool",
16069          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
16070        },
16071        {
16072          "vuid": "VUID-vkCmdClearDepthStencilImage-renderpass",
16073          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
16074        },
16075        {
16076          "vuid": "VUID-vkCmdClearDepthStencilImage-rangeCount-arraylength",
16077          "text": " <code>rangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
16078        },
16079        {
16080          "vuid": "VUID-vkCmdClearDepthStencilImage-commonparent",
16081          "text": " Both of <code>commandBuffer</code>, and <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
16082        }
16083      ],
16084      "(VK_VERSION_1_1)": [
16085        {
16086          "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-01807",
16087          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be a protected image"
16088        },
16089        {
16090          "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-01808",
16091          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be an unprotected image"
16092        }
16093      ]
16094    },
16095    "vkCmdClearAttachments": {
16096      "core": [
16097        {
16098          "vuid": "VUID-vkCmdClearAttachments-aspectMask-02501",
16099          "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"
16100        },
16101        {
16102          "vuid": "VUID-vkCmdClearAttachments-aspectMask-02502",
16103          "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"
16104        },
16105        {
16106          "vuid": "VUID-vkCmdClearAttachments-aspectMask-02503",
16107          "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"
16108        },
16109        {
16110          "vuid": "VUID-vkCmdClearAttachments-rect-02682",
16111          "text": " The <code>rect</code> member of each element of <code>pRects</code> <strong class=\"purple\">must</strong> have an <code>extent.width</code> greater than <code>0</code>"
16112        },
16113        {
16114          "vuid": "VUID-vkCmdClearAttachments-rect-02683",
16115          "text": " The <code>rect</code> member of each element of <code>pRects</code> <strong class=\"purple\">must</strong> have an <code>extent.height</code> greater than <code>0</code>"
16116        },
16117        {
16118          "vuid": "VUID-vkCmdClearAttachments-pRects-00016",
16119          "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"
16120        },
16121        {
16122          "vuid": "VUID-vkCmdClearAttachments-pRects-00017",
16123          "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"
16124        },
16125        {
16126          "vuid": "VUID-vkCmdClearAttachments-layerCount-01934",
16127          "text": " The <code>layerCount</code> member of each element of <code>pRects</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
16128        },
16129        {
16130          "vuid": "VUID-vkCmdClearAttachments-commandBuffer-parameter",
16131          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
16132        },
16133        {
16134          "vuid": "VUID-vkCmdClearAttachments-pAttachments-parameter",
16135          "text": " <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <a href=\"#VkClearAttachment\">VkClearAttachment</a> structures"
16136        },
16137        {
16138          "vuid": "VUID-vkCmdClearAttachments-pRects-parameter",
16139          "text": " <code>pRects</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rectCount</code> <a href=\"#VkClearRect\">VkClearRect</a> structures"
16140        },
16141        {
16142          "vuid": "VUID-vkCmdClearAttachments-commandBuffer-recording",
16143          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
16144        },
16145        {
16146          "vuid": "VUID-vkCmdClearAttachments-commandBuffer-cmdpool",
16147          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
16148        },
16149        {
16150          "vuid": "VUID-vkCmdClearAttachments-renderpass",
16151          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
16152        },
16153        {
16154          "vuid": "VUID-vkCmdClearAttachments-attachmentCount-arraylength",
16155          "text": " <code>attachmentCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
16156        },
16157        {
16158          "vuid": "VUID-vkCmdClearAttachments-rectCount-arraylength",
16159          "text": " <code>rectCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
16160        }
16161      ],
16162      "(VK_VERSION_1_1)": [
16163        {
16164          "vuid": "VUID-vkCmdClearAttachments-commandBuffer-02504",
16165          "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"
16166        },
16167        {
16168          "vuid": "VUID-vkCmdClearAttachments-commandBuffer-02505",
16169          "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"
16170        }
16171      ],
16172      "(VK_VERSION_1_1,VK_KHR_multiview)": [
16173        {
16174          "vuid": "VUID-vkCmdClearAttachments-baseArrayLayer-00018",
16175          "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"
16176        }
16177      ]
16178    },
16179    "VkClearAttachment": {
16180      "core": [
16181        {
16182          "vuid": "VUID-VkClearAttachment-aspectMask-00019",
16183          "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>"
16184        },
16185        {
16186          "vuid": "VUID-VkClearAttachment-aspectMask-00020",
16187          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_METADATA_BIT</code>"
16188        },
16189        {
16190          "vuid": "VUID-VkClearAttachment-clearValue-00021",
16191          "text": " <code>clearValue</code> <strong class=\"purple\">must</strong> be a valid <code>VkClearValue</code> union"
16192        },
16193        {
16194          "vuid": "VUID-VkClearAttachment-aspectMask-parameter",
16195          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
16196        },
16197        {
16198          "vuid": "VUID-VkClearAttachment-aspectMask-requiredbitmask",
16199          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
16200        }
16201      ],
16202      "(VK_EXT_image_drm_format_modifier)": [
16203        {
16204          "vuid": "VUID-VkClearAttachment-aspectMask-02246",
16205          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT</code> for any index <code>i</code>"
16206        }
16207      ]
16208    },
16209    "VkClearDepthStencilValue": {
16210      "(VK_EXT_depth_range_unrestricted)": [
16211        {
16212          "vuid": "VUID-VkClearDepthStencilValue-depth-00022",
16213          "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"
16214        }
16215      ],
16216      "!(VK_EXT_depth_range_unrestricted)": [
16217        {
16218          "vuid": "VUID-VkClearDepthStencilValue-depth-02506",
16219          "text": " <code>depth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
16220        }
16221      ]
16222    },
16223    "vkCmdFillBuffer": {
16224      "core": [
16225        {
16226          "vuid": "VUID-vkCmdFillBuffer-dstOffset-00024",
16227          "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>"
16228        },
16229        {
16230          "vuid": "VUID-vkCmdFillBuffer-dstOffset-00025",
16231          "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
16232        },
16233        {
16234          "vuid": "VUID-vkCmdFillBuffer-size-00026",
16235          "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>"
16236        },
16237        {
16238          "vuid": "VUID-vkCmdFillBuffer-size-00027",
16239          "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>"
16240        },
16241        {
16242          "vuid": "VUID-vkCmdFillBuffer-size-00028",
16243          "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>"
16244        },
16245        {
16246          "vuid": "VUID-vkCmdFillBuffer-dstBuffer-00029",
16247          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
16248        },
16249        {
16250          "vuid": "VUID-vkCmdFillBuffer-dstBuffer-00031",
16251          "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"
16252        },
16253        {
16254          "vuid": "VUID-vkCmdFillBuffer-commandBuffer-parameter",
16255          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
16256        },
16257        {
16258          "vuid": "VUID-vkCmdFillBuffer-dstBuffer-parameter",
16259          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
16260        },
16261        {
16262          "vuid": "VUID-vkCmdFillBuffer-commandBuffer-recording",
16263          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
16264        },
16265        {
16266          "vuid": "VUID-vkCmdFillBuffer-commandBuffer-cmdpool",
16267          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics or compute operations"
16268        },
16269        {
16270          "vuid": "VUID-vkCmdFillBuffer-renderpass",
16271          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
16272        },
16273        {
16274          "vuid": "VUID-vkCmdFillBuffer-commonparent",
16275          "text": " Both of <code>commandBuffer</code>, and <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
16276        }
16277      ],
16278      "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
16279        {
16280          "vuid": "VUID-vkCmdFillBuffer-commandBuffer-00030",
16281          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics or compute operations"
16282        }
16283      ],
16284      "(VK_VERSION_1_1)": [
16285        {
16286          "vuid": "VUID-vkCmdFillBuffer-commandBuffer-01811",
16287          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
16288        },
16289        {
16290          "vuid": "VUID-vkCmdFillBuffer-commandBuffer-01812",
16291          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer"
16292        }
16293      ]
16294    },
16295    "vkCmdUpdateBuffer": {
16296      "core": [
16297        {
16298          "vuid": "VUID-vkCmdUpdateBuffer-dstOffset-00032",
16299          "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>"
16300        },
16301        {
16302          "vuid": "VUID-vkCmdUpdateBuffer-dataSize-00033",
16303          "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>"
16304        },
16305        {
16306          "vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-00034",
16307          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
16308        },
16309        {
16310          "vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-00035",
16311          "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"
16312        },
16313        {
16314          "vuid": "VUID-vkCmdUpdateBuffer-dstOffset-00036",
16315          "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
16316        },
16317        {
16318          "vuid": "VUID-vkCmdUpdateBuffer-dataSize-00037",
16319          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be less than or equal to <code>65536</code>"
16320        },
16321        {
16322          "vuid": "VUID-vkCmdUpdateBuffer-dataSize-00038",
16323          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
16324        },
16325        {
16326          "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-parameter",
16327          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
16328        },
16329        {
16330          "vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-parameter",
16331          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
16332        },
16333        {
16334          "vuid": "VUID-vkCmdUpdateBuffer-pData-parameter",
16335          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
16336        },
16337        {
16338          "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-recording",
16339          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
16340        },
16341        {
16342          "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-cmdpool",
16343          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
16344        },
16345        {
16346          "vuid": "VUID-vkCmdUpdateBuffer-renderpass",
16347          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
16348        },
16349        {
16350          "vuid": "VUID-vkCmdUpdateBuffer-dataSize-arraylength",
16351          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
16352        },
16353        {
16354          "vuid": "VUID-vkCmdUpdateBuffer-commonparent",
16355          "text": " Both of <code>commandBuffer</code>, and <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
16356        }
16357      ],
16358      "(VK_VERSION_1_1)": [
16359        {
16360          "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-01813",
16361          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
16362        },
16363        {
16364          "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-01814",
16365          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer"
16366        }
16367      ]
16368    },
16369    "vkCmdCopyBuffer": {
16370      "(VK_VERSION_1_1)": [
16371        {
16372          "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01822",
16373          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
16374        },
16375        {
16376          "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01823",
16377          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
16378        },
16379        {
16380          "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01824",
16381          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer"
16382        }
16383      ],
16384      "core": [
16385        {
16386          "vuid": "VUID-vkCmdCopyBuffer-srcOffset-00113",
16387          "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>"
16388        },
16389        {
16390          "vuid": "VUID-vkCmdCopyBuffer-dstOffset-00114",
16391          "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>"
16392        },
16393        {
16394          "vuid": "VUID-vkCmdCopyBuffer-size-00115",
16395          "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>"
16396        },
16397        {
16398          "vuid": "VUID-vkCmdCopyBuffer-size-00116",
16399          "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>"
16400        },
16401        {
16402          "vuid": "VUID-vkCmdCopyBuffer-pRegions-00117",
16403          "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"
16404        },
16405        {
16406          "vuid": "VUID-vkCmdCopyBuffer-srcBuffer-00118",
16407          "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_SRC_BIT</code> usage flag"
16408        },
16409        {
16410          "vuid": "VUID-vkCmdCopyBuffer-srcBuffer-00119",
16411          "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"
16412        },
16413        {
16414          "vuid": "VUID-vkCmdCopyBuffer-dstBuffer-00120",
16415          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
16416        },
16417        {
16418          "vuid": "VUID-vkCmdCopyBuffer-dstBuffer-00121",
16419          "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"
16420        },
16421        {
16422          "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-parameter",
16423          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
16424        },
16425        {
16426          "vuid": "VUID-vkCmdCopyBuffer-srcBuffer-parameter",
16427          "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
16428        },
16429        {
16430          "vuid": "VUID-vkCmdCopyBuffer-dstBuffer-parameter",
16431          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
16432        },
16433        {
16434          "vuid": "VUID-vkCmdCopyBuffer-pRegions-parameter",
16435          "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkBufferCopy\">VkBufferCopy</a> structures"
16436        },
16437        {
16438          "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-recording",
16439          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
16440        },
16441        {
16442          "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-cmdpool",
16443          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
16444        },
16445        {
16446          "vuid": "VUID-vkCmdCopyBuffer-renderpass",
16447          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
16448        },
16449        {
16450          "vuid": "VUID-vkCmdCopyBuffer-regionCount-arraylength",
16451          "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
16452        },
16453        {
16454          "vuid": "VUID-vkCmdCopyBuffer-commonparent",
16455          "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 <a href=\"#VkDevice\">VkDevice</a>"
16456        }
16457      ]
16458    },
16459    "VkBufferCopy": {
16460      "core": [
16461        {
16462          "vuid": "VUID-VkBufferCopy-size-01988",
16463          "text": " The <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
16464        }
16465      ]
16466    },
16467    "vkCmdCopyImage": {
16468      "(VK_VERSION_1_1)": [
16469        {
16470          "vuid": "VUID-vkCmdCopyImage-commandBuffer-01825",
16471          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image"
16472        },
16473        {
16474          "vuid": "VUID-vkCmdCopyImage-commandBuffer-01826",
16475          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image"
16476        },
16477        {
16478          "vuid": "VUID-vkCmdCopyImage-commandBuffer-01827",
16479          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image"
16480        }
16481      ],
16482      "core": [
16483        {
16484          "vuid": "VUID-vkCmdCopyImage-pRegions-00124",
16485          "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"
16486        },
16487        {
16488          "vuid": "VUID-vkCmdCopyImage-srcImage-00126",
16489          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag"
16490        },
16491        {
16492          "vuid": "VUID-vkCmdCopyImage-srcImageLayout-00128",
16493          "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>"
16494        },
16495        {
16496          "vuid": "VUID-vkCmdCopyImage-dstImage-00131",
16497          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
16498        },
16499        {
16500          "vuid": "VUID-vkCmdCopyImage-dstImageLayout-00133",
16501          "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>"
16502        },
16503        {
16504          "vuid": "VUID-vkCmdCopyImage-srcImage-00136",
16505          "text": " The sample count of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> match"
16506        },
16507        {
16508          "vuid": "VUID-vkCmdCopyImage-srcSubresource-01696",
16509          "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"
16510        },
16511        {
16512          "vuid": "VUID-vkCmdCopyImage-dstSubresource-01697",
16513          "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"
16514        },
16515        {
16516          "vuid": "VUID-vkCmdCopyImage-srcSubresource-01698",
16517          "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"
16518        },
16519        {
16520          "vuid": "VUID-vkCmdCopyImage-dstSubresource-01699",
16521          "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"
16522        },
16523        {
16524          "vuid": "VUID-vkCmdCopyImage-srcOffset-01783",
16525          "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>"
16526        },
16527        {
16528          "vuid": "VUID-vkCmdCopyImage-dstOffset-01784",
16529          "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>"
16530        },
16531        {
16532          "vuid": "VUID-vkCmdCopyImage-commandBuffer-parameter",
16533          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
16534        },
16535        {
16536          "vuid": "VUID-vkCmdCopyImage-srcImage-parameter",
16537          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
16538        },
16539        {
16540          "vuid": "VUID-vkCmdCopyImage-srcImageLayout-parameter",
16541          "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
16542        },
16543        {
16544          "vuid": "VUID-vkCmdCopyImage-dstImage-parameter",
16545          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
16546        },
16547        {
16548          "vuid": "VUID-vkCmdCopyImage-dstImageLayout-parameter",
16549          "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
16550        },
16551        {
16552          "vuid": "VUID-vkCmdCopyImage-pRegions-parameter",
16553          "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkImageCopy\">VkImageCopy</a> structures"
16554        },
16555        {
16556          "vuid": "VUID-vkCmdCopyImage-commandBuffer-recording",
16557          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
16558        },
16559        {
16560          "vuid": "VUID-vkCmdCopyImage-commandBuffer-cmdpool",
16561          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
16562        },
16563        {
16564          "vuid": "VUID-vkCmdCopyImage-renderpass",
16565          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
16566        },
16567        {
16568          "vuid": "VUID-vkCmdCopyImage-regionCount-arraylength",
16569          "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
16570        },
16571        {
16572          "vuid": "VUID-vkCmdCopyImage-commonparent",
16573          "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 <a href=\"#VkDevice\">VkDevice</a>"
16574        }
16575      ],
16576      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
16577        {
16578          "vuid": "VUID-vkCmdCopyImage-srcImage-01995",
16579          "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>"
16580        },
16581        {
16582          "vuid": "VUID-vkCmdCopyImage-dstImage-01996",
16583          "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>"
16584        }
16585      ],
16586      "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
16587        {
16588          "vuid": "VUID-vkCmdCopyImage-srcImage-00127",
16589          "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"
16590        },
16591        {
16592          "vuid": "VUID-vkCmdCopyImage-dstImage-00132",
16593          "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"
16594        },
16595        {
16596          "vuid": "VUID-vkCmdCopyImage-srcImage-00135",
16597          "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>"
16598        }
16599      ],
16600      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
16601        {
16602          "vuid": "VUID-vkCmdCopyImage-srcImage-01546",
16603          "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"
16604        },
16605        {
16606          "vuid": "VUID-vkCmdCopyImage-dstImage-01547",
16607          "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"
16608        },
16609        {
16610          "vuid": "VUID-vkCmdCopyImage-srcImage-01548",
16611          "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>"
16612        },
16613        {
16614          "vuid": "VUID-vkCmdCopyImage-None-01549",
16615          "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"
16616        }
16617      ],
16618      "!(VK_KHR_shared_presentable_image)": [
16619        {
16620          "vuid": "VUID-vkCmdCopyImage-srcImageLayout-00129",
16621          "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>"
16622        },
16623        {
16624          "vuid": "VUID-vkCmdCopyImage-dstImageLayout-00134",
16625          "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>"
16626        }
16627      ],
16628      "(VK_KHR_shared_presentable_image)": [
16629        {
16630          "vuid": "VUID-vkCmdCopyImage-srcImageLayout-01917",
16631          "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>"
16632        },
16633        {
16634          "vuid": "VUID-vkCmdCopyImage-dstImageLayout-01395",
16635          "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>"
16636        }
16637      ],
16638      "(VK_EXT_fragment_density_map)": [
16639        {
16640          "vuid": "VUID-vkCmdCopyImage-dstImage-02542",
16641          "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>"
16642        }
16643      ]
16644    },
16645    "VkImageCopy": {
16646      "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
16647        {
16648          "vuid": "VUID-VkImageCopy-aspectMask-00137",
16649          "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
16650        },
16651        {
16652          "vuid": "VUID-VkImageCopy-srcOffset-00157",
16653          "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"
16654        },
16655        {
16656          "vuid": "VUID-VkImageCopy-extent-00158",
16657          "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"
16658        },
16659        {
16660          "vuid": "VUID-VkImageCopy-extent-00159",
16661          "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"
16662        },
16663        {
16664          "vuid": "VUID-VkImageCopy-extent-00160",
16665          "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"
16666        },
16667        {
16668          "vuid": "VUID-VkImageCopy-dstOffset-00162",
16669          "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"
16670        },
16671        {
16672          "vuid": "VUID-VkImageCopy-extent-00163",
16673          "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"
16674        },
16675        {
16676          "vuid": "VUID-VkImageCopy-extent-00164",
16677          "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"
16678        },
16679        {
16680          "vuid": "VUID-VkImageCopy-extent-00165",
16681          "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"
16682        }
16683      ],
16684      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
16685        {
16686          "vuid": "VUID-VkImageCopy-srcImage-01551",
16687          "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"
16688        },
16689        {
16690          "vuid": "VUID-VkImageCopy-srcImage-01552",
16691          "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>"
16692        },
16693        {
16694          "vuid": "VUID-VkImageCopy-srcImage-01553",
16695          "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>"
16696        },
16697        {
16698          "vuid": "VUID-VkImageCopy-dstImage-01554",
16699          "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>"
16700        },
16701        {
16702          "vuid": "VUID-VkImageCopy-dstImage-01555",
16703          "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>"
16704        },
16705        {
16706          "vuid": "VUID-VkImageCopy-srcImage-01556",
16707          "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>"
16708        },
16709        {
16710          "vuid": "VUID-VkImageCopy-dstImage-01557",
16711          "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>"
16712        },
16713        {
16714          "vuid": "VUID-VkImageCopy-srcImage-01727",
16715          "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"
16716        },
16717        {
16718          "vuid": "VUID-VkImageCopy-srcImage-01728",
16719          "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"
16720        },
16721        {
16722          "vuid": "VUID-VkImageCopy-srcImage-01729",
16723          "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"
16724        },
16725        {
16726          "vuid": "VUID-VkImageCopy-srcImage-01730",
16727          "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"
16728        },
16729        {
16730          "vuid": "VUID-VkImageCopy-dstImage-01731",
16731          "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"
16732        },
16733        {
16734          "vuid": "VUID-VkImageCopy-dstImage-01732",
16735          "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"
16736        },
16737        {
16738          "vuid": "VUID-VkImageCopy-dstImage-01733",
16739          "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"
16740        },
16741        {
16742          "vuid": "VUID-VkImageCopy-dstImage-01734",
16743          "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"
16744        }
16745      ],
16746      "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
16747        {
16748          "vuid": "VUID-VkImageCopy-layerCount-00138",
16749          "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
16750        },
16751        {
16752          "vuid": "VUID-VkImageCopy-srcImage-00139",
16753          "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"
16754        },
16755        {
16756          "vuid": "VUID-VkImageCopy-srcImage-01789",
16757          "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>"
16758        }
16759      ],
16760      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
16761        {
16762          "vuid": "VUID-VkImageCopy-extent-00140",
16763          "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)"
16764        },
16765        {
16766          "vuid": "VUID-VkImageCopy-srcImage-00141",
16767          "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"
16768        },
16769        {
16770          "vuid": "VUID-VkImageCopy-srcImage-01790",
16771          "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>"
16772        },
16773        {
16774          "vuid": "VUID-VkImageCopy-srcImage-01791",
16775          "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>"
16776        },
16777        {
16778          "vuid": "VUID-VkImageCopy-dstImage-01792",
16779          "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>"
16780        }
16781      ],
16782      "core": [
16783        {
16784          "vuid": "VUID-VkImageCopy-aspectMask-00142",
16785          "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>"
16786        },
16787        {
16788          "vuid": "VUID-VkImageCopy-aspectMask-00143",
16789          "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>"
16790        },
16791        {
16792          "vuid": "VUID-VkImageCopy-srcOffset-00144",
16793          "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"
16794        },
16795        {
16796          "vuid": "VUID-VkImageCopy-srcOffset-00145",
16797          "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"
16798        },
16799        {
16800          "vuid": "VUID-VkImageCopy-srcImage-00146",
16801          "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>"
16802        },
16803        {
16804          "vuid": "VUID-VkImageCopy-srcOffset-00147",
16805          "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"
16806        },
16807        {
16808          "vuid": "VUID-VkImageCopy-srcImage-01785",
16809          "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>"
16810        },
16811        {
16812          "vuid": "VUID-VkImageCopy-dstImage-01786",
16813          "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>"
16814        },
16815        {
16816          "vuid": "VUID-VkImageCopy-srcImage-01787",
16817          "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>"
16818        },
16819        {
16820          "vuid": "VUID-VkImageCopy-dstImage-01788",
16821          "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>"
16822        },
16823        {
16824          "vuid": "VUID-VkImageCopy-dstOffset-00150",
16825          "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"
16826        },
16827        {
16828          "vuid": "VUID-VkImageCopy-dstOffset-00151",
16829          "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"
16830        },
16831        {
16832          "vuid": "VUID-VkImageCopy-dstImage-00152",
16833          "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>"
16834        },
16835        {
16836          "vuid": "VUID-VkImageCopy-dstOffset-00153",
16837          "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"
16838        },
16839        {
16840          "vuid": "VUID-VkImageCopy-srcSubresource-parameter",
16841          "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure"
16842        },
16843        {
16844          "vuid": "VUID-VkImageCopy-dstSubresource-parameter",
16845          "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure"
16846        }
16847      ]
16848    },
16849    "VkImageSubresourceLayers": {
16850      "core": [
16851        {
16852          "vuid": "VUID-VkImageSubresourceLayers-aspectMask-00167",
16853          "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>"
16854        },
16855        {
16856          "vuid": "VUID-VkImageSubresourceLayers-aspectMask-00168",
16857          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_ASPECT_METADATA_BIT</code>"
16858        },
16859        {
16860          "vuid": "VUID-VkImageSubresourceLayers-layerCount-01700",
16861          "text": " <code>layerCount</code> <strong class=\"purple\">must</strong> be greater than 0"
16862        },
16863        {
16864          "vuid": "VUID-VkImageSubresourceLayers-aspectMask-parameter",
16865          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
16866        },
16867        {
16868          "vuid": "VUID-VkImageSubresourceLayers-aspectMask-requiredbitmask",
16869          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
16870        }
16871      ],
16872      "(VK_EXT_image_drm_format_modifier)": [
16873        {
16874          "vuid": "VUID-VkImageSubresourceLayers-aspectMask-02247",
16875          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT</code> for any index <code>i</code>"
16876        }
16877      ]
16878    },
16879    "vkCmdCopyBufferToImage": {
16880      "(VK_VERSION_1_1)": [
16881        {
16882          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01828",
16883          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
16884        },
16885        {
16886          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01829",
16887          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image"
16888        },
16889        {
16890          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01830",
16891          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image"
16892        }
16893      ],
16894      "core": [
16895        {
16896          "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00171",
16897          "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>"
16898        },
16899        {
16900          "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00172",
16901          "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>"
16902        },
16903        {
16904          "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00173",
16905          "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"
16906        },
16907        {
16908          "vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-00174",
16909          "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_SRC_BIT</code> usage flag"
16910        },
16911        {
16912          "vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-00176",
16913          "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"
16914        },
16915        {
16916          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00177",
16917          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
16918        },
16919        {
16920          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00178",
16921          "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"
16922        },
16923        {
16924          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00179",
16925          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>"
16926        },
16927        {
16928          "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-00180",
16929          "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>"
16930        },
16931        {
16932          "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-01701",
16933          "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"
16934        },
16935        {
16936          "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-01702",
16937          "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"
16938        },
16939        {
16940          "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-01793",
16941          "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>"
16942        },
16943        {
16944          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-04052",
16945          "text": " If the queue family used to create the <a href=\"#VkCommandPool\">VkCommandPool</a> which <code>commandBuffer</code> was allocated from does not support <code>VK_QUEUE_GRAPHICS_BIT</code> or <code>VK_QUEUE_COMPUTE_BIT</code>, the <code>bufferOffset</code> member of any element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
16946        },
16947        {
16948          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-04053",
16949          "text": " If <code>dstImage</code> has a depth/stencil format, the <code>bufferOffset</code> member of any element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
16950        },
16951        {
16952          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-parameter",
16953          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
16954        },
16955        {
16956          "vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-parameter",
16957          "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
16958        },
16959        {
16960          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-parameter",
16961          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
16962        },
16963        {
16964          "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-parameter",
16965          "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
16966        },
16967        {
16968          "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-parameter",
16969          "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkBufferImageCopy\">VkBufferImageCopy</a> structures"
16970        },
16971        {
16972          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-recording",
16973          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
16974        },
16975        {
16976          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-cmdpool",
16977          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
16978        },
16979        {
16980          "vuid": "VUID-vkCmdCopyBufferToImage-renderpass",
16981          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
16982        },
16983        {
16984          "vuid": "VUID-vkCmdCopyBufferToImage-regionCount-arraylength",
16985          "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
16986        },
16987        {
16988          "vuid": "VUID-vkCmdCopyBufferToImage-commonparent",
16989          "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 <a href=\"#VkDevice\">VkDevice</a>"
16990        }
16991      ],
16992      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
16993        {
16994          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-01997",
16995          "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>"
16996        }
16997      ],
16998      "!(VK_KHR_shared_presentable_image)": [
16999        {
17000          "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-00181",
17001          "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>"
17002        }
17003      ],
17004      "(VK_KHR_shared_presentable_image)": [
17005        {
17006          "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-01396",
17007          "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>"
17008        }
17009      ],
17010      "(VK_EXT_fragment_density_map)": [
17011        {
17012          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-02543",
17013          "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>"
17014        }
17015      ]
17016    },
17017    "vkCmdCopyImageToBuffer": {
17018      "(VK_VERSION_1_1)": [
17019        {
17020          "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01831",
17021          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image"
17022        },
17023        {
17024          "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01832",
17025          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
17026        },
17027        {
17028          "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01833",
17029          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer"
17030        }
17031      ],
17032      "core": [
17033        {
17034          "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00182",
17035          "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>"
17036        },
17037        {
17038          "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00183",
17039          "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>"
17040        },
17041        {
17042          "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00184",
17043          "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"
17044        },
17045        {
17046          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00186",
17047          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag"
17048        },
17049        {
17050          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00187",
17051          "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"
17052        },
17053        {
17054          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00188",
17055          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>"
17056        },
17057        {
17058          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-00189",
17059          "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>"
17060        },
17061        {
17062          "vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-00191",
17063          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
17064        },
17065        {
17066          "vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-00192",
17067          "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"
17068        },
17069        {
17070          "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-01703",
17071          "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"
17072        },
17073        {
17074          "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-01704",
17075          "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"
17076        },
17077        {
17078          "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-01794",
17079          "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>"
17080        },
17081        {
17082          "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-04054",
17083          "text": " If the queue family used to create the <a href=\"#VkCommandPool\">VkCommandPool</a> which <code>commandBuffer</code> was allocated from does not support <code>VK_QUEUE_GRAPHICS_BIT</code> or <code>VK_QUEUE_COMPUTE_BIT</code>, the <code>bufferOffset</code> member of any element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
17084        },
17085        {
17086          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-04055",
17087          "text": " If <code>srcImage</code> has a depth/stencil format, the <code>bufferOffset</code> member of any element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
17088        },
17089        {
17090          "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-parameter",
17091          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
17092        },
17093        {
17094          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-parameter",
17095          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
17096        },
17097        {
17098          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-parameter",
17099          "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
17100        },
17101        {
17102          "vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-parameter",
17103          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
17104        },
17105        {
17106          "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-parameter",
17107          "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkBufferImageCopy\">VkBufferImageCopy</a> structures"
17108        },
17109        {
17110          "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-recording",
17111          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17112        },
17113        {
17114          "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-cmdpool",
17115          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
17116        },
17117        {
17118          "vuid": "VUID-vkCmdCopyImageToBuffer-renderpass",
17119          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
17120        },
17121        {
17122          "vuid": "VUID-vkCmdCopyImageToBuffer-regionCount-arraylength",
17123          "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
17124        },
17125        {
17126          "vuid": "VUID-vkCmdCopyImageToBuffer-commonparent",
17127          "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 <a href=\"#VkDevice\">VkDevice</a>"
17128        }
17129      ],
17130      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
17131        {
17132          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-01998",
17133          "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>"
17134        }
17135      ],
17136      "!(VK_KHR_shared_presentable_image)": [
17137        {
17138          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-00190",
17139          "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>"
17140        }
17141      ],
17142      "(VK_KHR_shared_presentable_image)": [
17143        {
17144          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-01397",
17145          "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>"
17146        }
17147      ],
17148      "(VK_EXT_fragment_density_map)": [
17149        {
17150          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-02544",
17151          "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>"
17152        }
17153      ]
17154    },
17155    "VkBufferImageCopy": {
17156      "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
17157        {
17158          "vuid": "VUID-VkBufferImageCopy-bufferOffset-00193",
17159          "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"
17160        },
17161        {
17162          "vuid": "VUID-VkBufferImageCopy-bufferRowLength-00203",
17163          "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"
17164        },
17165        {
17166          "vuid": "VUID-VkBufferImageCopy-bufferImageHeight-00204",
17167          "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"
17168        },
17169        {
17170          "vuid": "VUID-VkBufferImageCopy-imageOffset-00205",
17171          "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"
17172        },
17173        {
17174          "vuid": "VUID-VkBufferImageCopy-bufferOffset-00206",
17175          "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"
17176        },
17177        {
17178          "vuid": "VUID-VkBufferImageCopy-imageExtent-00207",
17179          "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"
17180        },
17181        {
17182          "vuid": "VUID-VkBufferImageCopy-imageExtent-00208",
17183          "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"
17184        },
17185        {
17186          "vuid": "VUID-VkBufferImageCopy-imageExtent-00209",
17187          "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"
17188        }
17189      ],
17190      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
17191        {
17192          "vuid": "VUID-VkBufferImageCopy-bufferOffset-01558",
17193          "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"
17194        },
17195        {
17196          "vuid": "VUID-VkBufferImageCopy-bufferOffset-01559",
17197          "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>"
17198        },
17199        {
17200          "vuid": "VUID-VkBufferImageCopy-None-01735",
17201          "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"
17202        },
17203        {
17204          "vuid": "VUID-VkBufferImageCopy-None-01736",
17205          "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"
17206        },
17207        {
17208          "vuid": "VUID-VkBufferImageCopy-None-01737",
17209          "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"
17210        },
17211        {
17212          "vuid": "VUID-VkBufferImageCopy-None-01738",
17213          "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"
17214        },
17215        {
17216          "vuid": "VUID-VkBufferImageCopy-None-01739",
17217          "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"
17218        },
17219        {
17220          "vuid": "VUID-VkBufferImageCopy-None-01740",
17221          "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"
17222        },
17223        {
17224          "vuid": "VUID-VkBufferImageCopy-None-01741",
17225          "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"
17226        },
17227        {
17228          "vuid": "VUID-VkBufferImageCopy-aspectMask-01560",
17229          "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)"
17230        }
17231      ],
17232      "core": [
17233        {
17234          "vuid": "VUID-VkBufferImageCopy-bufferRowLength-00195",
17235          "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>"
17236        },
17237        {
17238          "vuid": "VUID-VkBufferImageCopy-bufferImageHeight-00196",
17239          "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>"
17240        },
17241        {
17242          "vuid": "VUID-VkBufferImageCopy-imageOffset-00197",
17243          "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"
17244        },
17245        {
17246          "vuid": "VUID-VkBufferImageCopy-imageOffset-00198",
17247          "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"
17248        },
17249        {
17250          "vuid": "VUID-VkBufferImageCopy-srcImage-00199",
17251          "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>"
17252        },
17253        {
17254          "vuid": "VUID-VkBufferImageCopy-imageOffset-00200",
17255          "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"
17256        },
17257        {
17258          "vuid": "VUID-VkBufferImageCopy-srcImage-00201",
17259          "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>"
17260        },
17261        {
17262          "vuid": "VUID-VkBufferImageCopy-aspectMask-00211",
17263          "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"
17264        },
17265        {
17266          "vuid": "VUID-VkBufferImageCopy-aspectMask-00212",
17267          "text": " The <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> only have a single bit set"
17268        },
17269        {
17270          "vuid": "VUID-VkBufferImageCopy-baseArrayLayer-00213",
17271          "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"
17272        },
17273        {
17274          "vuid": "VUID-VkBufferImageCopy-imageSubresource-parameter",
17275          "text": " <code>imageSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure"
17276        }
17277      ],
17278      "!(VK_EXT_depth_range_unrestricted)": [
17279        {
17280          "vuid": "VUID-VkBufferImageCopy-None-00214",
17281          "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>"
17282        }
17283      ]
17284    },
17285    "vkCmdBlitImage": {
17286      "(VK_VERSION_1_1)": [
17287        {
17288          "vuid": "VUID-vkCmdBlitImage-commandBuffer-01834",
17289          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image"
17290        },
17291        {
17292          "vuid": "VUID-vkCmdBlitImage-commandBuffer-01835",
17293          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image"
17294        },
17295        {
17296          "vuid": "VUID-vkCmdBlitImage-commandBuffer-01836",
17297          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image"
17298        }
17299      ],
17300      "core": [
17301        {
17302          "vuid": "VUID-vkCmdBlitImage-pRegions-00215",
17303          "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>"
17304        },
17305        {
17306          "vuid": "VUID-vkCmdBlitImage-pRegions-00216",
17307          "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>"
17308        },
17309        {
17310          "vuid": "VUID-vkCmdBlitImage-pRegions-00217",
17311          "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"
17312        },
17313        {
17314          "vuid": "VUID-vkCmdBlitImage-srcImage-01999",
17315          "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>"
17316        },
17317        {
17318          "vuid": "VUID-vkCmdBlitImage-srcImage-00219",
17319          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag"
17320        },
17321        {
17322          "vuid": "VUID-vkCmdBlitImage-srcImage-00220",
17323          "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"
17324        },
17325        {
17326          "vuid": "VUID-vkCmdBlitImage-srcImageLayout-00221",
17327          "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>"
17328        },
17329        {
17330          "vuid": "VUID-vkCmdBlitImage-dstImage-02000",
17331          "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>"
17332        },
17333        {
17334          "vuid": "VUID-vkCmdBlitImage-dstImage-00224",
17335          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
17336        },
17337        {
17338          "vuid": "VUID-vkCmdBlitImage-dstImage-00225",
17339          "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"
17340        },
17341        {
17342          "vuid": "VUID-vkCmdBlitImage-dstImageLayout-00226",
17343          "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>"
17344        },
17345        {
17346          "vuid": "VUID-vkCmdBlitImage-srcImage-00229",
17347          "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>"
17348        },
17349        {
17350          "vuid": "VUID-vkCmdBlitImage-srcImage-00230",
17351          "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>"
17352        },
17353        {
17354          "vuid": "VUID-vkCmdBlitImage-srcImage-00231",
17355          "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"
17356        },
17357        {
17358          "vuid": "VUID-vkCmdBlitImage-srcImage-00232",
17359          "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>"
17360        },
17361        {
17362          "vuid": "VUID-vkCmdBlitImage-srcImage-00233",
17363          "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>"
17364        },
17365        {
17366          "vuid": "VUID-vkCmdBlitImage-dstImage-00234",
17367          "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>"
17368        },
17369        {
17370          "vuid": "VUID-vkCmdBlitImage-filter-02001",
17371          "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>"
17372        },
17373        {
17374          "vuid": "VUID-vkCmdBlitImage-srcSubresource-01705",
17375          "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"
17376        },
17377        {
17378          "vuid": "VUID-vkCmdBlitImage-dstSubresource-01706",
17379          "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"
17380        },
17381        {
17382          "vuid": "VUID-vkCmdBlitImage-srcSubresource-01707",
17383          "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"
17384        },
17385        {
17386          "vuid": "VUID-vkCmdBlitImage-dstSubresource-01708",
17387          "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"
17388        },
17389        {
17390          "vuid": "VUID-vkCmdBlitImage-commandBuffer-parameter",
17391          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
17392        },
17393        {
17394          "vuid": "VUID-vkCmdBlitImage-srcImage-parameter",
17395          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
17396        },
17397        {
17398          "vuid": "VUID-vkCmdBlitImage-srcImageLayout-parameter",
17399          "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
17400        },
17401        {
17402          "vuid": "VUID-vkCmdBlitImage-dstImage-parameter",
17403          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
17404        },
17405        {
17406          "vuid": "VUID-vkCmdBlitImage-dstImageLayout-parameter",
17407          "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
17408        },
17409        {
17410          "vuid": "VUID-vkCmdBlitImage-pRegions-parameter",
17411          "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkImageBlit\">VkImageBlit</a> structures"
17412        },
17413        {
17414          "vuid": "VUID-vkCmdBlitImage-filter-parameter",
17415          "text": " <code>filter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value"
17416        },
17417        {
17418          "vuid": "VUID-vkCmdBlitImage-commandBuffer-recording",
17419          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17420        },
17421        {
17422          "vuid": "VUID-vkCmdBlitImage-commandBuffer-cmdpool",
17423          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
17424        },
17425        {
17426          "vuid": "VUID-vkCmdBlitImage-renderpass",
17427          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
17428        },
17429        {
17430          "vuid": "VUID-vkCmdBlitImage-regionCount-arraylength",
17431          "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
17432        },
17433        {
17434          "vuid": "VUID-vkCmdBlitImage-commonparent",
17435          "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 <a href=\"#VkDevice\">VkDevice</a>"
17436        }
17437      ],
17438      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
17439        {
17440          "vuid": "VUID-vkCmdBlitImage-srcImage-01561",
17441          "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′C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>"
17442        },
17443        {
17444          "vuid": "VUID-vkCmdBlitImage-dstImage-01562",
17445          "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′C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>"
17446        }
17447      ],
17448      "!(VK_KHR_shared_presentable_image)": [
17449        {
17450          "vuid": "VUID-vkCmdBlitImage-srcImageLayout-00222",
17451          "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>"
17452        },
17453        {
17454          "vuid": "VUID-vkCmdBlitImage-dstImageLayout-00227",
17455          "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>"
17456        }
17457      ],
17458      "(VK_KHR_shared_presentable_image)": [
17459        {
17460          "vuid": "VUID-vkCmdBlitImage-srcImageLayout-01398",
17461          "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>"
17462        },
17463        {
17464          "vuid": "VUID-vkCmdBlitImage-dstImageLayout-01399",
17465          "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>"
17466        }
17467      ],
17468      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
17469        {
17470          "vuid": "VUID-vkCmdBlitImage-filter-02002",
17471          "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>"
17472        },
17473        {
17474          "vuid": "VUID-vkCmdBlitImage-filter-00237",
17475          "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>"
17476        }
17477      ],
17478      "(VK_EXT_fragment_density_map)": [
17479        {
17480          "vuid": "VUID-vkCmdBlitImage-dstImage-02545",
17481          "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>"
17482        }
17483      ]
17484    },
17485    "VkImageBlit": {
17486      "core": [
17487        {
17488          "vuid": "VUID-VkImageBlit-aspectMask-00238",
17489          "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
17490        },
17491        {
17492          "vuid": "VUID-VkImageBlit-layerCount-00239",
17493          "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
17494        },
17495        {
17496          "vuid": "VUID-VkImageBlit-srcImage-00240",
17497          "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"
17498        },
17499        {
17500          "vuid": "VUID-VkImageBlit-aspectMask-00241",
17501          "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>"
17502        },
17503        {
17504          "vuid": "VUID-VkImageBlit-aspectMask-00242",
17505          "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>"
17506        },
17507        {
17508          "vuid": "VUID-VkImageBlit-srcOffset-00243",
17509          "text": " <code>srcOffset</code>[0].x and <code>srcOffset</code>[1].x <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"
17510        },
17511        {
17512          "vuid": "VUID-VkImageBlit-srcOffset-00244",
17513          "text": " <code>srcOffset</code>[0].y and <code>srcOffset</code>[1].y <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"
17514        },
17515        {
17516          "vuid": "VUID-VkImageBlit-srcImage-00245",
17517          "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>"
17518        },
17519        {
17520          "vuid": "VUID-VkImageBlit-srcOffset-00246",
17521          "text": " <code>srcOffset</code>[0].z and <code>srcOffset</code>[1].z <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"
17522        },
17523        {
17524          "vuid": "VUID-VkImageBlit-srcImage-00247",
17525          "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>"
17526        },
17527        {
17528          "vuid": "VUID-VkImageBlit-dstOffset-00248",
17529          "text": " <code>dstOffset</code>[0].x and <code>dstOffset</code>[1].x <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"
17530        },
17531        {
17532          "vuid": "VUID-VkImageBlit-dstOffset-00249",
17533          "text": " <code>dstOffset</code>[0].y and <code>dstOffset</code>[1].y <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"
17534        },
17535        {
17536          "vuid": "VUID-VkImageBlit-dstImage-00250",
17537          "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>"
17538        },
17539        {
17540          "vuid": "VUID-VkImageBlit-dstOffset-00251",
17541          "text": " <code>dstOffset</code>[0].z and <code>dstOffset</code>[1].z <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"
17542        },
17543        {
17544          "vuid": "VUID-VkImageBlit-dstImage-00252",
17545          "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>"
17546        },
17547        {
17548          "vuid": "VUID-VkImageBlit-srcSubresource-parameter",
17549          "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure"
17550        },
17551        {
17552          "vuid": "VUID-VkImageBlit-dstSubresource-parameter",
17553          "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure"
17554        }
17555      ]
17556    },
17557    "vkCmdResolveImage": {
17558      "(VK_VERSION_1_1)": [
17559        {
17560          "vuid": "VUID-vkCmdResolveImage-commandBuffer-01837",
17561          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image"
17562        },
17563        {
17564          "vuid": "VUID-vkCmdResolveImage-commandBuffer-01838",
17565          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image"
17566        },
17567        {
17568          "vuid": "VUID-vkCmdResolveImage-commandBuffer-01839",
17569          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image"
17570        }
17571      ],
17572      "core": [
17573        {
17574          "vuid": "VUID-vkCmdResolveImage-pRegions-00255",
17575          "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"
17576        },
17577        {
17578          "vuid": "VUID-vkCmdResolveImage-srcImage-00256",
17579          "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"
17580        },
17581        {
17582          "vuid": "VUID-vkCmdResolveImage-srcImage-00257",
17583          "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>"
17584        },
17585        {
17586          "vuid": "VUID-vkCmdResolveImage-dstImage-00258",
17587          "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"
17588        },
17589        {
17590          "vuid": "VUID-vkCmdResolveImage-dstImage-00259",
17591          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>"
17592        },
17593        {
17594          "vuid": "VUID-vkCmdResolveImage-srcImageLayout-00260",
17595          "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>"
17596        },
17597        {
17598          "vuid": "VUID-vkCmdResolveImage-dstImageLayout-00262",
17599          "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>"
17600        },
17601        {
17602          "vuid": "VUID-vkCmdResolveImage-dstImage-02003",
17603          "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>"
17604        },
17605        {
17606          "vuid": "VUID-vkCmdResolveImage-srcImage-01386",
17607          "text": " <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with the same image format"
17608        },
17609        {
17610          "vuid": "VUID-vkCmdResolveImage-srcSubresource-01709",
17611          "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"
17612        },
17613        {
17614          "vuid": "VUID-vkCmdResolveImage-dstSubresource-01710",
17615          "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"
17616        },
17617        {
17618          "vuid": "VUID-vkCmdResolveImage-srcSubresource-01711",
17619          "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"
17620        },
17621        {
17622          "vuid": "VUID-vkCmdResolveImage-dstSubresource-01712",
17623          "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"
17624        },
17625        {
17626          "vuid": "VUID-vkCmdResolveImage-commandBuffer-parameter",
17627          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
17628        },
17629        {
17630          "vuid": "VUID-vkCmdResolveImage-srcImage-parameter",
17631          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
17632        },
17633        {
17634          "vuid": "VUID-vkCmdResolveImage-srcImageLayout-parameter",
17635          "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
17636        },
17637        {
17638          "vuid": "VUID-vkCmdResolveImage-dstImage-parameter",
17639          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
17640        },
17641        {
17642          "vuid": "VUID-vkCmdResolveImage-dstImageLayout-parameter",
17643          "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
17644        },
17645        {
17646          "vuid": "VUID-vkCmdResolveImage-pRegions-parameter",
17647          "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkImageResolve\">VkImageResolve</a> structures"
17648        },
17649        {
17650          "vuid": "VUID-vkCmdResolveImage-commandBuffer-recording",
17651          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17652        },
17653        {
17654          "vuid": "VUID-vkCmdResolveImage-commandBuffer-cmdpool",
17655          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
17656        },
17657        {
17658          "vuid": "VUID-vkCmdResolveImage-renderpass",
17659          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
17660        },
17661        {
17662          "vuid": "VUID-vkCmdResolveImage-regionCount-arraylength",
17663          "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
17664        },
17665        {
17666          "vuid": "VUID-vkCmdResolveImage-commonparent",
17667          "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 <a href=\"#VkDevice\">VkDevice</a>"
17668        }
17669      ],
17670      "!(VK_KHR_shared_presentable_image)": [
17671        {
17672          "vuid": "VUID-vkCmdResolveImage-srcImageLayout-00261",
17673          "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>"
17674        },
17675        {
17676          "vuid": "VUID-vkCmdResolveImage-dstImageLayout-00263",
17677          "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>"
17678        }
17679      ],
17680      "(VK_KHR_shared_presentable_image)": [
17681        {
17682          "vuid": "VUID-vkCmdResolveImage-srcImageLayout-01400",
17683          "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>"
17684        },
17685        {
17686          "vuid": "VUID-vkCmdResolveImage-dstImageLayout-01401",
17687          "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>"
17688        }
17689      ],
17690      "(VK_EXT_fragment_density_map)": [
17691        {
17692          "vuid": "VUID-vkCmdResolveImage-dstImage-02546",
17693          "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>"
17694        }
17695      ]
17696    },
17697    "VkImageResolve": {
17698      "core": [
17699        {
17700          "vuid": "VUID-VkImageResolve-aspectMask-00266",
17701          "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>"
17702        },
17703        {
17704          "vuid": "VUID-VkImageResolve-layerCount-00267",
17705          "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
17706        },
17707        {
17708          "vuid": "VUID-VkImageResolve-srcImage-00268",
17709          "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"
17710        },
17711        {
17712          "vuid": "VUID-VkImageResolve-srcOffset-00269",
17713          "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"
17714        },
17715        {
17716          "vuid": "VUID-VkImageResolve-srcOffset-00270",
17717          "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"
17718        },
17719        {
17720          "vuid": "VUID-VkImageResolve-srcImage-00271",
17721          "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>"
17722        },
17723        {
17724          "vuid": "VUID-VkImageResolve-srcOffset-00272",
17725          "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"
17726        },
17727        {
17728          "vuid": "VUID-VkImageResolve-srcImage-00273",
17729          "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>"
17730        },
17731        {
17732          "vuid": "VUID-VkImageResolve-dstOffset-00274",
17733          "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"
17734        },
17735        {
17736          "vuid": "VUID-VkImageResolve-dstOffset-00275",
17737          "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"
17738        },
17739        {
17740          "vuid": "VUID-VkImageResolve-dstImage-00276",
17741          "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>"
17742        },
17743        {
17744          "vuid": "VUID-VkImageResolve-dstOffset-00277",
17745          "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"
17746        },
17747        {
17748          "vuid": "VUID-VkImageResolve-dstImage-00278",
17749          "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>"
17750        },
17751        {
17752          "vuid": "VUID-VkImageResolve-srcSubresource-parameter",
17753          "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure"
17754        },
17755        {
17756          "vuid": "VUID-VkImageResolve-dstSubresource-parameter",
17757          "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure"
17758        }
17759      ]
17760    },
17761    "vkCmdWriteBufferMarkerAMD": {
17762      "core": [
17763        {
17764          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04074",
17765          "text": " <code>pipelineStage</code> <strong class=\"purple\">must</strong> be a <a href=\"#synchronization-pipeline-stages-supported\">valid stage</a> for the queue family that was used to create the command pool that <code>commandBuffer</code> was allocated from"
17766        },
17767        {
17768          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04075",
17769          "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
17770        },
17771        {
17772          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04076",
17773          "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
17774        },
17775        {
17776          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01798",
17777          "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>"
17778        },
17779        {
17780          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-01799",
17781          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
17782        },
17783        {
17784          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-01800",
17785          "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"
17786        },
17787        {
17788          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01801",
17789          "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
17790        }
17791      ],
17792      "(VK_EXT_conditional_rendering)": [
17793        {
17794          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04077",
17795          "text": " If the <a href=\"#features-conditionalRendering\">conditional rendering</a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>"
17796        }
17797      ],
17798      "(VK_EXT_fragment_density_map)": [
17799        {
17800          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04078",
17801          "text": " If the <a href=\"#features-fragmentDensityMap\">fragment density map</a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>"
17802        }
17803      ],
17804      "(VK_EXT_transform_feedback)": [
17805        {
17806          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04079",
17807          "text": " If the <a href=\"#features-transformFeedback\">transform feedback</a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>"
17808        }
17809      ],
17810      "(VK_NV_mesh_shader)": [
17811        {
17812          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04080",
17813          "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code> or <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
17814        }
17815      ],
17816      "(VK_NV_shading_rate_image)": [
17817        {
17818          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04081",
17819          "text": " If the <a href=\"#features-shadingRateImage\">shading rate image</a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV</code>"
17820        }
17821      ],
17822      "(VK_AMD_buffer_marker)": [
17823        {
17824          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-parameter",
17825          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
17826        },
17827        {
17828          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-parameter",
17829          "text": " <code>pipelineStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> value"
17830        },
17831        {
17832          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-parameter",
17833          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
17834        },
17835        {
17836          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-recording",
17837          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17838        },
17839        {
17840          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-cmdpool",
17841          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
17842        },
17843        {
17844          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commonparent",
17845          "text": " Both of <code>commandBuffer</code>, and <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
17846        }
17847      ]
17848    },
17849    "VkPipelineInputAssemblyStateCreateInfo": {
17850      "core": [
17851        {
17852          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00428",
17853          "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>"
17854        },
17855        {
17856          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00429",
17857          "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>"
17858        },
17859        {
17860          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00430",
17861          "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>"
17862        },
17863        {
17864          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-sType-sType",
17865          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO</code>"
17866        },
17867        {
17868          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-pNext-pNext",
17869          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
17870        },
17871        {
17872          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-flags-zerobitmask",
17873          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
17874        },
17875        {
17876          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-parameter",
17877          "text": " <code>topology</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPrimitiveTopology\">VkPrimitiveTopology</a> value"
17878        }
17879      ]
17880    },
17881    "vkCmdSetPrimitiveTopologyEXT": {
17882      "(VK_EXT_extended_dynamic_state)": [
17883        {
17884          "vuid": "VUID-vkCmdSetPrimitiveTopologyEXT-None-03347",
17885          "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled"
17886        },
17887        {
17888          "vuid": "VUID-vkCmdSetPrimitiveTopologyEXT-commandBuffer-parameter",
17889          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
17890        },
17891        {
17892          "vuid": "VUID-vkCmdSetPrimitiveTopologyEXT-primitiveTopology-parameter",
17893          "text": " <code>primitiveTopology</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPrimitiveTopology\">VkPrimitiveTopology</a> value"
17894        },
17895        {
17896          "vuid": "VUID-vkCmdSetPrimitiveTopologyEXT-commandBuffer-recording",
17897          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17898        },
17899        {
17900          "vuid": "VUID-vkCmdSetPrimitiveTopologyEXT-commandBuffer-cmdpool",
17901          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
17902        }
17903      ]
17904    },
17905    "vkCmdBindIndexBuffer": {
17906      "core": [
17907        {
17908          "vuid": "VUID-vkCmdBindIndexBuffer-offset-00431",
17909          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
17910        },
17911        {
17912          "vuid": "VUID-vkCmdBindIndexBuffer-offset-00432",
17913          "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>"
17914        },
17915        {
17916          "vuid": "VUID-vkCmdBindIndexBuffer-buffer-00433",
17917          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDEX_BUFFER_BIT</code> flag"
17918        },
17919        {
17920          "vuid": "VUID-vkCmdBindIndexBuffer-buffer-00434",
17921          "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"
17922        },
17923        {
17924          "vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-parameter",
17925          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
17926        },
17927        {
17928          "vuid": "VUID-vkCmdBindIndexBuffer-buffer-parameter",
17929          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
17930        },
17931        {
17932          "vuid": "VUID-vkCmdBindIndexBuffer-indexType-parameter",
17933          "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value"
17934        },
17935        {
17936          "vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-recording",
17937          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17938        },
17939        {
17940          "vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-cmdpool",
17941          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
17942        },
17943        {
17944          "vuid": "VUID-vkCmdBindIndexBuffer-commonparent",
17945          "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
17946        }
17947      ],
17948      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
17949        {
17950          "vuid": "VUID-vkCmdBindIndexBuffer-indexType-02507",
17951          "text": " <code>indexType</code> <strong class=\"purple\">must</strong> not be <code>VK_INDEX_TYPE_NONE_KHR</code>"
17952        }
17953      ],
17954      "(VK_EXT_index_type_uint8)": [
17955        {
17956          "vuid": "VUID-vkCmdBindIndexBuffer-indexType-02765",
17957          "text": " If <code>indexType</code> is <code>VK_INDEX_TYPE_UINT8_EXT</code>, the <a href=\"#features-indexTypeUint8\">indexTypeUint8</a> feature <strong class=\"purple\">must</strong> be enabled"
17958        }
17959      ]
17960    },
17961    "vkCmdDraw": {
17962      "core": [
17963        {
17964          "vuid": "VUID-vkCmdDraw-None-02690",
17965          "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>"
17966        },
17967        {
17968          "vuid": "VUID-vkCmdDraw-None-02691",
17969          "text": " If a <code>VkImageView</code> is accessed using atomic operations 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_STORAGE_IMAGE_ATOMIC_BIT</code>"
17970        },
17971        {
17972          "vuid": "VUID-vkCmdDraw-None-02697",
17973          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, 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>"
17974        },
17975        {
17976          "vuid": "VUID-vkCmdDraw-None-02698",
17977          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, 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>"
17978        },
17979        {
17980          "vuid": "VUID-vkCmdDraw-None-02699",
17981          "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 <code>VkPipeline</code> bound to the pipeline bind point used by this command"
17982        },
17983        {
17984          "vuid": "VUID-vkCmdDraw-None-02700",
17985          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
17986        },
17987        {
17988          "vuid": "VUID-vkCmdDraw-commandBuffer-02701",
17989          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
17990        },
17991        {
17992          "vuid": "VUID-vkCmdDraw-None-02859",
17993          "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound"
17994        },
17995        {
17996          "vuid": "VUID-vkCmdDraw-None-02702",
17997          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
17998        },
17999        {
18000          "vuid": "VUID-vkCmdDraw-None-02703",
18001          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
18002        },
18003        {
18004          "vuid": "VUID-vkCmdDraw-None-02704",
18005          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
18006        },
18007        {
18008          "vuid": "VUID-vkCmdDraw-None-02705",
18009          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
18010        },
18011        {
18012          "vuid": "VUID-vkCmdDraw-None-02706",
18013          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
18014        },
18015        {
18016          "vuid": "VUID-vkCmdDraw-None-04115",
18017          "text": " If a <code>VkImageView</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format."
18018        },
18019        {
18020          "vuid": "VUID-vkCmdDraw-renderPass-02684",
18021          "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>"
18022        },
18023        {
18024          "vuid": "VUID-vkCmdDraw-subpass-02685",
18025          "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>"
18026        },
18027        {
18028          "vuid": "VUID-vkCmdDraw-None-02686",
18029          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
18030        },
18031        {
18032          "vuid": "VUID-vkCmdDraw-None-02687",
18033          "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"
18034        },
18035        {
18036          "vuid": "VUID-vkCmdDraw-None-04007",
18037          "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 either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound"
18038        },
18039        {
18040          "vuid": "VUID-vkCmdDraw-None-04008",
18041          "text": " If the <a href=\"#features-nullDescriptor\">nullDescriptor</a> feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
18042        },
18043        {
18044          "vuid": "VUID-vkCmdDraw-None-02721",
18045          "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>"
18046        },
18047        {
18048          "vuid": "VUID-vkCmdDraw-commandBuffer-parameter",
18049          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
18050        },
18051        {
18052          "vuid": "VUID-vkCmdDraw-commandBuffer-recording",
18053          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18054        },
18055        {
18056          "vuid": "VUID-vkCmdDraw-commandBuffer-cmdpool",
18057          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
18058        },
18059        {
18060          "vuid": "VUID-vkCmdDraw-renderpass",
18061          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
18062        }
18063      ],
18064      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
18065        {
18066          "vuid": "VUID-vkCmdDraw-None-02692",
18067          "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>"
18068        }
18069      ],
18070      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
18071        {
18072          "vuid": "VUID-vkCmdDraw-None-02693",
18073          "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>"
18074        }
18075      ],
18076      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
18077        {
18078          "vuid": "VUID-vkCmdDraw-filterCubic-02694",
18079          "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>"
18080        },
18081        {
18082          "vuid": "VUID-vkCmdDraw-filterCubicMinmax-02695",
18083          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
18084        }
18085      ],
18086      "(VK_NV_corner_sampled_image)": [
18087        {
18088          "vuid": "VUID-vkCmdDraw-flags-02696",
18089          "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>"
18090        }
18091      ],
18092      "(VK_VERSION_1_1)": [
18093        {
18094          "vuid": "VUID-vkCmdDraw-commandBuffer-02707",
18095          "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource"
18096        },
18097        {
18098          "vuid": "VUID-vkCmdDraw-commandBuffer-02712",
18099          "text": " If <code>commandBuffer</code> is a protected command buffer, any resource written to by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be an unprotected resource"
18100        },
18101        {
18102          "vuid": "VUID-vkCmdDraw-commandBuffer-02713",
18103          "text": " If <code>commandBuffer</code> is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the <code>VkPipeline</code> object bound to the pipeline bind point <strong class=\"purple\">must</strong> not write to any resource"
18104        }
18105      ],
18106      "(VK_VERSION_1_1,VK_KHR_multiview)": [
18107        {
18108          "vuid": "VUID-vkCmdDraw-maxMultiviewInstanceIndex-02688",
18109          "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>"
18110        }
18111      ],
18112      "(VK_EXT_sample_locations)": [
18113        {
18114          "vuid": "VUID-vkCmdDraw-sampleLocationsEnable-02689",
18115          "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"
18116        }
18117      ],
18118      "(VK_EXT_extended_dynamic_state)": [
18119        {
18120          "vuid": "VUID-vkCmdDraw-viewportCount-03417",
18121          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, then then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline"
18122        },
18123        {
18124          "vuid": "VUID-vkCmdDraw-scissorCount-03418",
18125          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, then then <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline"
18126        },
18127        {
18128          "vuid": "VUID-vkCmdDraw-viewportCount-03419",
18129          "text": " If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> and <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code>"
18130        },
18131        {
18132          "vuid": "VUID-vkCmdDraw-primitiveTopology-03420",
18133          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPrimitiveTopologyEXT\">vkCmdSetPrimitiveTopologyEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopologyEXT</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state"
18134        }
18135      ]
18136    },
18137    "vkCmdDrawIndexed": {
18138      "core": [
18139        {
18140          "vuid": "VUID-vkCmdDrawIndexed-None-02690",
18141          "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>"
18142        },
18143        {
18144          "vuid": "VUID-vkCmdDrawIndexed-None-02691",
18145          "text": " If a <code>VkImageView</code> is accessed using atomic operations 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_STORAGE_IMAGE_ATOMIC_BIT</code>"
18146        },
18147        {
18148          "vuid": "VUID-vkCmdDrawIndexed-None-02697",
18149          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, 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>"
18150        },
18151        {
18152          "vuid": "VUID-vkCmdDrawIndexed-None-02698",
18153          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, 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>"
18154        },
18155        {
18156          "vuid": "VUID-vkCmdDrawIndexed-None-02699",
18157          "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 <code>VkPipeline</code> bound to the pipeline bind point used by this command"
18158        },
18159        {
18160          "vuid": "VUID-vkCmdDrawIndexed-None-02700",
18161          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
18162        },
18163        {
18164          "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-02701",
18165          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
18166        },
18167        {
18168          "vuid": "VUID-vkCmdDrawIndexed-None-02859",
18169          "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound"
18170        },
18171        {
18172          "vuid": "VUID-vkCmdDrawIndexed-None-02702",
18173          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
18174        },
18175        {
18176          "vuid": "VUID-vkCmdDrawIndexed-None-02703",
18177          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
18178        },
18179        {
18180          "vuid": "VUID-vkCmdDrawIndexed-None-02704",
18181          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
18182        },
18183        {
18184          "vuid": "VUID-vkCmdDrawIndexed-None-02705",
18185          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
18186        },
18187        {
18188          "vuid": "VUID-vkCmdDrawIndexed-None-02706",
18189          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
18190        },
18191        {
18192          "vuid": "VUID-vkCmdDrawIndexed-None-04115",
18193          "text": " If a <code>VkImageView</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format."
18194        },
18195        {
18196          "vuid": "VUID-vkCmdDrawIndexed-renderPass-02684",
18197          "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>"
18198        },
18199        {
18200          "vuid": "VUID-vkCmdDrawIndexed-subpass-02685",
18201          "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>"
18202        },
18203        {
18204          "vuid": "VUID-vkCmdDrawIndexed-None-02686",
18205          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
18206        },
18207        {
18208          "vuid": "VUID-vkCmdDrawIndexed-None-02687",
18209          "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"
18210        },
18211        {
18212          "vuid": "VUID-vkCmdDrawIndexed-None-04007",
18213          "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 either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound"
18214        },
18215        {
18216          "vuid": "VUID-vkCmdDrawIndexed-None-04008",
18217          "text": " If the <a href=\"#features-nullDescriptor\">nullDescriptor</a> feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
18218        },
18219        {
18220          "vuid": "VUID-vkCmdDrawIndexed-None-02721",
18221          "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>"
18222        },
18223        {
18224          "vuid": "VUID-vkCmdDrawIndexed-indexSize-00463",
18225          "text": " <span class=\"eq\">(<code>indexSize</code> {times} (<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>"
18226        },
18227        {
18228          "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-parameter",
18229          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
18230        },
18231        {
18232          "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-recording",
18233          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18234        },
18235        {
18236          "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-cmdpool",
18237          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
18238        },
18239        {
18240          "vuid": "VUID-vkCmdDrawIndexed-renderpass",
18241          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
18242        }
18243      ],
18244      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
18245        {
18246          "vuid": "VUID-vkCmdDrawIndexed-None-02692",
18247          "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>"
18248        }
18249      ],
18250      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
18251        {
18252          "vuid": "VUID-vkCmdDrawIndexed-None-02693",
18253          "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>"
18254        }
18255      ],
18256      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
18257        {
18258          "vuid": "VUID-vkCmdDrawIndexed-filterCubic-02694",
18259          "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>"
18260        },
18261        {
18262          "vuid": "VUID-vkCmdDrawIndexed-filterCubicMinmax-02695",
18263          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
18264        }
18265      ],
18266      "(VK_NV_corner_sampled_image)": [
18267        {
18268          "vuid": "VUID-vkCmdDrawIndexed-flags-02696",
18269          "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>"
18270        }
18271      ],
18272      "(VK_VERSION_1_1)": [
18273        {
18274          "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-02707",
18275          "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource"
18276        },
18277        {
18278          "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-02712",
18279          "text": " If <code>commandBuffer</code> is a protected command buffer, any resource written to by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be an unprotected resource"
18280        },
18281        {
18282          "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-02713",
18283          "text": " If <code>commandBuffer</code> is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the <code>VkPipeline</code> object bound to the pipeline bind point <strong class=\"purple\">must</strong> not write to any resource"
18284        }
18285      ],
18286      "(VK_VERSION_1_1,VK_KHR_multiview)": [
18287        {
18288          "vuid": "VUID-vkCmdDrawIndexed-maxMultiviewInstanceIndex-02688",
18289          "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>"
18290        }
18291      ],
18292      "(VK_EXT_sample_locations)": [
18293        {
18294          "vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-02689",
18295          "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"
18296        }
18297      ],
18298      "(VK_EXT_extended_dynamic_state)": [
18299        {
18300          "vuid": "VUID-vkCmdDrawIndexed-viewportCount-03417",
18301          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, then then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline"
18302        },
18303        {
18304          "vuid": "VUID-vkCmdDrawIndexed-scissorCount-03418",
18305          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, then then <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline"
18306        },
18307        {
18308          "vuid": "VUID-vkCmdDrawIndexed-viewportCount-03419",
18309          "text": " If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> and <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code>"
18310        },
18311        {
18312          "vuid": "VUID-vkCmdDrawIndexed-primitiveTopology-03420",
18313          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPrimitiveTopologyEXT\">vkCmdSetPrimitiveTopologyEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopologyEXT</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state"
18314        }
18315      ]
18316    },
18317    "vkCmdDrawIndirect": {
18318      "core": [
18319        {
18320          "vuid": "VUID-vkCmdDrawIndirect-None-02690",
18321          "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>"
18322        },
18323        {
18324          "vuid": "VUID-vkCmdDrawIndirect-None-02691",
18325          "text": " If a <code>VkImageView</code> is accessed using atomic operations 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_STORAGE_IMAGE_ATOMIC_BIT</code>"
18326        },
18327        {
18328          "vuid": "VUID-vkCmdDrawIndirect-None-02697",
18329          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, 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>"
18330        },
18331        {
18332          "vuid": "VUID-vkCmdDrawIndirect-None-02698",
18333          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, 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>"
18334        },
18335        {
18336          "vuid": "VUID-vkCmdDrawIndirect-None-02699",
18337          "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 <code>VkPipeline</code> bound to the pipeline bind point used by this command"
18338        },
18339        {
18340          "vuid": "VUID-vkCmdDrawIndirect-None-02700",
18341          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
18342        },
18343        {
18344          "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-02701",
18345          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
18346        },
18347        {
18348          "vuid": "VUID-vkCmdDrawIndirect-None-02859",
18349          "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound"
18350        },
18351        {
18352          "vuid": "VUID-vkCmdDrawIndirect-None-02702",
18353          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
18354        },
18355        {
18356          "vuid": "VUID-vkCmdDrawIndirect-None-02703",
18357          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
18358        },
18359        {
18360          "vuid": "VUID-vkCmdDrawIndirect-None-02704",
18361          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
18362        },
18363        {
18364          "vuid": "VUID-vkCmdDrawIndirect-None-02705",
18365          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
18366        },
18367        {
18368          "vuid": "VUID-vkCmdDrawIndirect-None-02706",
18369          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
18370        },
18371        {
18372          "vuid": "VUID-vkCmdDrawIndirect-None-04115",
18373          "text": " If a <code>VkImageView</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format."
18374        },
18375        {
18376          "vuid": "VUID-vkCmdDrawIndirect-renderPass-02684",
18377          "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>"
18378        },
18379        {
18380          "vuid": "VUID-vkCmdDrawIndirect-subpass-02685",
18381          "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>"
18382        },
18383        {
18384          "vuid": "VUID-vkCmdDrawIndirect-None-02686",
18385          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
18386        },
18387        {
18388          "vuid": "VUID-vkCmdDrawIndirect-None-02687",
18389          "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"
18390        },
18391        {
18392          "vuid": "VUID-vkCmdDrawIndirect-None-04007",
18393          "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 either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound"
18394        },
18395        {
18396          "vuid": "VUID-vkCmdDrawIndirect-None-04008",
18397          "text": " If the <a href=\"#features-nullDescriptor\">nullDescriptor</a> feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
18398        },
18399        {
18400          "vuid": "VUID-vkCmdDrawIndirect-None-02721",
18401          "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>"
18402        },
18403        {
18404          "vuid": "VUID-vkCmdDrawIndirect-buffer-02708",
18405          "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"
18406        },
18407        {
18408          "vuid": "VUID-vkCmdDrawIndirect-buffer-02709",
18409          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
18410        },
18411        {
18412          "vuid": "VUID-vkCmdDrawIndirect-offset-02710",
18413          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
18414        },
18415        {
18416          "vuid": "VUID-vkCmdDrawIndirect-drawCount-02718",
18417          "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>"
18418        },
18419        {
18420          "vuid": "VUID-vkCmdDrawIndirect-drawCount-02719",
18421          "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
18422        },
18423        {
18424          "vuid": "VUID-vkCmdDrawIndirect-firstInstance-00478",
18425          "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>"
18426        },
18427        {
18428          "vuid": "VUID-vkCmdDrawIndirect-drawCount-00476",
18429          "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>)"
18430        },
18431        {
18432          "vuid": "VUID-vkCmdDrawIndirect-drawCount-00487",
18433          "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>"
18434        },
18435        {
18436          "vuid": "VUID-vkCmdDrawIndirect-drawCount-00488",
18437          "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>"
18438        },
18439        {
18440          "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-parameter",
18441          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
18442        },
18443        {
18444          "vuid": "VUID-vkCmdDrawIndirect-buffer-parameter",
18445          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
18446        },
18447        {
18448          "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-recording",
18449          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18450        },
18451        {
18452          "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-cmdpool",
18453          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
18454        },
18455        {
18456          "vuid": "VUID-vkCmdDrawIndirect-renderpass",
18457          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
18458        },
18459        {
18460          "vuid": "VUID-vkCmdDrawIndirect-commonparent",
18461          "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
18462        }
18463      ],
18464      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
18465        {
18466          "vuid": "VUID-vkCmdDrawIndirect-None-02692",
18467          "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>"
18468        }
18469      ],
18470      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
18471        {
18472          "vuid": "VUID-vkCmdDrawIndirect-None-02693",
18473          "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>"
18474        }
18475      ],
18476      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
18477        {
18478          "vuid": "VUID-vkCmdDrawIndirect-filterCubic-02694",
18479          "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>"
18480        },
18481        {
18482          "vuid": "VUID-vkCmdDrawIndirect-filterCubicMinmax-02695",
18483          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
18484        }
18485      ],
18486      "(VK_NV_corner_sampled_image)": [
18487        {
18488          "vuid": "VUID-vkCmdDrawIndirect-flags-02696",
18489          "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>"
18490        }
18491      ],
18492      "(VK_VERSION_1_1)": [
18493        {
18494          "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-02707",
18495          "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource"
18496        },
18497        {
18498          "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-02711",
18499          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
18500        }
18501      ],
18502      "(VK_VERSION_1_1,VK_KHR_multiview)": [
18503        {
18504          "vuid": "VUID-vkCmdDrawIndirect-maxMultiviewInstanceIndex-02688",
18505          "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>"
18506        }
18507      ],
18508      "(VK_EXT_sample_locations)": [
18509        {
18510          "vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-02689",
18511          "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"
18512        }
18513      ],
18514      "(VK_EXT_extended_dynamic_state)": [
18515        {
18516          "vuid": "VUID-vkCmdDrawIndirect-viewportCount-03417",
18517          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, then then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline"
18518        },
18519        {
18520          "vuid": "VUID-vkCmdDrawIndirect-scissorCount-03418",
18521          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, then then <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline"
18522        },
18523        {
18524          "vuid": "VUID-vkCmdDrawIndirect-viewportCount-03419",
18525          "text": " If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> and <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code>"
18526        },
18527        {
18528          "vuid": "VUID-vkCmdDrawIndirect-primitiveTopology-03420",
18529          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPrimitiveTopologyEXT\">vkCmdSetPrimitiveTopologyEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopologyEXT</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state"
18530        }
18531      ]
18532    },
18533    "VkDrawIndirectCommand": {
18534      "core": [
18535        {
18536          "vuid": "VUID-VkDrawIndirectCommand-None-00500",
18537          "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>"
18538        },
18539        {
18540          "vuid": "VUID-VkDrawIndirectCommand-firstInstance-00501",
18541          "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>"
18542        }
18543      ]
18544    },
18545    "vkCmdDrawIndirectCount": {
18546      "core": [
18547        {
18548          "vuid": "VUID-vkCmdDrawIndirectCount-None-02690",
18549          "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>"
18550        },
18551        {
18552          "vuid": "VUID-vkCmdDrawIndirectCount-None-02691",
18553          "text": " If a <code>VkImageView</code> is accessed using atomic operations 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_STORAGE_IMAGE_ATOMIC_BIT</code>"
18554        },
18555        {
18556          "vuid": "VUID-vkCmdDrawIndirectCount-None-02697",
18557          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, 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>"
18558        },
18559        {
18560          "vuid": "VUID-vkCmdDrawIndirectCount-None-02698",
18561          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, 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>"
18562        },
18563        {
18564          "vuid": "VUID-vkCmdDrawIndirectCount-None-02699",
18565          "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 <code>VkPipeline</code> bound to the pipeline bind point used by this command"
18566        },
18567        {
18568          "vuid": "VUID-vkCmdDrawIndirectCount-None-02700",
18569          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
18570        },
18571        {
18572          "vuid": "VUID-vkCmdDrawIndirectCount-commandBuffer-02701",
18573          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
18574        },
18575        {
18576          "vuid": "VUID-vkCmdDrawIndirectCount-None-02859",
18577          "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound"
18578        },
18579        {
18580          "vuid": "VUID-vkCmdDrawIndirectCount-None-02702",
18581          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
18582        },
18583        {
18584          "vuid": "VUID-vkCmdDrawIndirectCount-None-02703",
18585          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
18586        },
18587        {
18588          "vuid": "VUID-vkCmdDrawIndirectCount-None-02704",
18589          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
18590        },
18591        {
18592          "vuid": "VUID-vkCmdDrawIndirectCount-None-02705",
18593          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
18594        },
18595        {
18596          "vuid": "VUID-vkCmdDrawIndirectCount-None-02706",
18597          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
18598        },
18599        {
18600          "vuid": "VUID-vkCmdDrawIndirectCount-None-04115",
18601          "text": " If a <code>VkImageView</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format."
18602        },
18603        {
18604          "vuid": "VUID-vkCmdDrawIndirectCount-renderPass-02684",
18605          "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>"
18606        },
18607        {
18608          "vuid": "VUID-vkCmdDrawIndirectCount-subpass-02685",
18609          "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>"
18610        },
18611        {
18612          "vuid": "VUID-vkCmdDrawIndirectCount-None-02686",
18613          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
18614        },
18615        {
18616          "vuid": "VUID-vkCmdDrawIndirectCount-None-02687",
18617          "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"
18618        },
18619        {
18620          "vuid": "VUID-vkCmdDrawIndirectCount-None-04007",
18621          "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 either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound"
18622        },
18623        {
18624          "vuid": "VUID-vkCmdDrawIndirectCount-None-04008",
18625          "text": " If the <a href=\"#features-nullDescriptor\">nullDescriptor</a> feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
18626        },
18627        {
18628          "vuid": "VUID-vkCmdDrawIndirectCount-None-02721",
18629          "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>"
18630        },
18631        {
18632          "vuid": "VUID-vkCmdDrawIndirectCount-buffer-02708",
18633          "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"
18634        },
18635        {
18636          "vuid": "VUID-vkCmdDrawIndirectCount-buffer-02709",
18637          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
18638        },
18639        {
18640          "vuid": "VUID-vkCmdDrawIndirectCount-offset-02710",
18641          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
18642        },
18643        {
18644          "vuid": "VUID-vkCmdDrawIndirectCount-countBuffer-02714",
18645          "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"
18646        },
18647        {
18648          "vuid": "VUID-vkCmdDrawIndirectCount-countBuffer-02715",
18649          "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
18650        },
18651        {
18652          "vuid": "VUID-vkCmdDrawIndirectCount-countBufferOffset-02716",
18653          "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
18654        },
18655        {
18656          "vuid": "VUID-vkCmdDrawIndirectCount-countBuffer-02717",
18657          "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>"
18658        },
18659        {
18660          "vuid": "VUID-vkCmdDrawIndirectCount-stride-03110",
18661          "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>)"
18662        },
18663        {
18664          "vuid": "VUID-vkCmdDrawIndirectCount-maxDrawCount-03111",
18665          "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>"
18666        },
18667        {
18668          "vuid": "VUID-vkCmdDrawIndirectCount-countBuffer-03121",
18669          "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>"
18670        },
18671        {
18672          "vuid": "VUID-vkCmdDrawIndirectCount-countBuffer-03122",
18673          "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>"
18674        }
18675      ],
18676      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
18677        {
18678          "vuid": "VUID-vkCmdDrawIndirectCount-None-02692",
18679          "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>"
18680        }
18681      ],
18682      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
18683        {
18684          "vuid": "VUID-vkCmdDrawIndirectCount-None-02693",
18685          "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>"
18686        }
18687      ],
18688      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
18689        {
18690          "vuid": "VUID-vkCmdDrawIndirectCount-filterCubic-02694",
18691          "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>"
18692        },
18693        {
18694          "vuid": "VUID-vkCmdDrawIndirectCount-filterCubicMinmax-02695",
18695          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
18696        }
18697      ],
18698      "(VK_NV_corner_sampled_image)": [
18699        {
18700          "vuid": "VUID-vkCmdDrawIndirectCount-flags-02696",
18701          "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>"
18702        }
18703      ],
18704      "(VK_VERSION_1_1)": [
18705        {
18706          "vuid": "VUID-vkCmdDrawIndirectCount-commandBuffer-02707",
18707          "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource"
18708        },
18709        {
18710          "vuid": "VUID-vkCmdDrawIndirectCount-commandBuffer-02711",
18711          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
18712        }
18713      ],
18714      "(VK_VERSION_1_1,VK_KHR_multiview)": [
18715        {
18716          "vuid": "VUID-vkCmdDrawIndirectCount-maxMultiviewInstanceIndex-02688",
18717          "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>"
18718        }
18719      ],
18720      "(VK_EXT_sample_locations)": [
18721        {
18722          "vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-02689",
18723          "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"
18724        }
18725      ],
18726      "(VK_EXT_extended_dynamic_state)": [
18727        {
18728          "vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-03417",
18729          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, then then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline"
18730        },
18731        {
18732          "vuid": "VUID-vkCmdDrawIndirectCount-scissorCount-03418",
18733          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, then then <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline"
18734        },
18735        {
18736          "vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-03419",
18737          "text": " If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> and <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code>"
18738        },
18739        {
18740          "vuid": "VUID-vkCmdDrawIndirectCount-primitiveTopology-03420",
18741          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPrimitiveTopologyEXT\">vkCmdSetPrimitiveTopologyEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopologyEXT</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state"
18742        }
18743      ],
18744      "(VK_VERSION_1_2)": [
18745        {
18746          "vuid": "VUID-vkCmdDrawIndirectCount-None-02836",
18747          "text": " If <a href=\"#features-drawIndirectCount\">drawIndirectCount</a> is not enabled this function <strong class=\"purple\">must</strong> not be used"
18748        }
18749      ],
18750      "(VK_VERSION_1_2,VK_KHR_draw_indirect_count)": [
18751        {
18752          "vuid": "VUID-vkCmdDrawIndirectCount-commandBuffer-parameter",
18753          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
18754        },
18755        {
18756          "vuid": "VUID-vkCmdDrawIndirectCount-buffer-parameter",
18757          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
18758        },
18759        {
18760          "vuid": "VUID-vkCmdDrawIndirectCount-countBuffer-parameter",
18761          "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
18762        },
18763        {
18764          "vuid": "VUID-vkCmdDrawIndirectCount-commandBuffer-recording",
18765          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18766        },
18767        {
18768          "vuid": "VUID-vkCmdDrawIndirectCount-commandBuffer-cmdpool",
18769          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
18770        },
18771        {
18772          "vuid": "VUID-vkCmdDrawIndirectCount-renderpass",
18773          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
18774        },
18775        {
18776          "vuid": "VUID-vkCmdDrawIndirectCount-commonparent",
18777          "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 <a href=\"#VkDevice\">VkDevice</a>"
18778        }
18779      ]
18780    },
18781    "vkCmdDrawIndexedIndirect": {
18782      "core": [
18783        {
18784          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02690",
18785          "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>"
18786        },
18787        {
18788          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02691",
18789          "text": " If a <code>VkImageView</code> is accessed using atomic operations 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_STORAGE_IMAGE_ATOMIC_BIT</code>"
18790        },
18791        {
18792          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02697",
18793          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, 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>"
18794        },
18795        {
18796          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02698",
18797          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, 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>"
18798        },
18799        {
18800          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02699",
18801          "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 <code>VkPipeline</code> bound to the pipeline bind point used by this command"
18802        },
18803        {
18804          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02700",
18805          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
18806        },
18807        {
18808          "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02701",
18809          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
18810        },
18811        {
18812          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02859",
18813          "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound"
18814        },
18815        {
18816          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02702",
18817          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
18818        },
18819        {
18820          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02703",
18821          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
18822        },
18823        {
18824          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02704",
18825          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
18826        },
18827        {
18828          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02705",
18829          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
18830        },
18831        {
18832          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02706",
18833          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
18834        },
18835        {
18836          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-04115",
18837          "text": " If a <code>VkImageView</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format."
18838        },
18839        {
18840          "vuid": "VUID-vkCmdDrawIndexedIndirect-renderPass-02684",
18841          "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>"
18842        },
18843        {
18844          "vuid": "VUID-vkCmdDrawIndexedIndirect-subpass-02685",
18845          "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>"
18846        },
18847        {
18848          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02686",
18849          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
18850        },
18851        {
18852          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02687",
18853          "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"
18854        },
18855        {
18856          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-04007",
18857          "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 either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound"
18858        },
18859        {
18860          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-04008",
18861          "text": " If the <a href=\"#features-nullDescriptor\">nullDescriptor</a> feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
18862        },
18863        {
18864          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02721",
18865          "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>"
18866        },
18867        {
18868          "vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-02708",
18869          "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"
18870        },
18871        {
18872          "vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-02709",
18873          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
18874        },
18875        {
18876          "vuid": "VUID-vkCmdDrawIndexedIndirect-offset-02710",
18877          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
18878        },
18879        {
18880          "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-02718",
18881          "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>"
18882        },
18883        {
18884          "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-02719",
18885          "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
18886        },
18887        {
18888          "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00528",
18889          "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>)"
18890        },
18891        {
18892          "vuid": "VUID-vkCmdDrawIndexedIndirect-firstInstance-00530",
18893          "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>"
18894        },
18895        {
18896          "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00539",
18897          "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>"
18898        },
18899        {
18900          "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00540",
18901          "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>"
18902        },
18903        {
18904          "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-parameter",
18905          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
18906        },
18907        {
18908          "vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-parameter",
18909          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
18910        },
18911        {
18912          "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-recording",
18913          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18914        },
18915        {
18916          "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-cmdpool",
18917          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
18918        },
18919        {
18920          "vuid": "VUID-vkCmdDrawIndexedIndirect-renderpass",
18921          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
18922        },
18923        {
18924          "vuid": "VUID-vkCmdDrawIndexedIndirect-commonparent",
18925          "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
18926        }
18927      ],
18928      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
18929        {
18930          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02692",
18931          "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>"
18932        }
18933      ],
18934      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
18935        {
18936          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02693",
18937          "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>"
18938        }
18939      ],
18940      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
18941        {
18942          "vuid": "VUID-vkCmdDrawIndexedIndirect-filterCubic-02694",
18943          "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>"
18944        },
18945        {
18946          "vuid": "VUID-vkCmdDrawIndexedIndirect-filterCubicMinmax-02695",
18947          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
18948        }
18949      ],
18950      "(VK_NV_corner_sampled_image)": [
18951        {
18952          "vuid": "VUID-vkCmdDrawIndexedIndirect-flags-02696",
18953          "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>"
18954        }
18955      ],
18956      "(VK_VERSION_1_1)": [
18957        {
18958          "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02707",
18959          "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource"
18960        },
18961        {
18962          "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02711",
18963          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
18964        }
18965      ],
18966      "(VK_VERSION_1_1,VK_KHR_multiview)": [
18967        {
18968          "vuid": "VUID-vkCmdDrawIndexedIndirect-maxMultiviewInstanceIndex-02688",
18969          "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>"
18970        }
18971      ],
18972      "(VK_EXT_sample_locations)": [
18973        {
18974          "vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-02689",
18975          "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"
18976        }
18977      ],
18978      "(VK_EXT_extended_dynamic_state)": [
18979        {
18980          "vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-03417",
18981          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, then then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline"
18982        },
18983        {
18984          "vuid": "VUID-vkCmdDrawIndexedIndirect-scissorCount-03418",
18985          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, then then <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline"
18986        },
18987        {
18988          "vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-03419",
18989          "text": " If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> and <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code>"
18990        },
18991        {
18992          "vuid": "VUID-vkCmdDrawIndexedIndirect-primitiveTopology-03420",
18993          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPrimitiveTopologyEXT\">vkCmdSetPrimitiveTopologyEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopologyEXT</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state"
18994        }
18995      ],
18996      "(VK_VERSION_1_2)": [
18997        {
18998          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02837",
18999          "text": " If <a href=\"#features-drawIndirectCount\">drawIndirectCount</a> is not enabled this function <strong class=\"purple\">must</strong> not be used"
19000        }
19001      ]
19002    },
19003    "VkDrawIndexedIndirectCommand": {
19004      "core": [
19005        {
19006          "vuid": "VUID-VkDrawIndexedIndirectCommand-None-00552",
19007          "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>"
19008        },
19009        {
19010          "vuid": "VUID-VkDrawIndexedIndirectCommand-indexSize-00553",
19011          "text": " <span class=\"eq\">(<code>indexSize</code> {times} (<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>"
19012        },
19013        {
19014          "vuid": "VUID-VkDrawIndexedIndirectCommand-firstInstance-00554",
19015          "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>"
19016        }
19017      ]
19018    },
19019    "vkCmdDrawIndexedIndirectCount": {
19020      "core": [
19021        {
19022          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02690",
19023          "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>"
19024        },
19025        {
19026          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02691",
19027          "text": " If a <code>VkImageView</code> is accessed using atomic operations 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_STORAGE_IMAGE_ATOMIC_BIT</code>"
19028        },
19029        {
19030          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02697",
19031          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, 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>"
19032        },
19033        {
19034          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02698",
19035          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, 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>"
19036        },
19037        {
19038          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02699",
19039          "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 <code>VkPipeline</code> bound to the pipeline bind point used by this command"
19040        },
19041        {
19042          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02700",
19043          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
19044        },
19045        {
19046          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02701",
19047          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
19048        },
19049        {
19050          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02859",
19051          "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound"
19052        },
19053        {
19054          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02702",
19055          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
19056        },
19057        {
19058          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02703",
19059          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
19060        },
19061        {
19062          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02704",
19063          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
19064        },
19065        {
19066          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02705",
19067          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
19068        },
19069        {
19070          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02706",
19071          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
19072        },
19073        {
19074          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04115",
19075          "text": " If a <code>VkImageView</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format."
19076        },
19077        {
19078          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-renderPass-02684",
19079          "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>"
19080        },
19081        {
19082          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-subpass-02685",
19083          "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>"
19084        },
19085        {
19086          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02686",
19087          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
19088        },
19089        {
19090          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02687",
19091          "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"
19092        },
19093        {
19094          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04007",
19095          "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 either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound"
19096        },
19097        {
19098          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04008",
19099          "text": " If the <a href=\"#features-nullDescriptor\">nullDescriptor</a> feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
19100        },
19101        {
19102          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02721",
19103          "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>"
19104        },
19105        {
19106          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-buffer-02708",
19107          "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"
19108        },
19109        {
19110          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-buffer-02709",
19111          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
19112        },
19113        {
19114          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-offset-02710",
19115          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
19116        },
19117        {
19118          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02714",
19119          "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"
19120        },
19121        {
19122          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02715",
19123          "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
19124        },
19125        {
19126          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBufferOffset-02716",
19127          "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
19128        },
19129        {
19130          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02717",
19131          "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>"
19132        },
19133        {
19134          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-stride-03142",
19135          "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>)"
19136        },
19137        {
19138          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-maxDrawCount-03143",
19139          "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>"
19140        },
19141        {
19142          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-03153",
19143          "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>"
19144        },
19145        {
19146          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-03154",
19147          "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>"
19148        }
19149      ],
19150      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
19151        {
19152          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02692",
19153          "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>"
19154        }
19155      ],
19156      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
19157        {
19158          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02693",
19159          "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>"
19160        }
19161      ],
19162      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
19163        {
19164          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-filterCubic-02694",
19165          "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>"
19166        },
19167        {
19168          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-filterCubicMinmax-02695",
19169          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
19170        }
19171      ],
19172      "(VK_NV_corner_sampled_image)": [
19173        {
19174          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-flags-02696",
19175          "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>"
19176        }
19177      ],
19178      "(VK_VERSION_1_1)": [
19179        {
19180          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02707",
19181          "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource"
19182        },
19183        {
19184          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02711",
19185          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
19186        }
19187      ],
19188      "(VK_VERSION_1_1,VK_KHR_multiview)": [
19189        {
19190          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-maxMultiviewInstanceIndex-02688",
19191          "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>"
19192        }
19193      ],
19194      "(VK_EXT_sample_locations)": [
19195        {
19196          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-02689",
19197          "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"
19198        }
19199      ],
19200      "(VK_EXT_extended_dynamic_state)": [
19201        {
19202          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-03417",
19203          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, then then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline"
19204        },
19205        {
19206          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-scissorCount-03418",
19207          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, then then <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline"
19208        },
19209        {
19210          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-03419",
19211          "text": " If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> and <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code>"
19212        },
19213        {
19214          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-primitiveTopology-03420",
19215          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPrimitiveTopologyEXT\">vkCmdSetPrimitiveTopologyEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopologyEXT</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state"
19216        }
19217      ],
19218      "(VK_VERSION_1_2,VK_KHR_draw_indirect_count)": [
19219        {
19220          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-parameter",
19221          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
19222        },
19223        {
19224          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-buffer-parameter",
19225          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
19226        },
19227        {
19228          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-parameter",
19229          "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
19230        },
19231        {
19232          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-recording",
19233          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
19234        },
19235        {
19236          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-cmdpool",
19237          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
19238        },
19239        {
19240          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-renderpass",
19241          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
19242        },
19243        {
19244          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-commonparent",
19245          "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 <a href=\"#VkDevice\">VkDevice</a>"
19246        }
19247      ]
19248    },
19249    "vkCmdDrawIndirectByteCountEXT": {
19250      "core": [
19251        {
19252          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02690",
19253          "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>"
19254        },
19255        {
19256          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02691",
19257          "text": " If a <code>VkImageView</code> is accessed using atomic operations 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_STORAGE_IMAGE_ATOMIC_BIT</code>"
19258        },
19259        {
19260          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02697",
19261          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, 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>"
19262        },
19263        {
19264          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02698",
19265          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, 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>"
19266        },
19267        {
19268          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02699",
19269          "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 <code>VkPipeline</code> bound to the pipeline bind point used by this command"
19270        },
19271        {
19272          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02700",
19273          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
19274        },
19275        {
19276          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02701",
19277          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
19278        },
19279        {
19280          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02859",
19281          "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound"
19282        },
19283        {
19284          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02702",
19285          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
19286        },
19287        {
19288          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02703",
19289          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
19290        },
19291        {
19292          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02704",
19293          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
19294        },
19295        {
19296          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02705",
19297          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
19298        },
19299        {
19300          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02706",
19301          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
19302        },
19303        {
19304          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04115",
19305          "text": " If a <code>VkImageView</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format."
19306        },
19307        {
19308          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-renderPass-02684",
19309          "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>"
19310        },
19311        {
19312          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-subpass-02685",
19313          "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>"
19314        },
19315        {
19316          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02686",
19317          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
19318        },
19319        {
19320          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02687",
19321          "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"
19322        },
19323        {
19324          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04007",
19325          "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 either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound"
19326        },
19327        {
19328          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04008",
19329          "text": " If the <a href=\"#features-nullDescriptor\">nullDescriptor</a> feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
19330        },
19331        {
19332          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02721",
19333          "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>"
19334        },
19335        {
19336          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-transformFeedback-02287",
19337          "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled"
19338        },
19339        {
19340          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-transformFeedbackDraw-02288",
19341          "text": " The implementation <strong class=\"purple\">must</strong> support <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>transformFeedbackDraw</code>"
19342        },
19343        {
19344          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-vertexStride-02289",
19345          "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>"
19346        },
19347        {
19348          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-02290",
19349          "text": " <code>counterBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
19350        }
19351      ],
19352      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
19353        {
19354          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02692",
19355          "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>"
19356        }
19357      ],
19358      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
19359        {
19360          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02693",
19361          "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>"
19362        }
19363      ],
19364      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
19365        {
19366          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-filterCubic-02694",
19367          "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>"
19368        },
19369        {
19370          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-filterCubicMinmax-02695",
19371          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
19372        }
19373      ],
19374      "(VK_NV_corner_sampled_image)": [
19375        {
19376          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-flags-02696",
19377          "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>"
19378        }
19379      ],
19380      "(VK_VERSION_1_1)": [
19381        {
19382          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02707",
19383          "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource"
19384        },
19385        {
19386          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02646",
19387          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
19388        }
19389      ],
19390      "(VK_VERSION_1_1,VK_KHR_multiview)": [
19391        {
19392          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-maxMultiviewInstanceIndex-02688",
19393          "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>"
19394        }
19395      ],
19396      "(VK_EXT_sample_locations)": [
19397        {
19398          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-02689",
19399          "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"
19400        }
19401      ],
19402      "(VK_EXT_extended_dynamic_state)": [
19403        {
19404          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-03417",
19405          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, then then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline"
19406        },
19407        {
19408          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-scissorCount-03418",
19409          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, then then <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline"
19410        },
19411        {
19412          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-03419",
19413          "text": " If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> and <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code>"
19414        },
19415        {
19416          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-primitiveTopology-03420",
19417          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPrimitiveTopologyEXT\">vkCmdSetPrimitiveTopologyEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopologyEXT</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state"
19418        }
19419      ],
19420      "(VK_EXT_transform_feedback)": [
19421        {
19422          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-parameter",
19423          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
19424        },
19425        {
19426          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-parameter",
19427          "text": " <code>counterBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
19428        },
19429        {
19430          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-recording",
19431          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
19432        },
19433        {
19434          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-cmdpool",
19435          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
19436        },
19437        {
19438          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-renderpass",
19439          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
19440        },
19441        {
19442          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commonparent",
19443          "text": " Both of <code>commandBuffer</code>, and <code>counterBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
19444        }
19445      ]
19446    },
19447    "vkCmdBeginConditionalRenderingEXT": {
19448      "(VK_EXT_conditional_rendering)": [
19449        {
19450          "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-None-01980",
19451          "text": " Conditional rendering <strong class=\"purple\">must</strong> not already be <a href=\"#active-conditional-rendering\">active</a>"
19452        },
19453        {
19454          "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-parameter",
19455          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
19456        },
19457        {
19458          "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-pConditionalRenderingBegin-parameter",
19459          "text": " <code>pConditionalRenderingBegin</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkConditionalRenderingBeginInfoEXT\">VkConditionalRenderingBeginInfoEXT</a> structure"
19460        },
19461        {
19462          "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-recording",
19463          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
19464        },
19465        {
19466          "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-cmdpool",
19467          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
19468        }
19469      ]
19470    },
19471    "VkConditionalRenderingBeginInfoEXT": {
19472      "(VK_EXT_conditional_rendering)": [
19473        {
19474          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-01981",
19475          "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"
19476        },
19477        {
19478          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-01982",
19479          "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"
19480        },
19481        {
19482          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-offset-01983",
19483          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code> by at least 32 bits"
19484        },
19485        {
19486          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-offset-01984",
19487          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of 4"
19488        },
19489        {
19490          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-sType-sType",
19491          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT</code>"
19492        },
19493        {
19494          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-pNext-pNext",
19495          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
19496        },
19497        {
19498          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-parameter",
19499          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
19500        },
19501        {
19502          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-flags-parameter",
19503          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkConditionalRenderingFlagBitsEXT\">VkConditionalRenderingFlagBitsEXT</a> values"
19504        }
19505      ]
19506    },
19507    "vkCmdEndConditionalRenderingEXT": {
19508      "(VK_EXT_conditional_rendering)": [
19509        {
19510          "vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01985",
19511          "text": " Conditional rendering <strong class=\"purple\">must</strong> be <a href=\"#active-conditional-rendering\">active</a>"
19512        },
19513        {
19514          "vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01986",
19515          "text": " If conditional rendering was made <a href=\"#active-conditional-rendering\">active</a> outside of a render pass instance, it <strong class=\"purple\">must</strong> not be ended inside a render pass instance"
19516        },
19517        {
19518          "vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01987",
19519          "text": " If conditional rendering was made <a href=\"#active-conditional-rendering\">active</a> within a subpass it <strong class=\"purple\">must</strong> be ended in the same subpass"
19520        },
19521        {
19522          "vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-parameter",
19523          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
19524        },
19525        {
19526          "vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-recording",
19527          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
19528        },
19529        {
19530          "vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-cmdpool",
19531          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
19532        }
19533      ]
19534    },
19535    "vkCmdDrawMeshTasksNV": {
19536      "core": [
19537        {
19538          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02690",
19539          "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>"
19540        },
19541        {
19542          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02691",
19543          "text": " If a <code>VkImageView</code> is accessed using atomic operations 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_STORAGE_IMAGE_ATOMIC_BIT</code>"
19544        },
19545        {
19546          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02697",
19547          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, 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>"
19548        },
19549        {
19550          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02698",
19551          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, 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>"
19552        },
19553        {
19554          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02699",
19555          "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 <code>VkPipeline</code> bound to the pipeline bind point used by this command"
19556        },
19557        {
19558          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02700",
19559          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
19560        },
19561        {
19562          "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-02701",
19563          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
19564        },
19565        {
19566          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02859",
19567          "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound"
19568        },
19569        {
19570          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02702",
19571          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
19572        },
19573        {
19574          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02703",
19575          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
19576        },
19577        {
19578          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02704",
19579          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
19580        },
19581        {
19582          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02705",
19583          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
19584        },
19585        {
19586          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02706",
19587          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
19588        },
19589        {
19590          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-04115",
19591          "text": " If a <code>VkImageView</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format."
19592        },
19593        {
19594          "vuid": "VUID-vkCmdDrawMeshTasksNV-renderPass-02684",
19595          "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>"
19596        },
19597        {
19598          "vuid": "VUID-vkCmdDrawMeshTasksNV-subpass-02685",
19599          "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>"
19600        },
19601        {
19602          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02686",
19603          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
19604        },
19605        {
19606          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02687",
19607          "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"
19608        },
19609        {
19610          "vuid": "VUID-vkCmdDrawMeshTasksNV-taskCount-02119",
19611          "text": " <code>taskCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesNV</code>::<code>maxDrawMeshTasksCount</code>"
19612        }
19613      ],
19614      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
19615        {
19616          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02692",
19617          "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>"
19618        }
19619      ],
19620      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
19621        {
19622          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02693",
19623          "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>"
19624        }
19625      ],
19626      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
19627        {
19628          "vuid": "VUID-vkCmdDrawMeshTasksNV-filterCubic-02694",
19629          "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>"
19630        },
19631        {
19632          "vuid": "VUID-vkCmdDrawMeshTasksNV-filterCubicMinmax-02695",
19633          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
19634        }
19635      ],
19636      "(VK_NV_corner_sampled_image)": [
19637        {
19638          "vuid": "VUID-vkCmdDrawMeshTasksNV-flags-02696",
19639          "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>"
19640        }
19641      ],
19642      "(VK_VERSION_1_1)": [
19643        {
19644          "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-02707",
19645          "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource"
19646        }
19647      ],
19648      "(VK_VERSION_1_1,VK_KHR_multiview)": [
19649        {
19650          "vuid": "VUID-vkCmdDrawMeshTasksNV-maxMultiviewInstanceIndex-02688",
19651          "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>"
19652        }
19653      ],
19654      "(VK_EXT_sample_locations)": [
19655        {
19656          "vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-02689",
19657          "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"
19658        }
19659      ],
19660      "(VK_EXT_extended_dynamic_state)": [
19661        {
19662          "vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-03417",
19663          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, then then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline"
19664        },
19665        {
19666          "vuid": "VUID-vkCmdDrawMeshTasksNV-scissorCount-03418",
19667          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, then then <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline"
19668        },
19669        {
19670          "vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-03419",
19671          "text": " If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> and <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code>"
19672        },
19673        {
19674          "vuid": "VUID-vkCmdDrawMeshTasksNV-primitiveTopology-03420",
19675          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPrimitiveTopologyEXT\">vkCmdSetPrimitiveTopologyEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopologyEXT</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state"
19676        }
19677      ],
19678      "(VK_NV_mesh_shader)": [
19679        {
19680          "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-parameter",
19681          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
19682        },
19683        {
19684          "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-recording",
19685          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
19686        },
19687        {
19688          "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-cmdpool",
19689          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
19690        },
19691        {
19692          "vuid": "VUID-vkCmdDrawMeshTasksNV-renderpass",
19693          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
19694        }
19695      ]
19696    },
19697    "vkCmdDrawMeshTasksIndirectNV": {
19698      "core": [
19699        {
19700          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02690",
19701          "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>"
19702        },
19703        {
19704          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02691",
19705          "text": " If a <code>VkImageView</code> is accessed using atomic operations 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_STORAGE_IMAGE_ATOMIC_BIT</code>"
19706        },
19707        {
19708          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02697",
19709          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, 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>"
19710        },
19711        {
19712          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02698",
19713          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, 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>"
19714        },
19715        {
19716          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02699",
19717          "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 <code>VkPipeline</code> bound to the pipeline bind point used by this command"
19718        },
19719        {
19720          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02700",
19721          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
19722        },
19723        {
19724          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02701",
19725          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
19726        },
19727        {
19728          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02859",
19729          "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound"
19730        },
19731        {
19732          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02702",
19733          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
19734        },
19735        {
19736          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02703",
19737          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
19738        },
19739        {
19740          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02704",
19741          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
19742        },
19743        {
19744          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02705",
19745          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
19746        },
19747        {
19748          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02706",
19749          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
19750        },
19751        {
19752          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-04115",
19753          "text": " If a <code>VkImageView</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format."
19754        },
19755        {
19756          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-renderPass-02684",
19757          "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>"
19758        },
19759        {
19760          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-subpass-02685",
19761          "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>"
19762        },
19763        {
19764          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02686",
19765          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
19766        },
19767        {
19768          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02687",
19769          "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"
19770        },
19771        {
19772          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02708",
19773          "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"
19774        },
19775        {
19776          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02709",
19777          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
19778        },
19779        {
19780          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-offset-02710",
19781          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
19782        },
19783        {
19784          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02718",
19785          "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>"
19786        },
19787        {
19788          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02719",
19789          "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
19790        },
19791        {
19792          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02146",
19793          "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>)"
19794        },
19795        {
19796          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02156",
19797          "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>"
19798        },
19799        {
19800          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02157",
19801          "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>"
19802        }
19803      ],
19804      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
19805        {
19806          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02692",
19807          "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>"
19808        }
19809      ],
19810      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
19811        {
19812          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02693",
19813          "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>"
19814        }
19815      ],
19816      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
19817        {
19818          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-filterCubic-02694",
19819          "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>"
19820        },
19821        {
19822          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-filterCubicMinmax-02695",
19823          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
19824        }
19825      ],
19826      "(VK_NV_corner_sampled_image)": [
19827        {
19828          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-flags-02696",
19829          "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>"
19830        }
19831      ],
19832      "(VK_VERSION_1_1)": [
19833        {
19834          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02707",
19835          "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource"
19836        },
19837        {
19838          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02711",
19839          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
19840        }
19841      ],
19842      "(VK_VERSION_1_1,VK_KHR_multiview)": [
19843        {
19844          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-maxMultiviewInstanceIndex-02688",
19845          "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>"
19846        }
19847      ],
19848      "(VK_EXT_sample_locations)": [
19849        {
19850          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-02689",
19851          "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"
19852        }
19853      ],
19854      "(VK_EXT_extended_dynamic_state)": [
19855        {
19856          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-03417",
19857          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, then then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline"
19858        },
19859        {
19860          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-scissorCount-03418",
19861          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, then then <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline"
19862        },
19863        {
19864          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-03419",
19865          "text": " If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> and <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code>"
19866        },
19867        {
19868          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-primitiveTopology-03420",
19869          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPrimitiveTopologyEXT\">vkCmdSetPrimitiveTopologyEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopologyEXT</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state"
19870        }
19871      ],
19872      "(VK_NV_mesh_shader)": [
19873        {
19874          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-parameter",
19875          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
19876        },
19877        {
19878          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-parameter",
19879          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
19880        },
19881        {
19882          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-recording",
19883          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
19884        },
19885        {
19886          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-cmdpool",
19887          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
19888        },
19889        {
19890          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-renderpass",
19891          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
19892        },
19893        {
19894          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commonparent",
19895          "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
19896        }
19897      ]
19898    },
19899    "VkDrawMeshTasksIndirectCommandNV": {
19900      "(VK_NV_mesh_shader)": [
19901        {
19902          "vuid": "VUID-VkDrawMeshTasksIndirectCommandNV-taskCount-02175",
19903          "text": " <code>taskCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesNV</code>::<code>maxDrawMeshTasksCount</code>"
19904        }
19905      ]
19906    },
19907    "vkCmdDrawMeshTasksIndirectCountNV": {
19908      "core": [
19909        {
19910          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02690",
19911          "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>"
19912        },
19913        {
19914          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02691",
19915          "text": " If a <code>VkImageView</code> is accessed using atomic operations 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_STORAGE_IMAGE_ATOMIC_BIT</code>"
19916        },
19917        {
19918          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02697",
19919          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, 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>"
19920        },
19921        {
19922          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02698",
19923          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, 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>"
19924        },
19925        {
19926          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02699",
19927          "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 <code>VkPipeline</code> bound to the pipeline bind point used by this command"
19928        },
19929        {
19930          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02700",
19931          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
19932        },
19933        {
19934          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02701",
19935          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
19936        },
19937        {
19938          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02859",
19939          "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound"
19940        },
19941        {
19942          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02702",
19943          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
19944        },
19945        {
19946          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02703",
19947          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
19948        },
19949        {
19950          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02704",
19951          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
19952        },
19953        {
19954          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02705",
19955          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
19956        },
19957        {
19958          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02706",
19959          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
19960        },
19961        {
19962          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04115",
19963          "text": " If a <code>VkImageView</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format."
19964        },
19965        {
19966          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-renderPass-02684",
19967          "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>"
19968        },
19969        {
19970          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-subpass-02685",
19971          "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>"
19972        },
19973        {
19974          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02686",
19975          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
19976        },
19977        {
19978          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02687",
19979          "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"
19980        },
19981        {
19982          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02708",
19983          "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"
19984        },
19985        {
19986          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02709",
19987          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
19988        },
19989        {
19990          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-offset-02710",
19991          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
19992        },
19993        {
19994          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02714",
19995          "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"
19996        },
19997        {
19998          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02715",
19999          "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
20000        },
20001        {
20002          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBufferOffset-02716",
20003          "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
20004        },
20005        {
20006          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02717",
20007          "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>"
20008        },
20009        {
20010          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-stride-02182",
20011          "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>)"
20012        },
20013        {
20014          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-maxDrawCount-02183",
20015          "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>"
20016        },
20017        {
20018          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02191",
20019          "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>"
20020        },
20021        {
20022          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02192",
20023          "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>"
20024        }
20025      ],
20026      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
20027        {
20028          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02692",
20029          "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>"
20030        }
20031      ],
20032      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
20033        {
20034          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02693",
20035          "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>"
20036        }
20037      ],
20038      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
20039        {
20040          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-filterCubic-02694",
20041          "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>"
20042        },
20043        {
20044          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-filterCubicMinmax-02695",
20045          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
20046        }
20047      ],
20048      "(VK_NV_corner_sampled_image)": [
20049        {
20050          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-flags-02696",
20051          "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>"
20052        }
20053      ],
20054      "(VK_VERSION_1_1)": [
20055        {
20056          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02707",
20057          "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource"
20058        },
20059        {
20060          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02711",
20061          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
20062        }
20063      ],
20064      "(VK_VERSION_1_1,VK_KHR_multiview)": [
20065        {
20066          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-maxMultiviewInstanceIndex-02688",
20067          "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>"
20068        }
20069      ],
20070      "(VK_EXT_sample_locations)": [
20071        {
20072          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-02689",
20073          "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"
20074        }
20075      ],
20076      "(VK_EXT_extended_dynamic_state)": [
20077        {
20078          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-03417",
20079          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, then then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline"
20080        },
20081        {
20082          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-scissorCount-03418",
20083          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, then then <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline"
20084        },
20085        {
20086          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-03419",
20087          "text": " If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> and <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code>"
20088        },
20089        {
20090          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-primitiveTopology-03420",
20091          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPrimitiveTopologyEXT\">vkCmdSetPrimitiveTopologyEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopologyEXT</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state"
20092        }
20093      ],
20094      "(VK_NV_mesh_shader)": [
20095        {
20096          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-parameter",
20097          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
20098        },
20099        {
20100          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-parameter",
20101          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
20102        },
20103        {
20104          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-parameter",
20105          "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
20106        },
20107        {
20108          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-recording",
20109          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
20110        },
20111        {
20112          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-cmdpool",
20113          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
20114        },
20115        {
20116          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-renderpass",
20117          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
20118        },
20119        {
20120          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commonparent",
20121          "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 <a href=\"#VkDevice\">VkDevice</a>"
20122        }
20123      ]
20124    },
20125    "VkPipelineVertexInputStateCreateInfo": {
20126      "core": [
20127        {
20128          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-vertexBindingDescriptionCount-00613",
20129          "text": " <code>vertexBindingDescriptionCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
20130        },
20131        {
20132          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-vertexAttributeDescriptionCount-00614",
20133          "text": " <code>vertexAttributeDescriptionCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributes</code>"
20134        },
20135        {
20136          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-binding-00615",
20137          "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>"
20138        },
20139        {
20140          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-00616",
20141          "text": " All elements of <code>pVertexBindingDescriptions</code> <strong class=\"purple\">must</strong> describe distinct binding numbers"
20142        },
20143        {
20144          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-00617",
20145          "text": " All elements of <code>pVertexAttributeDescriptions</code> <strong class=\"purple\">must</strong> describe distinct attribute locations"
20146        },
20147        {
20148          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-sType-sType",
20149          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO</code>"
20150        },
20151        {
20152          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pNext-pNext",
20153          "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>"
20154        },
20155        {
20156          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-sType-unique",
20157          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
20158        },
20159        {
20160          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-flags-zerobitmask",
20161          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
20162        },
20163        {
20164          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-parameter",
20165          "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 <a href=\"#VkVertexInputBindingDescription\">VkVertexInputBindingDescription</a> structures"
20166        },
20167        {
20168          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-parameter",
20169          "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 <a href=\"#VkVertexInputAttributeDescription\">VkVertexInputAttributeDescription</a> structures"
20170        }
20171      ]
20172    },
20173    "VkVertexInputBindingDescription": {
20174      "core": [
20175        {
20176          "vuid": "VUID-VkVertexInputBindingDescription-binding-00618",
20177          "text": " <code>binding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
20178        },
20179        {
20180          "vuid": "VUID-VkVertexInputBindingDescription-stride-00619",
20181          "text": " <code>stride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindingStride</code>"
20182        },
20183        {
20184          "vuid": "VUID-VkVertexInputBindingDescription-inputRate-parameter",
20185          "text": " <code>inputRate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVertexInputRate\">VkVertexInputRate</a> value"
20186        }
20187      ]
20188    },
20189    "VkVertexInputAttributeDescription": {
20190      "core": [
20191        {
20192          "vuid": "VUID-VkVertexInputAttributeDescription-location-00620",
20193          "text": " <code>location</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributes</code>"
20194        },
20195        {
20196          "vuid": "VUID-VkVertexInputAttributeDescription-binding-00621",
20197          "text": " <code>binding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
20198        },
20199        {
20200          "vuid": "VUID-VkVertexInputAttributeDescription-offset-00622",
20201          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributeOffset</code>"
20202        },
20203        {
20204          "vuid": "VUID-VkVertexInputAttributeDescription-format-00623",
20205          "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>"
20206        },
20207        {
20208          "vuid": "VUID-VkVertexInputAttributeDescription-format-parameter",
20209          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
20210        }
20211      ]
20212    },
20213    "vkCmdBindVertexBuffers": {
20214      "core": [
20215        {
20216          "vuid": "VUID-vkCmdBindVertexBuffers-firstBinding-00624",
20217          "text": " <code>firstBinding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
20218        },
20219        {
20220          "vuid": "VUID-vkCmdBindVertexBuffers-firstBinding-00625",
20221          "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>"
20222        },
20223        {
20224          "vuid": "VUID-vkCmdBindVertexBuffers-pOffsets-00626",
20225          "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>"
20226        },
20227        {
20228          "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-00627",
20229          "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"
20230        },
20231        {
20232          "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-00628",
20233          "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"
20234        },
20235        {
20236          "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-04001",
20237          "text": " If the <a href=\"#features-nullDescriptor\">nullDescriptor</a> feature is not enabled, all elements of <code>pBuffers</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
20238        },
20239        {
20240          "vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-parameter",
20241          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
20242        },
20243        {
20244          "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-parameter",
20245          "text": " <code>pBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <a href=\"#VkBuffer\">VkBuffer</a> handles"
20246        },
20247        {
20248          "vuid": "VUID-vkCmdBindVertexBuffers-pOffsets-parameter",
20249          "text": " <code>pOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> <code>VkDeviceSize</code> values"
20250        },
20251        {
20252          "vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-recording",
20253          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
20254        },
20255        {
20256          "vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-cmdpool",
20257          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
20258        },
20259        {
20260          "vuid": "VUID-vkCmdBindVertexBuffers-bindingCount-arraylength",
20261          "text": " <code>bindingCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
20262        },
20263        {
20264          "vuid": "VUID-vkCmdBindVertexBuffers-commonparent",
20265          "text": " Both of <code>commandBuffer</code>, and the elements of <code>pBuffers</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
20266        }
20267      ],
20268      "(VK_EXT_robustness2)": [
20269        {
20270          "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-04002",
20271          "text": " If an element of <code>pBuffers</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of <code>pOffsets</code> <strong class=\"purple\">must</strong> be zero"
20272        }
20273      ]
20274    },
20275    "vkCmdBindVertexBuffers2EXT": {
20276      "(VK_EXT_extended_dynamic_state)": [
20277        {
20278          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-firstBinding-03355",
20279          "text": " <code>firstBinding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
20280        },
20281        {
20282          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-firstBinding-03356",
20283          "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>"
20284        },
20285        {
20286          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pOffsets-03357",
20287          "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>"
20288        },
20289        {
20290          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pSizes-03358",
20291          "text": " If <code>pSizes</code> is not <code>NULL</code>, all elements of <code>pOffsets</code> plus <code>pSizes</code> <strong class=\"purple\">must</strong> be less than or equal to the size of the corresponding element in <code>pBuffers</code>"
20292        },
20293        {
20294          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pBuffers-03359",
20295          "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"
20296        },
20297        {
20298          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pBuffers-03360",
20299          "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"
20300        },
20301        {
20302          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pBuffers-04111",
20303          "text": " If the <a href=\"#features-nullDescriptor\">nullDescriptor</a> feature is not enabled, all elements of <code>pBuffers</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
20304        },
20305        {
20306          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pStrides-03361",
20307          "text": " If the bound pipeline state object was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT</code> dynamic state enabled then <code>pStrides</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>, otherwise <code>pStrides</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20308        },
20309        {
20310          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pStrides-03362",
20311          "text": " If <code>pStrides</code> is not <code>NULL</code> each element of <code>pStrides</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindingStride</code>"
20312        },
20313        {
20314          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pStrides-03363",
20315          "text": " If <code>pStrides</code> is not <code>NULL</code> each element of <code>pStrides</code> <strong class=\"purple\">must</strong> be greater than or equal to the maximum extent of of all vertex input attributes fetched from the corresponding binding, where the extent is calculated as the VkVertexInputAttributeDescription::offset plus VkVertexInputAttributeDescription::format size"
20316        },
20317        {
20318          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-commandBuffer-parameter",
20319          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
20320        },
20321        {
20322          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pBuffers-parameter",
20323          "text": " <code>pBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid <a href=\"#VkBuffer\">VkBuffer</a> handles"
20324        },
20325        {
20326          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pOffsets-parameter",
20327          "text": " <code>pOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> <code>VkDeviceSize</code> values"
20328        },
20329        {
20330          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pSizes-parameter",
20331          "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"
20332        },
20333        {
20334          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pStrides-parameter",
20335          "text": " If <code>pStrides</code> is not <code>NULL</code>, <code>pStrides</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> <code>VkDeviceSize</code> values"
20336        },
20337        {
20338          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-commandBuffer-recording",
20339          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
20340        },
20341        {
20342          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-commandBuffer-cmdpool",
20343          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
20344        },
20345        {
20346          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-bindingCount-arraylength",
20347          "text": " If any of <code>pSizes</code>, or <code>pStrides</code> are not <code>NULL</code>, <code>bindingCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
20348        },
20349        {
20350          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-commonparent",
20351          "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 <a href=\"#VkDevice\">VkDevice</a>"
20352        }
20353      ],
20354      "(VK_EXT_extended_dynamic_state)+(VK_EXT_robustness2)": [
20355        {
20356          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pBuffers-04112",
20357          "text": " If an element of <code>pBuffers</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of <code>pOffsets</code> <strong class=\"purple\">must</strong> be zero"
20358        }
20359      ]
20360    },
20361    "VkPipelineVertexInputDivisorStateCreateInfoEXT": {
20362      "(VK_EXT_vertex_attribute_divisor)": [
20363        {
20364          "vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-sType-sType",
20365          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT</code>"
20366        },
20367        {
20368          "vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-pVertexBindingDivisors-parameter",
20369          "text": " <code>pVertexBindingDivisors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>vertexBindingDivisorCount</code> <a href=\"#VkVertexInputBindingDivisorDescriptionEXT\">VkVertexInputBindingDivisorDescriptionEXT</a> structures"
20370        },
20371        {
20372          "vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-vertexBindingDivisorCount-arraylength",
20373          "text": " <code>vertexBindingDivisorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
20374        }
20375      ]
20376    },
20377    "VkVertexInputBindingDivisorDescriptionEXT": {
20378      "(VK_EXT_vertex_attribute_divisor)": [
20379        {
20380          "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-binding-01869",
20381          "text": " <code>binding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
20382        },
20383        {
20384          "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-vertexAttributeInstanceRateZeroDivisor-02228",
20385          "text": " If the <code>vertexAttributeInstanceRateZeroDivisor</code> feature is not enabled, <code>divisor</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
20386        },
20387        {
20388          "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-vertexAttributeInstanceRateDivisor-02229",
20389          "text": " If the <code>vertexAttributeInstanceRateDivisor</code> feature is not enabled, <code>divisor</code> <strong class=\"purple\">must</strong> be <code>1</code>"
20390        },
20391        {
20392          "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-divisor-01870",
20393          "text": " <code>divisor</code> <strong class=\"purple\">must</strong> be a value between <code>0</code> and <code>VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT</code>::<code>maxVertexAttribDivisor</code>, inclusive"
20394        },
20395        {
20396          "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-inputRate-01871",
20397          "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>"
20398        }
20399      ]
20400    },
20401    "VkPipelineTessellationStateCreateInfo": {
20402      "core": [
20403        {
20404          "vuid": "VUID-VkPipelineTessellationStateCreateInfo-patchControlPoints-01214",
20405          "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>"
20406        },
20407        {
20408          "vuid": "VUID-VkPipelineTessellationStateCreateInfo-sType-sType",
20409          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO</code>"
20410        },
20411        {
20412          "vuid": "VUID-VkPipelineTessellationStateCreateInfo-pNext-pNext",
20413          "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>"
20414        },
20415        {
20416          "vuid": "VUID-VkPipelineTessellationStateCreateInfo-sType-unique",
20417          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
20418        },
20419        {
20420          "vuid": "VUID-VkPipelineTessellationStateCreateInfo-flags-zerobitmask",
20421          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
20422        }
20423      ]
20424    },
20425    "VkPipelineTessellationDomainOriginStateCreateInfo": {
20426      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
20427        {
20428          "vuid": "VUID-VkPipelineTessellationDomainOriginStateCreateInfo-sType-sType",
20429          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO</code>"
20430        },
20431        {
20432          "vuid": "VUID-VkPipelineTessellationDomainOriginStateCreateInfo-domainOrigin-parameter",
20433          "text": " <code>domainOrigin</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkTessellationDomainOrigin\">VkTessellationDomainOrigin</a> value"
20434        }
20435      ]
20436    },
20437    "vkCmdBindTransformFeedbackBuffersEXT": {
20438      "(VK_EXT_transform_feedback)": [
20439        {
20440          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-transformFeedback-02355",
20441          "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled"
20442        },
20443        {
20444          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02356",
20445          "text": " <code>firstBinding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>"
20446        },
20447        {
20448          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02357",
20449          "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>"
20450        },
20451        {
20452          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02358",
20453          "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>"
20454        },
20455        {
20456          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02359",
20457          "text": " All elements of <code>pOffsets</code> <strong class=\"purple\">must</strong> be a multiple of 4"
20458        },
20459        {
20460          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02360",
20461          "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"
20462        },
20463        {
20464          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pSize-02361",
20465          "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>"
20466        },
20467        {
20468          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pSizes-02362",
20469          "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>"
20470        },
20471        {
20472          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02363",
20473          "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>"
20474        },
20475        {
20476          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02364",
20477          "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"
20478        },
20479        {
20480          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-None-02365",
20481          "text": " Transform feedback <strong class=\"purple\">must</strong> not be active when the <code>vkCmdBindTransformFeedbackBuffersEXT</code> command is recorded"
20482        },
20483        {
20484          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-parameter",
20485          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
20486        },
20487        {
20488          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-parameter",
20489          "text": " <code>pBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid <a href=\"#VkBuffer\">VkBuffer</a> handles"
20490        },
20491        {
20492          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-parameter",
20493          "text": " <code>pOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> <code>VkDeviceSize</code> values"
20494        },
20495        {
20496          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-recording",
20497          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
20498        },
20499        {
20500          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-cmdpool",
20501          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
20502        },
20503        {
20504          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-bindingCount-arraylength",
20505          "text": " <code>bindingCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
20506        },
20507        {
20508          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commonparent",
20509          "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 <a href=\"#VkDevice\">VkDevice</a>"
20510        }
20511      ]
20512    },
20513    "vkCmdBeginTransformFeedbackEXT": {
20514      "(VK_EXT_transform_feedback)": [
20515        {
20516          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-transformFeedback-02366",
20517          "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled"
20518        },
20519        {
20520          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-None-02367",
20521          "text": " Transform feedback <strong class=\"purple\">must</strong> not be active"
20522        },
20523        {
20524          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-02368",
20525          "text": " <code>firstCounterBuffer</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>"
20526        },
20527        {
20528          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-02369",
20529          "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>"
20530        },
20531        {
20532          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-counterBufferCount-02607",
20533          "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>"
20534        },
20535        {
20536          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-02370",
20537          "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"
20538        },
20539        {
20540          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffer-02371",
20541          "text": " If <code>pCounterBuffer</code> is <code>NULL</code>, then <code>pCounterBufferOffsets</code> <strong class=\"purple\">must</strong> also be <code>NULL</code>"
20542        },
20543        {
20544          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffers-02372",
20545          "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>"
20546        },
20547        {
20548          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-parameter",
20549          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
20550        },
20551        {
20552          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-parameter",
20553          "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"
20554        },
20555        {
20556          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-recording",
20557          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
20558        },
20559        {
20560          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-cmdpool",
20561          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
20562        },
20563        {
20564          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-renderpass",
20565          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
20566        },
20567        {
20568          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commonparent",
20569          "text": " Both of <code>commandBuffer</code>, and the elements of <code>pCounterBuffers</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
20570        }
20571      ],
20572      "(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [
20573        {
20574          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-None-02373",
20575          "text": " Transform feedback <strong class=\"purple\">must</strong> not be made active in a render pass instance with multiview enabled"
20576        }
20577      ]
20578    },
20579    "vkCmdEndTransformFeedbackEXT": {
20580      "(VK_EXT_transform_feedback)": [
20581        {
20582          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-transformFeedback-02374",
20583          "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled"
20584        },
20585        {
20586          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-None-02375",
20587          "text": " Transform feedback <strong class=\"purple\">must</strong> be active"
20588        },
20589        {
20590          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02376",
20591          "text": " <code>firstCounterBuffer</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>"
20592        },
20593        {
20594          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02377",
20595          "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>"
20596        },
20597        {
20598          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-counterBufferCount-02608",
20599          "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>"
20600        },
20601        {
20602          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-02378",
20603          "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"
20604        },
20605        {
20606          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffer-02379",
20607          "text": " If <code>pCounterBuffer</code> is <code>NULL</code>, then <code>pCounterBufferOffsets</code> <strong class=\"purple\">must</strong> also be <code>NULL</code>"
20608        },
20609        {
20610          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffers-02380",
20611          "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>"
20612        },
20613        {
20614          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-parameter",
20615          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
20616        },
20617        {
20618          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-parameter",
20619          "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"
20620        },
20621        {
20622          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-recording",
20623          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
20624        },
20625        {
20626          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-cmdpool",
20627          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
20628        },
20629        {
20630          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-renderpass",
20631          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
20632        },
20633        {
20634          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commonparent",
20635          "text": " Both of <code>commandBuffer</code>, and the elements of <code>pCounterBuffers</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
20636        }
20637      ]
20638    },
20639    "VkPipelineViewportSwizzleStateCreateInfoNV": {
20640      "(VK_NV_viewport_swizzle)": [
20641        {
20642          "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-viewportCount-01215",
20643          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> match the <code>viewportCount</code> set in <code>VkPipelineViewportStateCreateInfo</code>"
20644        },
20645        {
20646          "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-sType-sType",
20647          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV</code>"
20648        },
20649        {
20650          "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-flags-zerobitmask",
20651          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
20652        },
20653        {
20654          "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-pViewportSwizzles-parameter",
20655          "text": " <code>pViewportSwizzles</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <a href=\"#VkViewportSwizzleNV\">VkViewportSwizzleNV</a> structures"
20656        },
20657        {
20658          "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-viewportCount-arraylength",
20659          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
20660        }
20661      ]
20662    },
20663    "VkViewportSwizzleNV": {
20664      "(VK_NV_viewport_swizzle)": [
20665        {
20666          "vuid": "VUID-VkViewportSwizzleNV-x-parameter",
20667          "text": " <code>x</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value"
20668        },
20669        {
20670          "vuid": "VUID-VkViewportSwizzleNV-y-parameter",
20671          "text": " <code>y</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value"
20672        },
20673        {
20674          "vuid": "VUID-VkViewportSwizzleNV-z-parameter",
20675          "text": " <code>z</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value"
20676        },
20677        {
20678          "vuid": "VUID-VkViewportSwizzleNV-w-parameter",
20679          "text": " <code>w</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value"
20680        }
20681      ]
20682    },
20683    "VkPipelineViewportWScalingStateCreateInfoNV": {
20684      "(VK_NV_clip_space_w_scaling)": [
20685        {
20686          "vuid": "VUID-VkPipelineViewportWScalingStateCreateInfoNV-sType-sType",
20687          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV</code>"
20688        },
20689        {
20690          "vuid": "VUID-VkPipelineViewportWScalingStateCreateInfoNV-viewportCount-arraylength",
20691          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
20692        }
20693      ]
20694    },
20695    "vkCmdSetViewportWScalingNV": {
20696      "(VK_NV_clip_space_w_scaling)": [
20697        {
20698          "vuid": "VUID-vkCmdSetViewportWScalingNV-firstViewport-01323",
20699          "text": " <code>firstViewport</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxViewports</code>"
20700        },
20701        {
20702          "vuid": "VUID-vkCmdSetViewportWScalingNV-firstViewport-01324",
20703          "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"
20704        },
20705        {
20706          "vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-parameter",
20707          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
20708        },
20709        {
20710          "vuid": "VUID-vkCmdSetViewportWScalingNV-pViewportWScalings-parameter",
20711          "text": " <code>pViewportWScalings</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> <a href=\"#VkViewportWScalingNV\">VkViewportWScalingNV</a> structures"
20712        },
20713        {
20714          "vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-recording",
20715          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
20716        },
20717        {
20718          "vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-cmdpool",
20719          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
20720        },
20721        {
20722          "vuid": "VUID-vkCmdSetViewportWScalingNV-viewportCount-arraylength",
20723          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
20724        }
20725      ]
20726    },
20727    "VkPipelineViewportStateCreateInfo": {
20728      "core": [
20729        {
20730          "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-01216",
20731          "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>"
20732        },
20733        {
20734          "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01217",
20735          "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>"
20736        },
20737        {
20738          "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-01218",
20739          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive"
20740        },
20741        {
20742          "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01219",
20743          "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive"
20744        },
20745        {
20746          "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01220",
20747          "text": " <code>scissorCount</code> and <code>viewportCount</code> <strong class=\"purple\">must</strong> be identical"
20748        },
20749        {
20750          "vuid": "VUID-VkPipelineViewportStateCreateInfo-x-02821",
20751          "text": " The <code>x</code> and <code>y</code> members of <code>offset</code> member of any element of <code>pScissors</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>0</code>"
20752        },
20753        {
20754          "vuid": "VUID-VkPipelineViewportStateCreateInfo-offset-02822",
20755          "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 for any element of <code>pScissors</code>"
20756        },
20757        {
20758          "vuid": "VUID-VkPipelineViewportStateCreateInfo-offset-02823",
20759          "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 for any element of <code>pScissors</code>"
20760        },
20761        {
20762          "vuid": "VUID-VkPipelineViewportStateCreateInfo-sType-sType",
20763          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO</code>"
20764        },
20765        {
20766          "vuid": "VUID-VkPipelineViewportStateCreateInfo-pNext-pNext",
20767          "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>"
20768        },
20769        {
20770          "vuid": "VUID-VkPipelineViewportStateCreateInfo-sType-unique",
20771          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
20772        },
20773        {
20774          "vuid": "VUID-VkPipelineViewportStateCreateInfo-flags-zerobitmask",
20775          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
20776        },
20777        {
20778          "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-arraylength",
20779          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
20780        },
20781        {
20782          "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-arraylength",
20783          "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
20784        }
20785      ],
20786      "(VK_NV_clip_space_w_scaling)": [
20787        {
20788          "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportWScalingEnable-01726",
20789          "text": " If the <code>viewportWScalingEnable</code> member of a <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> structure included in 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>"
20790        }
20791      ]
20792    },
20793    "vkCmdSetViewportWithCountEXT": {
20794      "(VK_EXT_extended_dynamic_state)": [
20795        {
20796          "vuid": "VUID-vkCmdSetViewportWithCountEXT-None-03393",
20797          "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled"
20798        },
20799        {
20800          "vuid": "VUID-vkCmdSetViewportWithCountEXT-viewportCount-03394",
20801          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive"
20802        },
20803        {
20804          "vuid": "VUID-vkCmdSetViewportWithCountEXT-viewportCount-03395",
20805          "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>"
20806        },
20807        {
20808          "vuid": "VUID-vkCmdSetViewportWithCountEXT-commandBuffer-parameter",
20809          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
20810        },
20811        {
20812          "vuid": "VUID-vkCmdSetViewportWithCountEXT-pViewports-parameter",
20813          "text": " <code>pViewports</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <a href=\"#VkViewport\">VkViewport</a> structures"
20814        },
20815        {
20816          "vuid": "VUID-vkCmdSetViewportWithCountEXT-commandBuffer-recording",
20817          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
20818        },
20819        {
20820          "vuid": "VUID-vkCmdSetViewportWithCountEXT-commandBuffer-cmdpool",
20821          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
20822        },
20823        {
20824          "vuid": "VUID-vkCmdSetViewportWithCountEXT-viewportCount-arraylength",
20825          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
20826        }
20827      ]
20828    },
20829    "vkCmdSetScissorWithCountEXT": {
20830      "(VK_EXT_extended_dynamic_state)": [
20831        {
20832          "vuid": "VUID-vkCmdSetScissorWithCountEXT-None-03396",
20833          "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled"
20834        },
20835        {
20836          "vuid": "VUID-vkCmdSetScissorWithCountEXT-scissorCount-03397",
20837          "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive"
20838        },
20839        {
20840          "vuid": "VUID-vkCmdSetScissorWithCountEXT-scissorCount-03398",
20841          "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>"
20842        },
20843        {
20844          "vuid": "VUID-vkCmdSetScissorWithCountEXT-x-03399",
20845          "text": " The <code>x</code> and <code>y</code> members of <code>offset</code> member of any element of <code>pScissors</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>0</code>"
20846        },
20847        {
20848          "vuid": "VUID-vkCmdSetScissorWithCountEXT-offset-03400",
20849          "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 for any element of <code>pScissors</code>"
20850        },
20851        {
20852          "vuid": "VUID-vkCmdSetScissorWithCountEXT-offset-03401",
20853          "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 for any element of <code>pScissors</code>"
20854        },
20855        {
20856          "vuid": "VUID-vkCmdSetScissorWithCountEXT-commandBuffer-parameter",
20857          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
20858        },
20859        {
20860          "vuid": "VUID-vkCmdSetScissorWithCountEXT-pScissors-parameter",
20861          "text": " <code>pScissors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>scissorCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures"
20862        },
20863        {
20864          "vuid": "VUID-vkCmdSetScissorWithCountEXT-commandBuffer-recording",
20865          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
20866        },
20867        {
20868          "vuid": "VUID-vkCmdSetScissorWithCountEXT-commandBuffer-cmdpool",
20869          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
20870        },
20871        {
20872          "vuid": "VUID-vkCmdSetScissorWithCountEXT-scissorCount-arraylength",
20873          "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
20874        }
20875      ]
20876    },
20877    "vkCmdSetViewport": {
20878      "core": [
20879        {
20880          "vuid": "VUID-vkCmdSetViewport-firstViewport-01222",
20881          "text": " <code>firstViewport</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
20882        },
20883        {
20884          "vuid": "VUID-vkCmdSetViewport-firstViewport-01223",
20885          "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"
20886        },
20887        {
20888          "vuid": "VUID-vkCmdSetViewport-firstViewport-01224",
20889          "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>"
20890        },
20891        {
20892          "vuid": "VUID-vkCmdSetViewport-viewportCount-01225",
20893          "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>"
20894        },
20895        {
20896          "vuid": "VUID-vkCmdSetViewport-commandBuffer-parameter",
20897          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
20898        },
20899        {
20900          "vuid": "VUID-vkCmdSetViewport-pViewports-parameter",
20901          "text": " <code>pViewports</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <a href=\"#VkViewport\">VkViewport</a> structures"
20902        },
20903        {
20904          "vuid": "VUID-vkCmdSetViewport-commandBuffer-recording",
20905          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
20906        },
20907        {
20908          "vuid": "VUID-vkCmdSetViewport-commandBuffer-cmdpool",
20909          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
20910        },
20911        {
20912          "vuid": "VUID-vkCmdSetViewport-viewportCount-arraylength",
20913          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
20914        }
20915      ]
20916    },
20917    "VkViewport": {
20918      "core": [
20919        {
20920          "vuid": "VUID-VkViewport-width-01770",
20921          "text": " <code>width</code> <strong class=\"purple\">must</strong> be greater than <code>0.0</code>"
20922        },
20923        {
20924          "vuid": "VUID-VkViewport-width-01771",
20925          "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewportDimensions</code>[0]"
20926        },
20927        {
20928          "vuid": "VUID-VkViewport-height-01773",
20929          "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]"
20930        },
20931        {
20932          "vuid": "VUID-VkViewport-x-01774",
20933          "text": " <code>x</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>viewportBoundsRange</code>[0]"
20934        },
20935        {
20936          "vuid": "VUID-VkViewport-x-01232",
20937          "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]"
20938        },
20939        {
20940          "vuid": "VUID-VkViewport-y-01775",
20941          "text": " <code>y</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>viewportBoundsRange</code>[0]"
20942        },
20943        {
20944          "vuid": "VUID-VkViewport-y-01233",
20945          "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]"
20946        }
20947      ],
20948      "!(VK_VERSION_1_1,VK_KHR_maintenance1,VK_AMD_negative_viewport_height)": [
20949        {
20950          "vuid": "VUID-VkViewport-height-01772",
20951          "text": " <code>height</code> <strong class=\"purple\">must</strong> be greater than <code>0.0</code>"
20952        }
20953      ],
20954      "(VK_VERSION_1_1,VK_KHR_maintenance1,VK_AMD_negative_viewport_height)": [
20955        {
20956          "vuid": "VUID-VkViewport-y-01776",
20957          "text": " <code>y</code> <strong class=\"purple\">must</strong> be less than or equal to <code>viewportBoundsRange</code>[1]"
20958        },
20959        {
20960          "vuid": "VUID-VkViewport-y-01777",
20961          "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]"
20962        }
20963      ],
20964      "(VK_EXT_depth_range_unrestricted)": [
20965        {
20966          "vuid": "VUID-VkViewport-minDepth-01234",
20967          "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"
20968        },
20969        {
20970          "vuid": "VUID-VkViewport-maxDepth-01235",
20971          "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"
20972        }
20973      ],
20974      "!(VK_EXT_depth_range_unrestricted)": [
20975        {
20976          "vuid": "VUID-VkViewport-minDepth-02540",
20977          "text": " <code>minDepth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
20978        },
20979        {
20980          "vuid": "VUID-VkViewport-maxDepth-02541",
20981          "text": " <code>maxDepth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
20982        }
20983      ]
20984    },
20985    "VkPipelineRasterizationStateCreateInfo": {
20986      "core": [
20987        {
20988          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-depthClampEnable-00782",
20989          "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>"
20990        },
20991        {
20992          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-sType-sType",
20993          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO</code>"
20994        },
20995        {
20996          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-pNext-pNext",
20997          "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=\"#VkPipelineRasterizationLineStateCreateInfoEXT\">VkPipelineRasterizationLineStateCreateInfoEXT</a>, <a href=\"#VkPipelineRasterizationStateRasterizationOrderAMD\">VkPipelineRasterizationStateRasterizationOrderAMD</a>, or <a href=\"#VkPipelineRasterizationStateStreamCreateInfoEXT\">VkPipelineRasterizationStateStreamCreateInfoEXT</a>"
20998        },
20999        {
21000          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-sType-unique",
21001          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
21002        },
21003        {
21004          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-flags-zerobitmask",
21005          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
21006        },
21007        {
21008          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-parameter",
21009          "text": " <code>polygonMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPolygonMode\">VkPolygonMode</a> value"
21010        },
21011        {
21012          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-cullMode-parameter",
21013          "text": " <code>cullMode</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCullModeFlagBits\">VkCullModeFlagBits</a> values"
21014        },
21015        {
21016          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-frontFace-parameter",
21017          "text": " <code>frontFace</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFrontFace\">VkFrontFace</a> value"
21018        }
21019      ],
21020      "!(VK_NV_fill_rectangle)": [
21021        {
21022          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01413",
21023          "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>"
21024        }
21025      ],
21026      "(VK_NV_fill_rectangle)": [
21027        {
21028          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01507",
21029          "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>"
21030        },
21031        {
21032          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01414",
21033          "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>"
21034        }
21035      ]
21036    },
21037    "VkPipelineRasterizationDepthClipStateCreateInfoEXT": {
21038      "(VK_EXT_depth_clip_enable)": [
21039        {
21040          "vuid": "VUID-VkPipelineRasterizationDepthClipStateCreateInfoEXT-sType-sType",
21041          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT</code>"
21042        },
21043        {
21044          "vuid": "VUID-VkPipelineRasterizationDepthClipStateCreateInfoEXT-flags-zerobitmask",
21045          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
21046        }
21047      ]
21048    },
21049    "VkPipelineMultisampleStateCreateInfo": {
21050      "core": [
21051        {
21052          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sampleShadingEnable-00784",
21053          "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>"
21054        },
21055        {
21056          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-alphaToOneEnable-00785",
21057          "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>"
21058        },
21059        {
21060          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-minSampleShading-00786",
21061          "text": " <code>minSampleShading</code> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[0,1]</span>"
21062        },
21063        {
21064          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sType-sType",
21065          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO</code>"
21066        },
21067        {
21068          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-pNext-pNext",
21069          "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=\"#VkPipelineCoverageReductionStateCreateInfoNV\">VkPipelineCoverageReductionStateCreateInfoNV</a>, <a href=\"#VkPipelineCoverageToColorStateCreateInfoNV\">VkPipelineCoverageToColorStateCreateInfoNV</a>, or <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>"
21070        },
21071        {
21072          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sType-unique",
21073          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
21074        },
21075        {
21076          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-flags-zerobitmask",
21077          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
21078        },
21079        {
21080          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-parameter",
21081          "text": " <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
21082        },
21083        {
21084          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-pSampleMask-parameter",
21085          "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"
21086        }
21087      ],
21088      "(VK_NV_framebuffer_mixed_samples)": [
21089        {
21090          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-01415",
21091          "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>"
21092        }
21093      ]
21094    },
21095    "VkPipelineRasterizationStateStreamCreateInfoEXT": {
21096      "(VK_EXT_transform_feedback)": [
21097        {
21098          "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-geometryStreams-02324",
21099          "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>geometryStreams</code> <strong class=\"purple\">must</strong> be enabled"
21100        },
21101        {
21102          "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-rasterizationStream-02325",
21103          "text": " <code>rasterizationStream</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>::<code>maxTransformFeedbackStreams</code>"
21104        },
21105        {
21106          "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-rasterizationStream-02326",
21107          "text": " <code>rasterizationStream</code> <strong class=\"purple\">must</strong> be zero if <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>transformFeedbackRasterizationStreamSelect</code> is <code>VK_FALSE</code>"
21108        },
21109        {
21110          "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-sType-sType",
21111          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT</code>"
21112        },
21113        {
21114          "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-flags-zerobitmask",
21115          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
21116        }
21117      ]
21118    },
21119    "VkPipelineRasterizationStateRasterizationOrderAMD": {
21120      "(VK_AMD_rasterization_order)": [
21121        {
21122          "vuid": "VUID-VkPipelineRasterizationStateRasterizationOrderAMD-sType-sType",
21123          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD</code>"
21124        },
21125        {
21126          "vuid": "VUID-VkPipelineRasterizationStateRasterizationOrderAMD-rasterizationOrder-parameter",
21127          "text": " <code>rasterizationOrder</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRasterizationOrderAMD\">VkRasterizationOrderAMD</a> value"
21128        }
21129      ]
21130    },
21131    "VkPipelineSampleLocationsStateCreateInfoEXT": {
21132      "(VK_EXT_sample_locations)": [
21133        {
21134          "vuid": "VUID-VkPipelineSampleLocationsStateCreateInfoEXT-sType-sType",
21135          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT</code>"
21136        },
21137        {
21138          "vuid": "VUID-VkPipelineSampleLocationsStateCreateInfoEXT-sampleLocationsInfo-parameter",
21139          "text": " <code>sampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleLocationsInfoEXT\">VkSampleLocationsInfoEXT</a> structure"
21140        }
21141      ]
21142    },
21143    "VkSampleLocationsInfoEXT": {
21144      "(VK_EXT_sample_locations)": [
21145        {
21146          "vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsPerPixel-01526",
21147          "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>"
21148        },
21149        {
21150          "vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsCount-01527",
21151          "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>"
21152        },
21153        {
21154          "vuid": "VUID-VkSampleLocationsInfoEXT-sType-sType",
21155          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT</code>"
21156        },
21157        {
21158          "vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsPerPixel-parameter",
21159          "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"
21160        },
21161        {
21162          "vuid": "VUID-VkSampleLocationsInfoEXT-pSampleLocations-parameter",
21163          "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> <a href=\"#VkSampleLocationEXT\">VkSampleLocationEXT</a> structures"
21164        }
21165      ]
21166    },
21167    "vkCmdSetSampleLocationsEXT": {
21168      "(VK_EXT_sample_locations)": [
21169        {
21170          "vuid": "VUID-vkCmdSetSampleLocationsEXT-sampleLocationsPerPixel-01529",
21171          "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"
21172        },
21173        {
21174          "vuid": "VUID-vkCmdSetSampleLocationsEXT-variableSampleLocations-01530",
21175          "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>"
21176        },
21177        {
21178          "vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-parameter",
21179          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
21180        },
21181        {
21182          "vuid": "VUID-vkCmdSetSampleLocationsEXT-pSampleLocationsInfo-parameter",
21183          "text": " <code>pSampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSampleLocationsInfoEXT\">VkSampleLocationsInfoEXT</a> structure"
21184        },
21185        {
21186          "vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-recording",
21187          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
21188        },
21189        {
21190          "vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-cmdpool",
21191          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
21192        }
21193      ]
21194    },
21195    "VkPipelineViewportShadingRateImageStateCreateInfoNV": {
21196      "(VK_NV_shading_rate_image)": [
21197        {
21198          "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02054",
21199          "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>"
21200        },
21201        {
21202          "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02055",
21203          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
21204        },
21205        {
21206          "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-shadingRateImageEnable-02056",
21207          "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 <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>"
21208        },
21209        {
21210          "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-sType-sType",
21211          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV</code>"
21212        },
21213        {
21214          "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-arraylength",
21215          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
21216        }
21217      ]
21218    },
21219    "vkCmdBindShadingRateImageNV": {
21220      "(VK_NV_shading_rate_image)": [
21221        {
21222          "vuid": "VUID-vkCmdBindShadingRateImageNV-None-02058",
21223          "text": " The <a href=\"#features-shadingRateImage\">shading rate image</a> feature <strong class=\"purple\">must</strong> be enabled"
21224        },
21225        {
21226          "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02059",
21227          "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>"
21228        },
21229        {
21230          "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02060",
21231          "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>"
21232        },
21233        {
21234          "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02061",
21235          "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>"
21236        },
21237        {
21238          "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02062",
21239          "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"
21240        },
21241        {
21242          "vuid": "VUID-vkCmdBindShadingRateImageNV-imageLayout-02063",
21243          "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>"
21244        },
21245        {
21246          "vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-parameter",
21247          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
21248        },
21249        {
21250          "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-parameter",
21251          "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 <a href=\"#VkImageView\">VkImageView</a> handle"
21252        },
21253        {
21254          "vuid": "VUID-vkCmdBindShadingRateImageNV-imageLayout-parameter",
21255          "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
21256        },
21257        {
21258          "vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-recording",
21259          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
21260        },
21261        {
21262          "vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-cmdpool",
21263          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
21264        },
21265        {
21266          "vuid": "VUID-vkCmdBindShadingRateImageNV-commonparent",
21267          "text": " Both of <code>commandBuffer</code>, and <code>imageView</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
21268        }
21269      ]
21270    },
21271    "vkCmdSetViewportShadingRatePaletteNV": {
21272      "(VK_NV_shading_rate_image)": [
21273        {
21274          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-None-02064",
21275          "text": " The <a href=\"#features-shadingRateImage\">shading rate image</a> feature <strong class=\"purple\">must</strong> be enabled"
21276        },
21277        {
21278          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02066",
21279          "text": " <code>firstViewport</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
21280        },
21281        {
21282          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02067",
21283          "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"
21284        },
21285        {
21286          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02068",
21287          "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>"
21288        },
21289        {
21290          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-viewportCount-02069",
21291          "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>"
21292        },
21293        {
21294          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-parameter",
21295          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
21296        },
21297        {
21298          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-pShadingRatePalettes-parameter",
21299          "text": " <code>pShadingRatePalettes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <a href=\"#VkShadingRatePaletteNV\">VkShadingRatePaletteNV</a> structures"
21300        },
21301        {
21302          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-recording",
21303          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
21304        },
21305        {
21306          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-cmdpool",
21307          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
21308        },
21309        {
21310          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-viewportCount-arraylength",
21311          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
21312        }
21313      ]
21314    },
21315    "VkShadingRatePaletteNV": {
21316      "(VK_NV_shading_rate_image)": [
21317        {
21318          "vuid": "VUID-VkShadingRatePaletteNV-shadingRatePaletteEntryCount-02071",
21319          "text": " <code>shadingRatePaletteEntryCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceShadingRateImagePropertiesNV</code>::<code>shadingRatePaletteSize</code>, inclusive"
21320        },
21321        {
21322          "vuid": "VUID-VkShadingRatePaletteNV-pShadingRatePaletteEntries-parameter",
21323          "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"
21324        },
21325        {
21326          "vuid": "VUID-VkShadingRatePaletteNV-shadingRatePaletteEntryCount-arraylength",
21327          "text": " <code>shadingRatePaletteEntryCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
21328        }
21329      ]
21330    },
21331    "VkPipelineViewportCoarseSampleOrderStateCreateInfoNV": {
21332      "(VK_NV_shading_rate_image)": [
21333        {
21334          "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sampleOrderType-02072",
21335          "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>"
21336        },
21337        {
21338          "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-pCustomSampleOrders-02234",
21339          "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"
21340        },
21341        {
21342          "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sType-sType",
21343          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV</code>"
21344        },
21345        {
21346          "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sampleOrderType-parameter",
21347          "text": " <code>sampleOrderType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoarseSampleOrderTypeNV\">VkCoarseSampleOrderTypeNV</a> value"
21348        },
21349        {
21350          "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-pCustomSampleOrders-parameter",
21351          "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 <a href=\"#VkCoarseSampleOrderCustomNV\">VkCoarseSampleOrderCustomNV</a> structures"
21352        }
21353      ]
21354    },
21355    "VkCoarseSampleOrderCustomNV": {
21356      "(VK_NV_shading_rate_image)": [
21357        {
21358          "vuid": "VUID-VkCoarseSampleOrderCustomNV-shadingRate-02073",
21359          "text": " <code>shadingRate</code> <strong class=\"purple\">must</strong> be a shading rate that generates fragments with more than one pixel"
21360        },
21361        {
21362          "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleCount-02074",
21363          "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>"
21364        },
21365        {
21366          "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-02075",
21367          "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>"
21368        },
21369        {
21370          "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-02076",
21371          "text": " <code>sampleLocationCount</code> <strong class=\"purple\">must</strong> be less than or equal to the value of <code>VkPhysicalDeviceShadingRateImagePropertiesNV</code>::<code>shadingRateMaxCoarseSamples</code>"
21372        },
21373        {
21374          "vuid": "VUID-VkCoarseSampleOrderCustomNV-pSampleLocations-02077",
21375          "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>"
21376        },
21377        {
21378          "vuid": "VUID-VkCoarseSampleOrderCustomNV-shadingRate-parameter",
21379          "text": " <code>shadingRate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShadingRatePaletteEntryNV\">VkShadingRatePaletteEntryNV</a> value"
21380        },
21381        {
21382          "vuid": "VUID-VkCoarseSampleOrderCustomNV-pSampleLocations-parameter",
21383          "text": " <code>pSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>sampleLocationCount</code> <a href=\"#VkCoarseSampleLocationNV\">VkCoarseSampleLocationNV</a> structures"
21384        },
21385        {
21386          "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-arraylength",
21387          "text": " <code>sampleLocationCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
21388        }
21389      ]
21390    },
21391    "VkCoarseSampleLocationNV": {
21392      "(VK_NV_shading_rate_image)": [
21393        {
21394          "vuid": "VUID-VkCoarseSampleLocationNV-pixelX-02078",
21395          "text": " <code>pixelX</code> <strong class=\"purple\">must</strong> be less than the width (in pixels) of the fragment"
21396        },
21397        {
21398          "vuid": "VUID-VkCoarseSampleLocationNV-pixelY-02079",
21399          "text": " <code>pixelY</code> <strong class=\"purple\">must</strong> be less than the height (in pixels) of the fragment"
21400        },
21401        {
21402          "vuid": "VUID-VkCoarseSampleLocationNV-sample-02080",
21403          "text": " <code>sample</code> <strong class=\"purple\">must</strong> be less than the number of coverage samples in each pixel belonging to the fragment"
21404        }
21405      ]
21406    },
21407    "vkCmdSetCoarseSampleOrderNV": {
21408      "(VK_NV_shading_rate_image)": [
21409        {
21410          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-sampleOrderType-02081",
21411          "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>"
21412        },
21413        {
21414          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-pCustomSampleOrders-02235",
21415          "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"
21416        },
21417        {
21418          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-parameter",
21419          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
21420        },
21421        {
21422          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-sampleOrderType-parameter",
21423          "text": " <code>sampleOrderType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoarseSampleOrderTypeNV\">VkCoarseSampleOrderTypeNV</a> value"
21424        },
21425        {
21426          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-pCustomSampleOrders-parameter",
21427          "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 <a href=\"#VkCoarseSampleOrderCustomNV\">VkCoarseSampleOrderCustomNV</a> structures"
21428        },
21429        {
21430          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-recording",
21431          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
21432        },
21433        {
21434          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-cmdpool",
21435          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
21436        }
21437      ]
21438    },
21439    "VkPipelineRasterizationLineStateCreateInfoEXT": {
21440      "(VK_EXT_line_rasterization)": [
21441        {
21442          "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-02768",
21443          "text": " If <code>lineRasterizationMode</code> is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT</code>, then the <a href=\"#features-rectangularLines\">rectangularLines</a> feature <strong class=\"purple\">must</strong> be enabled"
21444        },
21445        {
21446          "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-02769",
21447          "text": " If <code>lineRasterizationMode</code> is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT</code>, then the <a href=\"#features-bresenhamLines\">bresenhamLines</a> feature <strong class=\"purple\">must</strong> be enabled"
21448        },
21449        {
21450          "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-02770",
21451          "text": " If <code>lineRasterizationMode</code> is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT</code>, then the <a href=\"#features-bresenhamLines\">smoothLines</a> feature <strong class=\"purple\">must</strong> be enabled"
21452        },
21453        {
21454          "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02771",
21455          "text": " If <code>stippledLineEnable</code> is <code>VK_TRUE</code> and <code>lineRasterizationMode</code> is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT</code>, then the <a href=\"#features-stippledRectangularLines\">stippledRectangularLines</a> feature <strong class=\"purple\">must</strong> be enabled"
21456        },
21457        {
21458          "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02772",
21459          "text": " If <code>stippledLineEnable</code> is <code>VK_TRUE</code> and <code>lineRasterizationMode</code> is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT</code>, then the <a href=\"#features-stippledBresenhamLines\">stippledBresenhamLines</a> feature <strong class=\"purple\">must</strong> be enabled"
21460        },
21461        {
21462          "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02773",
21463          "text": " If <code>stippledLineEnable</code> is <code>VK_TRUE</code> and <code>lineRasterizationMode</code> is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT</code>, then the <a href=\"#features-stippledSmoothLines\">stippledSmoothLines</a> feature <strong class=\"purple\">must</strong> be enabled"
21464        },
21465        {
21466          "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02774",
21467          "text": " If <code>stippledLineEnable</code> is <code>VK_TRUE</code> and <code>lineRasterizationMode</code> is <code>VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT</code>, then the <a href=\"#features-stippledRectangularLines\">stippledRectangularLines</a> feature <strong class=\"purple\">must</strong> be enabled and <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>strictLines</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>"
21468        },
21469        {
21470          "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-sType-sType",
21471          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT</code>"
21472        },
21473        {
21474          "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-parameter",
21475          "text": " <code>lineRasterizationMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkLineRasterizationModeEXT\">VkLineRasterizationModeEXT</a> value"
21476        }
21477      ]
21478    },
21479    "vkCmdSetLineWidth": {
21480      "core": [
21481        {
21482          "vuid": "VUID-vkCmdSetLineWidth-lineWidth-00788",
21483          "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>"
21484        },
21485        {
21486          "vuid": "VUID-vkCmdSetLineWidth-commandBuffer-parameter",
21487          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
21488        },
21489        {
21490          "vuid": "VUID-vkCmdSetLineWidth-commandBuffer-recording",
21491          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
21492        },
21493        {
21494          "vuid": "VUID-vkCmdSetLineWidth-commandBuffer-cmdpool",
21495          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
21496        }
21497      ]
21498    },
21499    "vkCmdSetLineStippleEXT": {
21500      "(VK_EXT_line_rasterization)": [
21501        {
21502          "vuid": "VUID-vkCmdSetLineStippleEXT-lineStippleFactor-02776",
21503          "text": " <code>lineStippleFactor</code> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[1,256]</span>"
21504        },
21505        {
21506          "vuid": "VUID-vkCmdSetLineStippleEXT-commandBuffer-parameter",
21507          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
21508        },
21509        {
21510          "vuid": "VUID-vkCmdSetLineStippleEXT-commandBuffer-recording",
21511          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
21512        },
21513        {
21514          "vuid": "VUID-vkCmdSetLineStippleEXT-commandBuffer-cmdpool",
21515          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
21516        }
21517      ]
21518    },
21519    "vkCmdSetFrontFaceEXT": {
21520      "(VK_EXT_extended_dynamic_state)": [
21521        {
21522          "vuid": "VUID-vkCmdSetFrontFaceEXT-None-03383",
21523          "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled"
21524        },
21525        {
21526          "vuid": "VUID-vkCmdSetFrontFaceEXT-commandBuffer-parameter",
21527          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
21528        },
21529        {
21530          "vuid": "VUID-vkCmdSetFrontFaceEXT-frontFace-parameter",
21531          "text": " <code>frontFace</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFrontFace\">VkFrontFace</a> value"
21532        },
21533        {
21534          "vuid": "VUID-vkCmdSetFrontFaceEXT-commandBuffer-recording",
21535          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
21536        },
21537        {
21538          "vuid": "VUID-vkCmdSetFrontFaceEXT-commandBuffer-cmdpool",
21539          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
21540        }
21541      ]
21542    },
21543    "vkCmdSetCullModeEXT": {
21544      "(VK_EXT_extended_dynamic_state)": [
21545        {
21546          "vuid": "VUID-vkCmdSetCullModeEXT-None-03384",
21547          "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled"
21548        },
21549        {
21550          "vuid": "VUID-vkCmdSetCullModeEXT-commandBuffer-parameter",
21551          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
21552        },
21553        {
21554          "vuid": "VUID-vkCmdSetCullModeEXT-cullMode-parameter",
21555          "text": " <code>cullMode</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCullModeFlagBits\">VkCullModeFlagBits</a> values"
21556        },
21557        {
21558          "vuid": "VUID-vkCmdSetCullModeEXT-commandBuffer-recording",
21559          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
21560        },
21561        {
21562          "vuid": "VUID-vkCmdSetCullModeEXT-commandBuffer-cmdpool",
21563          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
21564        }
21565      ]
21566    },
21567    "vkCmdSetDepthBias": {
21568      "core": [
21569        {
21570          "vuid": "VUID-vkCmdSetDepthBias-depthBiasClamp-00790",
21571          "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>"
21572        },
21573        {
21574          "vuid": "VUID-vkCmdSetDepthBias-commandBuffer-parameter",
21575          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
21576        },
21577        {
21578          "vuid": "VUID-vkCmdSetDepthBias-commandBuffer-recording",
21579          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
21580        },
21581        {
21582          "vuid": "VUID-vkCmdSetDepthBias-commandBuffer-cmdpool",
21583          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
21584        }
21585      ]
21586    },
21587    "VkPipelineRasterizationConservativeStateCreateInfoEXT": {
21588      "(VK_EXT_conservative_rasterization)": [
21589        {
21590          "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-extraPrimitiveOverestimationSize-01769",
21591          "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"
21592        },
21593        {
21594          "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-sType-sType",
21595          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT</code>"
21596        },
21597        {
21598          "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-flags-zerobitmask",
21599          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
21600        },
21601        {
21602          "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-conservativeRasterizationMode-parameter",
21603          "text": " <code>conservativeRasterizationMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkConservativeRasterizationModeEXT\">VkConservativeRasterizationModeEXT</a> value"
21604        }
21605      ]
21606    },
21607    "VkPipelineDiscardRectangleStateCreateInfoEXT": {
21608      "(VK_EXT_discard_rectangles)": [
21609        {
21610          "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-discardRectangleCount-00582",
21611          "text": " <code>discardRectangleCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDiscardRectanglePropertiesEXT</code>::<code>maxDiscardRectangles</code>"
21612        },
21613        {
21614          "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-sType-sType",
21615          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT</code>"
21616        },
21617        {
21618          "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-flags-zerobitmask",
21619          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
21620        },
21621        {
21622          "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-discardRectangleMode-parameter",
21623          "text": " <code>discardRectangleMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDiscardRectangleModeEXT\">VkDiscardRectangleModeEXT</a> value"
21624        }
21625      ]
21626    },
21627    "vkCmdSetDiscardRectangleEXT": {
21628      "(VK_EXT_discard_rectangles)": [
21629        {
21630          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-firstDiscardRectangle-00585",
21631          "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>"
21632        },
21633        {
21634          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-x-00587",
21635          "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>"
21636        },
21637        {
21638          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-offset-00588",
21639          "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"
21640        },
21641        {
21642          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-offset-00589",
21643          "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"
21644        },
21645        {
21646          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-parameter",
21647          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
21648        },
21649        {
21650          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-pDiscardRectangles-parameter",
21651          "text": " <code>pDiscardRectangles</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>discardRectangleCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures"
21652        },
21653        {
21654          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-recording",
21655          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
21656        },
21657        {
21658          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-cmdpool",
21659          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
21660        },
21661        {
21662          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-discardRectangleCount-arraylength",
21663          "text": " <code>discardRectangleCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
21664        }
21665      ]
21666    },
21667    "vkCmdSetScissor": {
21668      "core": [
21669        {
21670          "vuid": "VUID-vkCmdSetScissor-firstScissor-00591",
21671          "text": " <code>firstScissor</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
21672        },
21673        {
21674          "vuid": "VUID-vkCmdSetScissor-firstScissor-00592",
21675          "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"
21676        },
21677        {
21678          "vuid": "VUID-vkCmdSetScissor-firstScissor-00593",
21679          "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>"
21680        },
21681        {
21682          "vuid": "VUID-vkCmdSetScissor-scissorCount-00594",
21683          "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>"
21684        },
21685        {
21686          "vuid": "VUID-vkCmdSetScissor-x-00595",
21687          "text": " The <code>x</code> and <code>y</code> members of <code>offset</code> member of any element of <code>pScissors</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>0</code>"
21688        },
21689        {
21690          "vuid": "VUID-vkCmdSetScissor-offset-00596",
21691          "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 for any element of <code>pScissors</code>"
21692        },
21693        {
21694          "vuid": "VUID-vkCmdSetScissor-offset-00597",
21695          "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 for any element of <code>pScissors</code>"
21696        },
21697        {
21698          "vuid": "VUID-vkCmdSetScissor-commandBuffer-parameter",
21699          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
21700        },
21701        {
21702          "vuid": "VUID-vkCmdSetScissor-pScissors-parameter",
21703          "text": " <code>pScissors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>scissorCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures"
21704        },
21705        {
21706          "vuid": "VUID-vkCmdSetScissor-commandBuffer-recording",
21707          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
21708        },
21709        {
21710          "vuid": "VUID-vkCmdSetScissor-commandBuffer-cmdpool",
21711          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
21712        },
21713        {
21714          "vuid": "VUID-vkCmdSetScissor-scissorCount-arraylength",
21715          "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
21716        }
21717      ]
21718    },
21719    "VkPipelineViewportExclusiveScissorStateCreateInfoNV": {
21720      "(VK_NV_scissor_exclusive)": [
21721        {
21722          "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02027",
21723          "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>"
21724        },
21725        {
21726          "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02028",
21727          "text": " <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
21728        },
21729        {
21730          "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02029",
21731          "text": " <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or identical to the <code>viewportCount</code> member of <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>"
21732        },
21733        {
21734          "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-sType-sType",
21735          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV</code>"
21736        }
21737      ]
21738    },
21739    "vkCmdSetExclusiveScissorNV": {
21740      "(VK_NV_scissor_exclusive)": [
21741        {
21742          "vuid": "VUID-vkCmdSetExclusiveScissorNV-None-02031",
21743          "text": " The <a href=\"#features-exclusiveScissor\">exclusive scissor</a> feature <strong class=\"purple\">must</strong> be enabled"
21744        },
21745        {
21746          "vuid": "VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02033",
21747          "text": " <code>firstExclusiveScissor</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
21748        },
21749        {
21750          "vuid": "VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02034",
21751          "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"
21752        },
21753        {
21754          "vuid": "VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02035",
21755          "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>"
21756        },
21757        {
21758          "vuid": "VUID-vkCmdSetExclusiveScissorNV-exclusiveScissorCount-02036",
21759          "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>"
21760        },
21761        {
21762          "vuid": "VUID-vkCmdSetExclusiveScissorNV-x-02037",
21763          "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>"
21764        },
21765        {
21766          "vuid": "VUID-vkCmdSetExclusiveScissorNV-offset-02038",
21767          "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"
21768        },
21769        {
21770          "vuid": "VUID-vkCmdSetExclusiveScissorNV-offset-02039",
21771          "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"
21772        },
21773        {
21774          "vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-parameter",
21775          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
21776        },
21777        {
21778          "vuid": "VUID-vkCmdSetExclusiveScissorNV-pExclusiveScissors-parameter",
21779          "text": " <code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>exclusiveScissorCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures"
21780        },
21781        {
21782          "vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-recording",
21783          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
21784        },
21785        {
21786          "vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-cmdpool",
21787          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
21788        },
21789        {
21790          "vuid": "VUID-vkCmdSetExclusiveScissorNV-exclusiveScissorCount-arraylength",
21791          "text": " <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
21792        }
21793      ]
21794    },
21795    "VkPipelineDepthStencilStateCreateInfo": {
21796      "core": [
21797        {
21798          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-depthBoundsTestEnable-00598",
21799          "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>"
21800        },
21801        {
21802          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-sType-sType",
21803          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO</code>"
21804        },
21805        {
21806          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-pNext-pNext",
21807          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
21808        },
21809        {
21810          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-flags-zerobitmask",
21811          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
21812        },
21813        {
21814          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-depthCompareOp-parameter",
21815          "text": " <code>depthCompareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value"
21816        },
21817        {
21818          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-front-parameter",
21819          "text": " <code>front</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOpState\">VkStencilOpState</a> structure"
21820        },
21821        {
21822          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-back-parameter",
21823          "text": " <code>back</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOpState\">VkStencilOpState</a> structure"
21824        }
21825      ]
21826    },
21827    "vkCmdSetDepthBoundsTestEnableEXT": {
21828      "(VK_EXT_extended_dynamic_state)": [
21829        {
21830          "vuid": "VUID-vkCmdSetDepthBoundsTestEnableEXT-None-03349",
21831          "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled"
21832        },
21833        {
21834          "vuid": "VUID-vkCmdSetDepthBoundsTestEnableEXT-commandBuffer-parameter",
21835          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
21836        },
21837        {
21838          "vuid": "VUID-vkCmdSetDepthBoundsTestEnableEXT-commandBuffer-recording",
21839          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
21840        },
21841        {
21842          "vuid": "VUID-vkCmdSetDepthBoundsTestEnableEXT-commandBuffer-cmdpool",
21843          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
21844        }
21845      ]
21846    },
21847    "vkCmdSetDepthBounds": {
21848      "(VK_EXT_depth_range_unrestricted)": [
21849        {
21850          "vuid": "VUID-vkCmdSetDepthBounds-minDepthBounds-00600",
21851          "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"
21852        },
21853        {
21854          "vuid": "VUID-vkCmdSetDepthBounds-maxDepthBounds-00601",
21855          "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"
21856        }
21857      ],
21858      "!(VK_EXT_depth_range_unrestricted)": [
21859        {
21860          "vuid": "VUID-vkCmdSetDepthBounds-minDepthBounds-02508",
21861          "text": " <code>minDepthBounds</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
21862        },
21863        {
21864          "vuid": "VUID-vkCmdSetDepthBounds-maxDepthBounds-02509",
21865          "text": " <code>maxDepthBounds</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
21866        }
21867      ],
21868      "core": [
21869        {
21870          "vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-parameter",
21871          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
21872        },
21873        {
21874          "vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-recording",
21875          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
21876        },
21877        {
21878          "vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-cmdpool",
21879          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
21880        }
21881      ]
21882    },
21883    "vkCmdSetStencilTestEnableEXT": {
21884      "(VK_EXT_extended_dynamic_state)": [
21885        {
21886          "vuid": "VUID-vkCmdSetStencilTestEnableEXT-None-03350",
21887          "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled"
21888        },
21889        {
21890          "vuid": "VUID-vkCmdSetStencilTestEnableEXT-commandBuffer-parameter",
21891          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
21892        },
21893        {
21894          "vuid": "VUID-vkCmdSetStencilTestEnableEXT-commandBuffer-recording",
21895          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
21896        },
21897        {
21898          "vuid": "VUID-vkCmdSetStencilTestEnableEXT-commandBuffer-cmdpool",
21899          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
21900        }
21901      ]
21902    },
21903    "vkCmdSetStencilOpEXT": {
21904      "(VK_EXT_extended_dynamic_state)": [
21905        {
21906          "vuid": "VUID-vkCmdSetStencilOpEXT-None-03351",
21907          "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled"
21908        },
21909        {
21910          "vuid": "VUID-vkCmdSetStencilOpEXT-commandBuffer-parameter",
21911          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
21912        },
21913        {
21914          "vuid": "VUID-vkCmdSetStencilOpEXT-faceMask-parameter",
21915          "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values"
21916        },
21917        {
21918          "vuid": "VUID-vkCmdSetStencilOpEXT-faceMask-requiredbitmask",
21919          "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
21920        },
21921        {
21922          "vuid": "VUID-vkCmdSetStencilOpEXT-failOp-parameter",
21923          "text": " <code>failOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value"
21924        },
21925        {
21926          "vuid": "VUID-vkCmdSetStencilOpEXT-passOp-parameter",
21927          "text": " <code>passOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value"
21928        },
21929        {
21930          "vuid": "VUID-vkCmdSetStencilOpEXT-depthFailOp-parameter",
21931          "text": " <code>depthFailOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value"
21932        },
21933        {
21934          "vuid": "VUID-vkCmdSetStencilOpEXT-compareOp-parameter",
21935          "text": " <code>compareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value"
21936        },
21937        {
21938          "vuid": "VUID-vkCmdSetStencilOpEXT-commandBuffer-recording",
21939          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
21940        },
21941        {
21942          "vuid": "VUID-vkCmdSetStencilOpEXT-commandBuffer-cmdpool",
21943          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
21944        }
21945      ]
21946    },
21947    "VkStencilOpState": {
21948      "core": [
21949        {
21950          "vuid": "VUID-VkStencilOpState-failOp-parameter",
21951          "text": " <code>failOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value"
21952        },
21953        {
21954          "vuid": "VUID-VkStencilOpState-passOp-parameter",
21955          "text": " <code>passOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value"
21956        },
21957        {
21958          "vuid": "VUID-VkStencilOpState-depthFailOp-parameter",
21959          "text": " <code>depthFailOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value"
21960        },
21961        {
21962          "vuid": "VUID-VkStencilOpState-compareOp-parameter",
21963          "text": " <code>compareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value"
21964        }
21965      ]
21966    },
21967    "vkCmdSetStencilCompareMask": {
21968      "core": [
21969        {
21970          "vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-parameter",
21971          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
21972        },
21973        {
21974          "vuid": "VUID-vkCmdSetStencilCompareMask-faceMask-parameter",
21975          "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values"
21976        },
21977        {
21978          "vuid": "VUID-vkCmdSetStencilCompareMask-faceMask-requiredbitmask",
21979          "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
21980        },
21981        {
21982          "vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-recording",
21983          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
21984        },
21985        {
21986          "vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-cmdpool",
21987          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
21988        }
21989      ]
21990    },
21991    "vkCmdSetStencilWriteMask": {
21992      "core": [
21993        {
21994          "vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-parameter",
21995          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
21996        },
21997        {
21998          "vuid": "VUID-vkCmdSetStencilWriteMask-faceMask-parameter",
21999          "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values"
22000        },
22001        {
22002          "vuid": "VUID-vkCmdSetStencilWriteMask-faceMask-requiredbitmask",
22003          "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
22004        },
22005        {
22006          "vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-recording",
22007          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
22008        },
22009        {
22010          "vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-cmdpool",
22011          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
22012        }
22013      ]
22014    },
22015    "vkCmdSetStencilReference": {
22016      "core": [
22017        {
22018          "vuid": "VUID-vkCmdSetStencilReference-commandBuffer-parameter",
22019          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
22020        },
22021        {
22022          "vuid": "VUID-vkCmdSetStencilReference-faceMask-parameter",
22023          "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values"
22024        },
22025        {
22026          "vuid": "VUID-vkCmdSetStencilReference-faceMask-requiredbitmask",
22027          "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
22028        },
22029        {
22030          "vuid": "VUID-vkCmdSetStencilReference-commandBuffer-recording",
22031          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
22032        },
22033        {
22034          "vuid": "VUID-vkCmdSetStencilReference-commandBuffer-cmdpool",
22035          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
22036        }
22037      ]
22038    },
22039    "vkCmdSetDepthTestEnableEXT": {
22040      "(VK_EXT_extended_dynamic_state)": [
22041        {
22042          "vuid": "VUID-vkCmdSetDepthTestEnableEXT-None-03352",
22043          "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled"
22044        },
22045        {
22046          "vuid": "VUID-vkCmdSetDepthTestEnableEXT-commandBuffer-parameter",
22047          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
22048        },
22049        {
22050          "vuid": "VUID-vkCmdSetDepthTestEnableEXT-commandBuffer-recording",
22051          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
22052        },
22053        {
22054          "vuid": "VUID-vkCmdSetDepthTestEnableEXT-commandBuffer-cmdpool",
22055          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
22056        }
22057      ]
22058    },
22059    "vkCmdSetDepthCompareOpEXT": {
22060      "(VK_EXT_extended_dynamic_state)": [
22061        {
22062          "vuid": "VUID-vkCmdSetDepthCompareOpEXT-None-03353",
22063          "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled"
22064        },
22065        {
22066          "vuid": "VUID-vkCmdSetDepthCompareOpEXT-commandBuffer-parameter",
22067          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
22068        },
22069        {
22070          "vuid": "VUID-vkCmdSetDepthCompareOpEXT-depthCompareOp-parameter",
22071          "text": " <code>depthCompareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value"
22072        },
22073        {
22074          "vuid": "VUID-vkCmdSetDepthCompareOpEXT-commandBuffer-recording",
22075          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
22076        },
22077        {
22078          "vuid": "VUID-vkCmdSetDepthCompareOpEXT-commandBuffer-cmdpool",
22079          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
22080        }
22081      ]
22082    },
22083    "vkCmdSetDepthWriteEnableEXT": {
22084      "(VK_EXT_extended_dynamic_state)": [
22085        {
22086          "vuid": "VUID-vkCmdSetDepthWriteEnableEXT-None-03354",
22087          "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled"
22088        },
22089        {
22090          "vuid": "VUID-vkCmdSetDepthWriteEnableEXT-commandBuffer-parameter",
22091          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
22092        },
22093        {
22094          "vuid": "VUID-vkCmdSetDepthWriteEnableEXT-commandBuffer-recording",
22095          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
22096        },
22097        {
22098          "vuid": "VUID-vkCmdSetDepthWriteEnableEXT-commandBuffer-cmdpool",
22099          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
22100        }
22101      ]
22102    },
22103    "VkPipelineRepresentativeFragmentTestStateCreateInfoNV": {
22104      "(VK_NV_representative_fragment_test)": [
22105        {
22106          "vuid": "VUID-VkPipelineRepresentativeFragmentTestStateCreateInfoNV-sType-sType",
22107          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV</code>"
22108        }
22109      ]
22110    },
22111    "VkPipelineCoverageToColorStateCreateInfoNV": {
22112      "(VK_NV_fragment_coverage_to_color)": [
22113        {
22114          "vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-coverageToColorEnable-01404",
22115          "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>"
22116        },
22117        {
22118          "vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-sType-sType",
22119          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV</code>"
22120        },
22121        {
22122          "vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-flags-zerobitmask",
22123          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
22124        }
22125      ]
22126    },
22127    "VkPipelineCoverageReductionStateCreateInfoNV": {
22128      "(VK_NV_framebuffer_mixed_samples)+(VK_NV_coverage_reduction_mode)": [
22129        {
22130          "vuid": "VUID-VkPipelineCoverageReductionStateCreateInfoNV-sType-sType",
22131          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV</code>"
22132        },
22133        {
22134          "vuid": "VUID-VkPipelineCoverageReductionStateCreateInfoNV-flags-zerobitmask",
22135          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
22136        },
22137        {
22138          "vuid": "VUID-VkPipelineCoverageReductionStateCreateInfoNV-coverageReductionMode-parameter",
22139          "text": " <code>coverageReductionMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoverageReductionModeNV\">VkCoverageReductionModeNV</a> value"
22140        }
22141      ]
22142    },
22143    "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV": {
22144      "(VK_NV_framebuffer_mixed_samples)+(VK_NV_coverage_reduction_mode)": [
22145        {
22146          "vuid": "VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-physicalDevice-parameter",
22147          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
22148        },
22149        {
22150          "vuid": "VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-pCombinationCount-parameter",
22151          "text": " <code>pCombinationCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
22152        },
22153        {
22154          "vuid": "VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-pCombinations-parameter",
22155          "text": " If the value referenced by <code>pCombinationCount</code> is not <code>0</code>, and <code>pCombinations</code> is not <code>NULL</code>, <code>pCombinations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pCombinationCount</code> <a href=\"#VkFramebufferMixedSamplesCombinationNV\">VkFramebufferMixedSamplesCombinationNV</a> structures"
22156        }
22157      ]
22158    },
22159    "VkFramebufferMixedSamplesCombinationNV": {
22160      "(VK_NV_framebuffer_mixed_samples)+(VK_NV_coverage_reduction_mode)": [
22161        {
22162          "vuid": "VUID-VkFramebufferMixedSamplesCombinationNV-sType-sType",
22163          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV</code>"
22164        },
22165        {
22166          "vuid": "VUID-VkFramebufferMixedSamplesCombinationNV-pNext-pNext",
22167          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
22168        }
22169      ]
22170    },
22171    "VkPipelineCoverageModulationStateCreateInfoNV": {
22172      "(VK_NV_framebuffer_mixed_samples)": [
22173        {
22174          "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationTableEnable-01405",
22175          "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"
22176        },
22177        {
22178          "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-sType-sType",
22179          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV</code>"
22180        },
22181        {
22182          "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-flags-zerobitmask",
22183          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
22184        },
22185        {
22186          "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationMode-parameter",
22187          "text": " <code>coverageModulationMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoverageModulationModeNV\">VkCoverageModulationModeNV</a> value"
22188        }
22189      ]
22190    },
22191    "VkPipelineColorBlendStateCreateInfo": {
22192      "core": [
22193        {
22194          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605",
22195          "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"
22196        },
22197        {
22198          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00606",
22199          "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>"
22200        },
22201        {
22202          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00607",
22203          "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"
22204        },
22205        {
22206          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-sType-sType",
22207          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO</code>"
22208        },
22209        {
22210          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pNext-pNext",
22211          "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>"
22212        },
22213        {
22214          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-sType-unique",
22215          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
22216        },
22217        {
22218          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-flags-zerobitmask",
22219          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
22220        },
22221        {
22222          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-parameter",
22223          "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 <a href=\"#VkPipelineColorBlendAttachmentState\">VkPipelineColorBlendAttachmentState</a> structures"
22224        }
22225      ]
22226    },
22227    "VkPipelineColorBlendAttachmentState": {
22228      "core": [
22229        {
22230          "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-00608",
22231          "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>"
22232        },
22233        {
22234          "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-00609",
22235          "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>"
22236        },
22237        {
22238          "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-00610",
22239          "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>"
22240        },
22241        {
22242          "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-00611",
22243          "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>"
22244        },
22245        {
22246          "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-parameter",
22247          "text": " <code>srcColorBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value"
22248        },
22249        {
22250          "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-parameter",
22251          "text": " <code>dstColorBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value"
22252        },
22253        {
22254          "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-parameter",
22255          "text": " <code>colorBlendOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOp\">VkBlendOp</a> value"
22256        },
22257        {
22258          "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-parameter",
22259          "text": " <code>srcAlphaBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value"
22260        },
22261        {
22262          "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-parameter",
22263          "text": " <code>dstAlphaBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value"
22264        },
22265        {
22266          "vuid": "VUID-VkPipelineColorBlendAttachmentState-alphaBlendOp-parameter",
22267          "text": " <code>alphaBlendOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOp\">VkBlendOp</a> value"
22268        },
22269        {
22270          "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorWriteMask-parameter",
22271          "text": " <code>colorWriteMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkColorComponentFlagBits\">VkColorComponentFlagBits</a> values"
22272        }
22273      ],
22274      "(VK_EXT_blend_operation_advanced)": [
22275        {
22276          "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01406",
22277          "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>"
22278        },
22279        {
22280          "vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01407",
22281          "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"
22282        },
22283        {
22284          "vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01408",
22285          "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"
22286        },
22287        {
22288          "vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendAllOperations-01409",
22289          "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>"
22290        },
22291        {
22292          "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01410",
22293          "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"
22294        }
22295      ]
22296    },
22297    "vkCmdSetBlendConstants": {
22298      "core": [
22299        {
22300          "vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-parameter",
22301          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
22302        },
22303        {
22304          "vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-recording",
22305          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
22306        },
22307        {
22308          "vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-cmdpool",
22309          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
22310        }
22311      ]
22312    },
22313    "VkPipelineColorBlendAdvancedStateCreateInfoEXT": {
22314      "(VK_EXT_blend_operation_advanced)": [
22315        {
22316          "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-srcPremultiplied-01424",
22317          "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>"
22318        },
22319        {
22320          "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-dstPremultiplied-01425",
22321          "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>"
22322        },
22323        {
22324          "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-01426",
22325          "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>"
22326        },
22327        {
22328          "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-sType-sType",
22329          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT</code>"
22330        },
22331        {
22332          "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-parameter",
22333          "text": " <code>blendOverlap</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOverlapEXT\">VkBlendOverlapEXT</a> value"
22334        }
22335      ]
22336    },
22337    "vkCmdDispatch": {
22338      "core": [
22339        {
22340          "vuid": "VUID-vkCmdDispatch-None-02690",
22341          "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>"
22342        },
22343        {
22344          "vuid": "VUID-vkCmdDispatch-None-02691",
22345          "text": " If a <code>VkImageView</code> is accessed using atomic operations 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_STORAGE_IMAGE_ATOMIC_BIT</code>"
22346        },
22347        {
22348          "vuid": "VUID-vkCmdDispatch-None-02697",
22349          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, 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>"
22350        },
22351        {
22352          "vuid": "VUID-vkCmdDispatch-None-02698",
22353          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, 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>"
22354        },
22355        {
22356          "vuid": "VUID-vkCmdDispatch-None-02699",
22357          "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 <code>VkPipeline</code> bound to the pipeline bind point used by this command"
22358        },
22359        {
22360          "vuid": "VUID-vkCmdDispatch-None-02700",
22361          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
22362        },
22363        {
22364          "vuid": "VUID-vkCmdDispatch-commandBuffer-02701",
22365          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
22366        },
22367        {
22368          "vuid": "VUID-vkCmdDispatch-None-02859",
22369          "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound"
22370        },
22371        {
22372          "vuid": "VUID-vkCmdDispatch-None-02702",
22373          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
22374        },
22375        {
22376          "vuid": "VUID-vkCmdDispatch-None-02703",
22377          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
22378        },
22379        {
22380          "vuid": "VUID-vkCmdDispatch-None-02704",
22381          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
22382        },
22383        {
22384          "vuid": "VUID-vkCmdDispatch-None-02705",
22385          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
22386        },
22387        {
22388          "vuid": "VUID-vkCmdDispatch-None-02706",
22389          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
22390        },
22391        {
22392          "vuid": "VUID-vkCmdDispatch-None-04115",
22393          "text": " If a <code>VkImageView</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format."
22394        },
22395        {
22396          "vuid": "VUID-vkCmdDispatch-groupCountX-00386",
22397          "text": " <code>groupCountX</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
22398        },
22399        {
22400          "vuid": "VUID-vkCmdDispatch-groupCountY-00387",
22401          "text": " <code>groupCountY</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
22402        },
22403        {
22404          "vuid": "VUID-vkCmdDispatch-groupCountZ-00388",
22405          "text": " <code>groupCountZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
22406        },
22407        {
22408          "vuid": "VUID-vkCmdDispatch-commandBuffer-parameter",
22409          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
22410        },
22411        {
22412          "vuid": "VUID-vkCmdDispatch-commandBuffer-recording",
22413          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
22414        },
22415        {
22416          "vuid": "VUID-vkCmdDispatch-commandBuffer-cmdpool",
22417          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
22418        },
22419        {
22420          "vuid": "VUID-vkCmdDispatch-renderpass",
22421          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
22422        }
22423      ],
22424      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
22425        {
22426          "vuid": "VUID-vkCmdDispatch-None-02692",
22427          "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>"
22428        }
22429      ],
22430      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
22431        {
22432          "vuid": "VUID-vkCmdDispatch-None-02693",
22433          "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>"
22434        }
22435      ],
22436      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
22437        {
22438          "vuid": "VUID-vkCmdDispatch-filterCubic-02694",
22439          "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>"
22440        },
22441        {
22442          "vuid": "VUID-vkCmdDispatch-filterCubicMinmax-02695",
22443          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
22444        }
22445      ],
22446      "(VK_NV_corner_sampled_image)": [
22447        {
22448          "vuid": "VUID-vkCmdDispatch-flags-02696",
22449          "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>"
22450        }
22451      ],
22452      "(VK_VERSION_1_1)": [
22453        {
22454          "vuid": "VUID-vkCmdDispatch-commandBuffer-02707",
22455          "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource"
22456        },
22457        {
22458          "vuid": "VUID-vkCmdDispatch-commandBuffer-02712",
22459          "text": " If <code>commandBuffer</code> is a protected command buffer, any resource written to by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be an unprotected resource"
22460        },
22461        {
22462          "vuid": "VUID-vkCmdDispatch-commandBuffer-02713",
22463          "text": " If <code>commandBuffer</code> is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the <code>VkPipeline</code> object bound to the pipeline bind point <strong class=\"purple\">must</strong> not write to any resource"
22464        }
22465      ]
22466    },
22467    "vkCmdDispatchIndirect": {
22468      "core": [
22469        {
22470          "vuid": "VUID-vkCmdDispatchIndirect-None-02690",
22471          "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>"
22472        },
22473        {
22474          "vuid": "VUID-vkCmdDispatchIndirect-None-02691",
22475          "text": " If a <code>VkImageView</code> is accessed using atomic operations 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_STORAGE_IMAGE_ATOMIC_BIT</code>"
22476        },
22477        {
22478          "vuid": "VUID-vkCmdDispatchIndirect-None-02697",
22479          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, 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>"
22480        },
22481        {
22482          "vuid": "VUID-vkCmdDispatchIndirect-None-02698",
22483          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, 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>"
22484        },
22485        {
22486          "vuid": "VUID-vkCmdDispatchIndirect-None-02699",
22487          "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 <code>VkPipeline</code> bound to the pipeline bind point used by this command"
22488        },
22489        {
22490          "vuid": "VUID-vkCmdDispatchIndirect-None-02700",
22491          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
22492        },
22493        {
22494          "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-02701",
22495          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
22496        },
22497        {
22498          "vuid": "VUID-vkCmdDispatchIndirect-None-02859",
22499          "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound"
22500        },
22501        {
22502          "vuid": "VUID-vkCmdDispatchIndirect-None-02702",
22503          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
22504        },
22505        {
22506          "vuid": "VUID-vkCmdDispatchIndirect-None-02703",
22507          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
22508        },
22509        {
22510          "vuid": "VUID-vkCmdDispatchIndirect-None-02704",
22511          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
22512        },
22513        {
22514          "vuid": "VUID-vkCmdDispatchIndirect-None-02705",
22515          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
22516        },
22517        {
22518          "vuid": "VUID-vkCmdDispatchIndirect-None-02706",
22519          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
22520        },
22521        {
22522          "vuid": "VUID-vkCmdDispatchIndirect-None-04115",
22523          "text": " If a <code>VkImageView</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format."
22524        },
22525        {
22526          "vuid": "VUID-vkCmdDispatchIndirect-buffer-02708",
22527          "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"
22528        },
22529        {
22530          "vuid": "VUID-vkCmdDispatchIndirect-buffer-02709",
22531          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
22532        },
22533        {
22534          "vuid": "VUID-vkCmdDispatchIndirect-offset-02710",
22535          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
22536        },
22537        {
22538          "vuid": "VUID-vkCmdDispatchIndirect-offset-00407",
22539          "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>"
22540        },
22541        {
22542          "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-parameter",
22543          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
22544        },
22545        {
22546          "vuid": "VUID-vkCmdDispatchIndirect-buffer-parameter",
22547          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
22548        },
22549        {
22550          "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-recording",
22551          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
22552        },
22553        {
22554          "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-cmdpool",
22555          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
22556        },
22557        {
22558          "vuid": "VUID-vkCmdDispatchIndirect-renderpass",
22559          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
22560        },
22561        {
22562          "vuid": "VUID-vkCmdDispatchIndirect-commonparent",
22563          "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
22564        }
22565      ],
22566      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
22567        {
22568          "vuid": "VUID-vkCmdDispatchIndirect-None-02692",
22569          "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>"
22570        }
22571      ],
22572      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
22573        {
22574          "vuid": "VUID-vkCmdDispatchIndirect-None-02693",
22575          "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>"
22576        }
22577      ],
22578      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
22579        {
22580          "vuid": "VUID-vkCmdDispatchIndirect-filterCubic-02694",
22581          "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>"
22582        },
22583        {
22584          "vuid": "VUID-vkCmdDispatchIndirect-filterCubicMinmax-02695",
22585          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
22586        }
22587      ],
22588      "(VK_NV_corner_sampled_image)": [
22589        {
22590          "vuid": "VUID-vkCmdDispatchIndirect-flags-02696",
22591          "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>"
22592        }
22593      ],
22594      "(VK_VERSION_1_1)": [
22595        {
22596          "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-02707",
22597          "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource"
22598        },
22599        {
22600          "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-02711",
22601          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
22602        }
22603      ]
22604    },
22605    "VkDispatchIndirectCommand": {
22606      "core": [
22607        {
22608          "vuid": "VUID-VkDispatchIndirectCommand-x-00417",
22609          "text": " <code>x</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
22610        },
22611        {
22612          "vuid": "VUID-VkDispatchIndirectCommand-y-00418",
22613          "text": " <code>y</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
22614        },
22615        {
22616          "vuid": "VUID-VkDispatchIndirectCommand-z-00419",
22617          "text": " <code>z</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
22618        }
22619      ]
22620    },
22621    "vkCmdDispatchBase": {
22622      "core": [
22623        {
22624          "vuid": "VUID-vkCmdDispatchBase-None-02690",
22625          "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>"
22626        },
22627        {
22628          "vuid": "VUID-vkCmdDispatchBase-None-02691",
22629          "text": " If a <code>VkImageView</code> is accessed using atomic operations 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_STORAGE_IMAGE_ATOMIC_BIT</code>"
22630        },
22631        {
22632          "vuid": "VUID-vkCmdDispatchBase-None-02697",
22633          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, 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>"
22634        },
22635        {
22636          "vuid": "VUID-vkCmdDispatchBase-None-02698",
22637          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, 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>"
22638        },
22639        {
22640          "vuid": "VUID-vkCmdDispatchBase-None-02699",
22641          "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 <code>VkPipeline</code> bound to the pipeline bind point used by this command"
22642        },
22643        {
22644          "vuid": "VUID-vkCmdDispatchBase-None-02700",
22645          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
22646        },
22647        {
22648          "vuid": "VUID-vkCmdDispatchBase-commandBuffer-02701",
22649          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
22650        },
22651        {
22652          "vuid": "VUID-vkCmdDispatchBase-None-02859",
22653          "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound"
22654        },
22655        {
22656          "vuid": "VUID-vkCmdDispatchBase-None-02702",
22657          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
22658        },
22659        {
22660          "vuid": "VUID-vkCmdDispatchBase-None-02703",
22661          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
22662        },
22663        {
22664          "vuid": "VUID-vkCmdDispatchBase-None-02704",
22665          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
22666        },
22667        {
22668          "vuid": "VUID-vkCmdDispatchBase-None-02705",
22669          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
22670        },
22671        {
22672          "vuid": "VUID-vkCmdDispatchBase-None-02706",
22673          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
22674        },
22675        {
22676          "vuid": "VUID-vkCmdDispatchBase-None-04115",
22677          "text": " If a <code>VkImageView</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format."
22678        },
22679        {
22680          "vuid": "VUID-vkCmdDispatchBase-baseGroupX-00421",
22681          "text": " <code>baseGroupX</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
22682        },
22683        {
22684          "vuid": "VUID-vkCmdDispatchBase-baseGroupX-00422",
22685          "text": " <code>baseGroupX</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
22686        },
22687        {
22688          "vuid": "VUID-vkCmdDispatchBase-baseGroupZ-00423",
22689          "text": " <code>baseGroupZ</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
22690        },
22691        {
22692          "vuid": "VUID-vkCmdDispatchBase-groupCountX-00424",
22693          "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>"
22694        },
22695        {
22696          "vuid": "VUID-vkCmdDispatchBase-groupCountY-00425",
22697          "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>"
22698        },
22699        {
22700          "vuid": "VUID-vkCmdDispatchBase-groupCountZ-00426",
22701          "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>"
22702        },
22703        {
22704          "vuid": "VUID-vkCmdDispatchBase-baseGroupX-00427",
22705          "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"
22706        }
22707      ],
22708      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
22709        {
22710          "vuid": "VUID-vkCmdDispatchBase-None-02692",
22711          "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>"
22712        }
22713      ],
22714      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
22715        {
22716          "vuid": "VUID-vkCmdDispatchBase-None-02693",
22717          "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>"
22718        }
22719      ],
22720      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
22721        {
22722          "vuid": "VUID-vkCmdDispatchBase-filterCubic-02694",
22723          "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>"
22724        },
22725        {
22726          "vuid": "VUID-vkCmdDispatchBase-filterCubicMinmax-02695",
22727          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
22728        }
22729      ],
22730      "(VK_NV_corner_sampled_image)": [
22731        {
22732          "vuid": "VUID-vkCmdDispatchBase-flags-02696",
22733          "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>"
22734        }
22735      ],
22736      "(VK_VERSION_1_1)": [
22737        {
22738          "vuid": "VUID-vkCmdDispatchBase-commandBuffer-02707",
22739          "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource"
22740        }
22741      ],
22742      "(VK_VERSION_1_1,VK_KHR_device_group)": [
22743        {
22744          "vuid": "VUID-vkCmdDispatchBase-commandBuffer-parameter",
22745          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
22746        },
22747        {
22748          "vuid": "VUID-vkCmdDispatchBase-commandBuffer-recording",
22749          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
22750        },
22751        {
22752          "vuid": "VUID-vkCmdDispatchBase-commandBuffer-cmdpool",
22753          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
22754        },
22755        {
22756          "vuid": "VUID-vkCmdDispatchBase-renderpass",
22757          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
22758        }
22759      ]
22760    },
22761    "vkCreateIndirectCommandsLayoutNV": {
22762      "(VK_NV_device_generated_commands)": [
22763        {
22764          "vuid": "VUID-vkCreateIndirectCommandsLayoutNV-deviceGeneratedCommands-02929",
22765          "text": " The <a href=\"#feature-device-generated-commands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
22766        },
22767        {
22768          "vuid": "VUID-vkCreateIndirectCommandsLayoutNV-device-parameter",
22769          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
22770        },
22771        {
22772          "vuid": "VUID-vkCreateIndirectCommandsLayoutNV-pCreateInfo-parameter",
22773          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkIndirectCommandsLayoutCreateInfoNV\">VkIndirectCommandsLayoutCreateInfoNV</a> structure"
22774        },
22775        {
22776          "vuid": "VUID-vkCreateIndirectCommandsLayoutNV-pAllocator-parameter",
22777          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
22778        },
22779        {
22780          "vuid": "VUID-vkCreateIndirectCommandsLayoutNV-pIndirectCommandsLayout-parameter",
22781          "text": " <code>pIndirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkIndirectCommandsLayoutNV\">VkIndirectCommandsLayoutNV</a> handle"
22782        }
22783      ]
22784    },
22785    "VkIndirectCommandsLayoutCreateInfoNV": {
22786      "(VK_NV_device_generated_commands)": [
22787        {
22788          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pipelineBindPoint-02930",
22789          "text": " The <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
22790        },
22791        {
22792          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-tokenCount-02931",
22793          "text": " <code>tokenCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>maxIndirectCommandsTokenCount</code>"
22794        },
22795        {
22796          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02932",
22797          "text": " If <code>pTokens</code> contains an entry of <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV</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"
22798        },
22799        {
22800          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02933",
22801          "text": " If <code>pTokens</code> contains an entry of <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV</code> there <strong class=\"purple\">must</strong> be only a single element of such token type"
22802        },
22803        {
22804          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02934",
22805          "text": " All state tokens in <code>pTokens</code> <strong class=\"purple\">must</strong> occur prior work provoking tokens (<code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV</code>)"
22806        },
22807        {
22808          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02935",
22809          "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>"
22810        },
22811        {
22812          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-streamCount-02936",
22813          "text": " <code>streamCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code> and less or equal to <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>maxIndirectCommandsStreamCount</code>"
22814        },
22815        {
22816          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pStreamStrides-02937",
22817          "text": " each element of <code>pStreamStrides</code> <strong class=\"purple\">must</strong> be greater than `0`and less than or equal to <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>maxIndirectCommandsStreamStride</code>. Furthermore the alignment of each token input <strong class=\"purple\">must</strong> be ensured"
22818        },
22819        {
22820          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-sType-sType",
22821          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV</code>"
22822        },
22823        {
22824          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pNext-pNext",
22825          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
22826        },
22827        {
22828          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-flags-parameter",
22829          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkIndirectCommandsLayoutUsageFlagBitsNV\">VkIndirectCommandsLayoutUsageFlagBitsNV</a> values"
22830        },
22831        {
22832          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-flags-requiredbitmask",
22833          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
22834        },
22835        {
22836          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pipelineBindPoint-parameter",
22837          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
22838        },
22839        {
22840          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-parameter",
22841          "text": " <code>pTokens</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tokenCount</code> valid <a href=\"#VkIndirectCommandsLayoutTokenNV\">VkIndirectCommandsLayoutTokenNV</a> structures"
22842        },
22843        {
22844          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pStreamStrides-parameter",
22845          "text": " <code>pStreamStrides</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>streamCount</code> <code>uint32_t</code> values"
22846        },
22847        {
22848          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-tokenCount-arraylength",
22849          "text": " <code>tokenCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
22850        },
22851        {
22852          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-streamCount-arraylength",
22853          "text": " <code>streamCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
22854        }
22855      ]
22856    },
22857    "vkDestroyIndirectCommandsLayoutNV": {
22858      "(VK_NV_device_generated_commands)": [
22859        {
22860          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-02938",
22861          "text": " All submitted commands that refer to <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> have completed execution"
22862        },
22863        {
22864          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-02939",
22865          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>indirectCommandsLayout</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
22866        },
22867        {
22868          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-02940",
22869          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>indirectCommandsLayout</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
22870        },
22871        {
22872          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-deviceGeneratedCommands-02941",
22873          "text": " The <a href=\"#feature-device-generated-commands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
22874        },
22875        {
22876          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-device-parameter",
22877          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
22878        },
22879        {
22880          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-parameter",
22881          "text": " If <code>indirectCommandsLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsLayoutNV\">VkIndirectCommandsLayoutNV</a> handle"
22882        },
22883        {
22884          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-pAllocator-parameter",
22885          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
22886        },
22887        {
22888          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-parent",
22889          "text": " If <code>indirectCommandsLayout</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
22890        }
22891      ]
22892    },
22893    "VkIndirectCommandsStreamNV": {
22894      "(VK_NV_device_generated_commands)": [
22895        {
22896          "vuid": "VUID-VkIndirectCommandsStreamNV-buffer-02942",
22897          "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"
22898        },
22899        {
22900          "vuid": "VUID-VkIndirectCommandsStreamNV-offset-02943",
22901          "text": " The <code>offset</code> <strong class=\"purple\">must</strong> be aligned to <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>minIndirectCommandsBufferOffsetAlignment</code>"
22902        },
22903        {
22904          "vuid": "VUID-VkIndirectCommandsStreamNV-buffer-02975",
22905          "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"
22906        },
22907        {
22908          "vuid": "VUID-VkIndirectCommandsStreamNV-buffer-parameter",
22909          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
22910        }
22911      ]
22912    },
22913    "VkBindShaderGroupIndirectCommandNV": {
22914      "(VK_NV_device_generated_commands)": [
22915        {
22916          "vuid": "VUID-VkBindShaderGroupIndirectCommandNV-None-02944",
22917          "text": " The current bound graphics pipeline, as well as the pipelines it may reference, <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>"
22918        },
22919        {
22920          "vuid": "VUID-VkBindShaderGroupIndirectCommandNV-index-02945",
22921          "text": " The <code>index</code> <strong class=\"purple\">must</strong> be within range of the accessible shader groups of the current bound graphics pipeline. See <a href=\"#vkCmdBindPipelineShaderGroupNV\">vkCmdBindPipelineShaderGroupNV</a> for further details"
22922        }
22923      ]
22924    },
22925    "VkBindIndexBufferIndirectCommandNV": {
22926      "(VK_NV_device_generated_commands)": [
22927        {
22928          "vuid": "VUID-VkBindIndexBufferIndirectCommandNV-None-02946",
22929          "text": " The buffer&#8217;s usage flag from which the address was acquired <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDEX_BUFFER_BIT</code> bit set"
22930        },
22931        {
22932          "vuid": "VUID-VkBindIndexBufferIndirectCommandNV-bufferAddress-02947",
22933          "text": " The <code>bufferAddress</code> <strong class=\"purple\">must</strong> be aligned to the <code>indexType</code> used"
22934        },
22935        {
22936          "vuid": "VUID-VkBindIndexBufferIndirectCommandNV-None-02948",
22937          "text": " Each element of the buffer from which the address was acquired and that is non-sparse <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
22938        },
22939        {
22940          "vuid": "VUID-VkBindIndexBufferIndirectCommandNV-indexType-parameter",
22941          "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value"
22942        }
22943      ]
22944    },
22945    "VkBindVertexBufferIndirectCommandNV": {
22946      "(VK_NV_device_generated_commands)": [
22947        {
22948          "vuid": "VUID-VkBindVertexBufferIndirectCommandNV-None-02949",
22949          "text": " The buffer&#8217;s usage flag from which the address was acquired <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_VERTEX_BUFFER_BIT</code> bit set"
22950        },
22951        {
22952          "vuid": "VUID-VkBindVertexBufferIndirectCommandNV-None-02950",
22953          "text": " Each element of the buffer from which the address was acquired and that is non-sparse <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
22954        }
22955      ]
22956    },
22957    "VkIndirectCommandsLayoutTokenNV": {
22958      "(VK_NV_device_generated_commands)": [
22959        {
22960          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-stream-02951",
22961          "text": " <code>stream</code> <strong class=\"purple\">must</strong> be smaller than <code>VkIndirectCommandsLayoutCreateInfoNV</code>::<code>streamCount</code>"
22962        },
22963        {
22964          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-offset-02952",
22965          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>maxIndirectCommandsTokenOffset</code>"
22966        },
22967        {
22968          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02976",
22969          "text": " If <code>tokenType</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV</code>, <code>vertexBindingUnit</code> <strong class=\"purple\">must</strong> stay within device supported limits for the appropriate commands"
22970        },
22971        {
22972          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02977",
22973          "text": " If <code>tokenType</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV</code>, <code>pushconstantPipelineLayout</code> <strong class=\"purple\">must</strong> be valid"
22974        },
22975        {
22976          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02978",
22977          "text": " If <code>tokenType</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV</code>, <code>pushconstantOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
22978        },
22979        {
22980          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02979",
22981          "text": " If <code>tokenType</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV</code>, <code>pushconstantSize</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
22982        },
22983        {
22984          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02980",
22985          "text": " If <code>tokenType</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV</code>, <code>pushconstantOffset</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code>"
22986        },
22987        {
22988          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02981",
22989          "text": " If <code>tokenType</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV</code>, <code>pushconstantSize</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code> minus <code>pushconstantOffset</code>"
22990        },
22991        {
22992          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02982",
22993          "text": " If <code>tokenType</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV</code>, for each byte in the range specified by <code>pushconstantOffset</code> and <code>pushconstantSize</code> and for each shader stage in <code>pushconstantShaderStageFlags</code>, there <strong class=\"purple\">must</strong> be a push constant range in <code>pushconstantPipelineLayout</code> that includes that byte and that stage"
22994        },
22995        {
22996          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02983",
22997          "text": " If <code>tokenType</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV</code>, for each byte in the range specified by <code>pushconstantOffset</code> and <code>pushconstantSize</code> and for each push constant range that overlaps that byte, <code>pushconstantShaderStageFlags</code> <strong class=\"purple\">must</strong> include all stages in that push constant range&#8217;s <a href=\"#VkPushConstantRange\">VkPushConstantRange</a>::<code>pushconstantShaderStageFlags</code>"
22998        },
22999        {
23000          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02984",
23001          "text": " If <code>tokenType</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV</code>, <code>indirectStateFlags</code> <strong class=\"purple\">must</strong> not be ´0´"
23002        },
23003        {
23004          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-sType-sType",
23005          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV</code>"
23006        },
23007        {
23008          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-pNext-pNext",
23009          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
23010        },
23011        {
23012          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-parameter",
23013          "text": " <code>tokenType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsTokenTypeNV\">VkIndirectCommandsTokenTypeNV</a> value"
23014        },
23015        {
23016          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-pushconstantPipelineLayout-parameter",
23017          "text": " If <code>pushconstantPipelineLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pushconstantPipelineLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle"
23018        },
23019        {
23020          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-pushconstantShaderStageFlags-parameter",
23021          "text": " <code>pushconstantShaderStageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values"
23022        },
23023        {
23024          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-indirectStateFlags-parameter",
23025          "text": " <code>indirectStateFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkIndirectStateFlagBitsNV\">VkIndirectStateFlagBitsNV</a> values"
23026        },
23027        {
23028          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-pIndexTypes-parameter",
23029          "text": " If <code>indexTypeCount</code> is not <code>0</code>, <code>pIndexTypes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>indexTypeCount</code> valid <a href=\"#VkIndexType\">VkIndexType</a> values"
23030        },
23031        {
23032          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-pIndexTypeValues-parameter",
23033          "text": " If <code>indexTypeCount</code> is not <code>0</code>, <code>pIndexTypeValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>indexTypeCount</code> <code>uint32_t</code> values"
23034        }
23035      ]
23036    },
23037    "vkGetGeneratedCommandsMemoryRequirementsNV": {
23038      "(VK_NV_device_generated_commands)": [
23039        {
23040          "vuid": "VUID-vkGetGeneratedCommandsMemoryRequirementsNV-deviceGeneratedCommands-02906",
23041          "text": " The <a href=\"#feature-device-generated-commands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
23042        },
23043        {
23044          "vuid": "VUID-vkGetGeneratedCommandsMemoryRequirementsNV-device-parameter",
23045          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
23046        },
23047        {
23048          "vuid": "VUID-vkGetGeneratedCommandsMemoryRequirementsNV-pInfo-parameter",
23049          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkGeneratedCommandsMemoryRequirementsInfoNV\">VkGeneratedCommandsMemoryRequirementsInfoNV</a> structure"
23050        },
23051        {
23052          "vuid": "VUID-vkGetGeneratedCommandsMemoryRequirementsNV-pMemoryRequirements-parameter",
23053          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2\">VkMemoryRequirements2</a> structure"
23054        }
23055      ]
23056    },
23057    "VkGeneratedCommandsMemoryRequirementsInfoNV": {
23058      "(VK_NV_device_generated_commands)": [
23059        {
23060          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-maxSequencesCount-02907",
23061          "text": " <code>maxSequencesCount</code> <strong class=\"purple\">must</strong> be less or equal to <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</a>::<code>maxIndirectSequenceCount</code>"
23062        },
23063        {
23064          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-sType-sType",
23065          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV</code>"
23066        },
23067        {
23068          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pNext-pNext",
23069          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
23070        },
23071        {
23072          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pipelineBindPoint-parameter",
23073          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
23074        },
23075        {
23076          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pipeline-parameter",
23077          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
23078        },
23079        {
23080          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-indirectCommandsLayout-parameter",
23081          "text": " <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsLayoutNV\">VkIndirectCommandsLayoutNV</a> handle"
23082        },
23083        {
23084          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-commonparent",
23085          "text": " Both of <code>indirectCommandsLayout</code>, and <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
23086        }
23087      ]
23088    },
23089    "vkCmdExecuteGeneratedCommandsNV": {
23090      "core": [
23091        {
23092          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02690",
23093          "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>"
23094        },
23095        {
23096          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02691",
23097          "text": " If a <code>VkImageView</code> is accessed using atomic operations 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_STORAGE_IMAGE_ATOMIC_BIT</code>"
23098        },
23099        {
23100          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02697",
23101          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, 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>"
23102        },
23103        {
23104          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02698",
23105          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, 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>"
23106        },
23107        {
23108          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02699",
23109          "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 <code>VkPipeline</code> bound to the pipeline bind point used by this command"
23110        },
23111        {
23112          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02700",
23113          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
23114        },
23115        {
23116          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-02701",
23117          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
23118        },
23119        {
23120          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02859",
23121          "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound"
23122        },
23123        {
23124          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02702",
23125          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
23126        },
23127        {
23128          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02703",
23129          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
23130        },
23131        {
23132          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02704",
23133          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
23134        },
23135        {
23136          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02705",
23137          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
23138        },
23139        {
23140          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02706",
23141          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
23142        },
23143        {
23144          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04115",
23145          "text": " If a <code>VkImageView</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format."
23146        },
23147        {
23148          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-renderPass-02684",
23149          "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>"
23150        },
23151        {
23152          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-subpass-02685",
23153          "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>"
23154        },
23155        {
23156          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02686",
23157          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
23158        },
23159        {
23160          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02687",
23161          "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"
23162        },
23163        {
23164          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04007",
23165          "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 either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound"
23166        },
23167        {
23168          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04008",
23169          "text": " If the <a href=\"#features-nullDescriptor\">nullDescriptor</a> feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
23170        },
23171        {
23172          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02721",
23173          "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>"
23174        },
23175        {
23176          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-isPreprocessed-02908",
23177          "text": " If <code>isPreprocessed</code> is <code>VK_TRUE</code> then <a href=\"#vkCmdPreprocessGeneratedCommandsNV\">vkCmdPreprocessGeneratedCommandsNV</a> <strong class=\"purple\">must</strong> have already been executed on the device, using the same <code>pGeneratedCommandsInfo</code> content as well as the content of the input buffers it references (all except <a href=\"#VkGeneratedCommandsInfoNV\">VkGeneratedCommandsInfoNV</a>::<code>preprocessBuffer</code>). Furthermore <code>pGeneratedCommandsInfo</code>`s <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV</code> bit set"
23178        },
23179        {
23180          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pipeline-02909",
23181          "text": " <code>VkGeneratedCommandsInfoNV</code>::<code>pipeline</code> <strong class=\"purple\">must</strong> match the current bound pipeline at <code>VkGeneratedCommandsInfoNV</code>::<code>pipelineBindPoint</code>"
23182        },
23183        {
23184          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-deviceGeneratedCommands-02911",
23185          "text": " The <a href=\"#feature-device-generated-commands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
23186        }
23187      ],
23188      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
23189        {
23190          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02692",
23191          "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>"
23192        }
23193      ],
23194      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
23195        {
23196          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02693",
23197          "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>"
23198        }
23199      ],
23200      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
23201        {
23202          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-filterCubic-02694",
23203          "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>"
23204        },
23205        {
23206          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-filterCubicMinmax-02695",
23207          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
23208        }
23209      ],
23210      "(VK_NV_corner_sampled_image)": [
23211        {
23212          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-flags-02696",
23213          "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>"
23214        }
23215      ],
23216      "(VK_VERSION_1_1)": [
23217        {
23218          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-02707",
23219          "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource"
23220        },
23221        {
23222          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-02970",
23223          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
23224        }
23225      ],
23226      "(VK_VERSION_1_1,VK_KHR_multiview)": [
23227        {
23228          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-maxMultiviewInstanceIndex-02688",
23229          "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>"
23230        }
23231      ],
23232      "(VK_EXT_sample_locations)": [
23233        {
23234          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-02689",
23235          "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"
23236        }
23237      ],
23238      "(VK_EXT_extended_dynamic_state)": [
23239        {
23240          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-03417",
23241          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, then then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline"
23242        },
23243        {
23244          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-scissorCount-03418",
23245          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, then then <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline"
23246        },
23247        {
23248          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-03419",
23249          "text": " If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> and <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code>"
23250        },
23251        {
23252          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-primitiveTopology-03420",
23253          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPrimitiveTopologyEXT\">vkCmdSetPrimitiveTopologyEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopologyEXT</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state"
23254        }
23255      ],
23256      "(VK_EXT_transform_feedback)": [
23257        {
23258          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02910",
23259          "text": " Transform feedback <strong class=\"purple\">must</strong> not be active"
23260        }
23261      ],
23262      "(VK_NV_device_generated_commands)": [
23263        {
23264          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-parameter",
23265          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
23266        },
23267        {
23268          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pGeneratedCommandsInfo-parameter",
23269          "text": " <code>pGeneratedCommandsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkGeneratedCommandsInfoNV\">VkGeneratedCommandsInfoNV</a> structure"
23270        },
23271        {
23272          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-recording",
23273          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
23274        },
23275        {
23276          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-cmdpool",
23277          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
23278        },
23279        {
23280          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-renderpass",
23281          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
23282        }
23283      ]
23284    },
23285    "VkGeneratedCommandsInfoNV": {
23286      "(VK_NV_device_generated_commands)": [
23287        {
23288          "vuid": "VUID-VkGeneratedCommandsInfoNV-pipeline-02912",
23289          "text": " The provided <code>pipeline</code> <strong class=\"purple\">must</strong> match the pipeline bound at execution time"
23290        },
23291        {
23292          "vuid": "VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-02913",
23293          "text": " If the <code>indirectCommandsLayout</code> uses a token of <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV</code>, then the <code>pipeline</code> <strong class=\"purple\">must</strong> have been created with multiple shader groups"
23294        },
23295        {
23296          "vuid": "VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-02914",
23297          "text": " If the <code>indirectCommandsLayout</code> uses a token of <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV</code>, then the <code>pipeline</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code> set in <code>VkGraphicsPipelineCreateInfo</code>::<code>flags</code>"
23298        },
23299        {
23300          "vuid": "VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-02915",
23301          "text": " If the <code>indirectCommandsLayout</code> uses a token of <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV</code>, then the <code>pipeline</code>`s <code>VkPipelineLayout</code> <strong class=\"purple\">must</strong> match the <a href=\"#VkIndirectCommandsLayoutTokenNV\">VkIndirectCommandsLayoutTokenNV</a>::<code>pushconstantPipelineLayout</code>"
23302        },
23303        {
23304          "vuid": "VUID-VkGeneratedCommandsInfoNV-streamCount-02916",
23305          "text": " <code>streamCount</code> <strong class=\"purple\">must</strong> match the <code>indirectCommandsLayout</code>&#8217;s <code>streamCount</code>"
23306        },
23307        {
23308          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCount-02917",
23309          "text": " <code>sequencesCount</code> <strong class=\"purple\">must</strong> be less or equal to <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</a>::<code>maxIndirectSequenceCount</code> and <a href=\"#VkGeneratedCommandsMemoryRequirementsInfoNV\">VkGeneratedCommandsMemoryRequirementsInfoNV</a>::<code>maxSequencesCount</code> that was used to determine the <code>preprocessSize</code>"
23310        },
23311        {
23312          "vuid": "VUID-VkGeneratedCommandsInfoNV-preprocessBuffer-02918",
23313          "text": " <code>preprocessBuffer</code> <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set in its usage flag"
23314        },
23315        {
23316          "vuid": "VUID-VkGeneratedCommandsInfoNV-preprocessOffset-02919",
23317          "text": " <code>preprocessOffset</code> <strong class=\"purple\">must</strong> be aligned to <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</a>::<code>minIndirectCommandsBufferOffsetAlignment</code>"
23318        },
23319        {
23320          "vuid": "VUID-VkGeneratedCommandsInfoNV-preprocessBuffer-02971",
23321          "text": " If <code>preprocessBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
23322        },
23323        {
23324          "vuid": "VUID-VkGeneratedCommandsInfoNV-preprocessSize-02920",
23325          "text": " <code>preprocessSize</code> <strong class=\"purple\">must</strong> be at least equal to the memory requirement`s size returned by <a href=\"#vkGetGeneratedCommandsMemoryRequirementsNV\">vkGetGeneratedCommandsMemoryRequirementsNV</a> using the matching inputs (<code>indirectCommandsLayout</code>, &#8230;&#8203;) as within this structure"
23326        },
23327        {
23328          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02921",
23329          "text": " <code>sequencesCountBuffer</code> <strong class=\"purple\">can</strong> be set if the actual used count of sequences is sourced from the provided buffer. In that case the <code>sequencesCount</code> serves as upper bound"
23330        },
23331        {
23332          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02922",
23333          "text": " If <code>sequencesCountBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, its usage flag <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
23334        },
23335        {
23336          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02923",
23337          "text": " If <code>sequencesCountBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sequencesCountOffset</code> <strong class=\"purple\">must</strong> be aligned to <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>minSequencesCountBufferOffsetAlignment</code>"
23338        },
23339        {
23340          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02972",
23341          "text": " If <code>sequencesCountBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
23342        },
23343        {
23344          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02924",
23345          "text": " If <code>indirectCommandsLayout</code>&#8217;s <code>VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV</code> is set, <code>sequencesIndexBuffer</code> <strong class=\"purple\">must</strong> be set otherwise it <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
23346        },
23347        {
23348          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02925",
23349          "text": " If <code>sequencesIndexBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, its usage flag <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
23350        },
23351        {
23352          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02926",
23353          "text": " If <code>sequencesIndexBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sequencesIndexOffset</code> <strong class=\"purple\">must</strong> be aligned to <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>minSequencesIndexBufferOffsetAlignment</code>"
23354        },
23355        {
23356          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02973",
23357          "text": " If <code>sequencesIndexBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
23358        },
23359        {
23360          "vuid": "VUID-VkGeneratedCommandsInfoNV-sType-sType",
23361          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV</code>"
23362        },
23363        {
23364          "vuid": "VUID-VkGeneratedCommandsInfoNV-pNext-pNext",
23365          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
23366        },
23367        {
23368          "vuid": "VUID-VkGeneratedCommandsInfoNV-pipelineBindPoint-parameter",
23369          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
23370        },
23371        {
23372          "vuid": "VUID-VkGeneratedCommandsInfoNV-pipeline-parameter",
23373          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
23374        },
23375        {
23376          "vuid": "VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-parameter",
23377          "text": " <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsLayoutNV\">VkIndirectCommandsLayoutNV</a> handle"
23378        },
23379        {
23380          "vuid": "VUID-VkGeneratedCommandsInfoNV-pStreams-parameter",
23381          "text": " <code>pStreams</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>streamCount</code> valid <a href=\"#VkIndirectCommandsStreamNV\">VkIndirectCommandsStreamNV</a> structures"
23382        },
23383        {
23384          "vuid": "VUID-VkGeneratedCommandsInfoNV-preprocessBuffer-parameter",
23385          "text": " <code>preprocessBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
23386        },
23387        {
23388          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-parameter",
23389          "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 <a href=\"#VkBuffer\">VkBuffer</a> handle"
23390        },
23391        {
23392          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-parameter",
23393          "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 <a href=\"#VkBuffer\">VkBuffer</a> handle"
23394        },
23395        {
23396          "vuid": "VUID-VkGeneratedCommandsInfoNV-streamCount-arraylength",
23397          "text": " <code>streamCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
23398        },
23399        {
23400          "vuid": "VUID-VkGeneratedCommandsInfoNV-commonparent",
23401          "text": " Each of <code>indirectCommandsLayout</code>, <code>pipeline</code>, <code>preprocessBuffer</code>, <code>sequencesCountBuffer</code>, and <code>sequencesIndexBuffer</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
23402        }
23403      ]
23404    },
23405    "vkCmdPreprocessGeneratedCommandsNV": {
23406      "(VK_NV_device_generated_commands)+(VK_VERSION_1_1)": [
23407        {
23408          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-02974",
23409          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
23410        }
23411      ],
23412      "(VK_NV_device_generated_commands)": [
23413        {
23414          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-pGeneratedCommandsInfo-02927",
23415          "text": " <code>pGeneratedCommandsInfo</code>`s <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV</code> bit set"
23416        },
23417        {
23418          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-deviceGeneratedCommands-02928",
23419          "text": " The <a href=\"#feature-device-generated-commands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
23420        },
23421        {
23422          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-parameter",
23423          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
23424        },
23425        {
23426          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-pGeneratedCommandsInfo-parameter",
23427          "text": " <code>pGeneratedCommandsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkGeneratedCommandsInfoNV\">VkGeneratedCommandsInfoNV</a> structure"
23428        },
23429        {
23430          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-recording",
23431          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
23432        },
23433        {
23434          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-cmdpool",
23435          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
23436        },
23437        {
23438          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-renderpass",
23439          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
23440        }
23441      ]
23442    },
23443    "vkGetPhysicalDeviceSparseImageFormatProperties": {
23444      "core": [
23445        {
23446          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-samples-01094",
23447          "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 <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> when the image is created"
23448        },
23449        {
23450          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-physicalDevice-parameter",
23451          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
23452        },
23453        {
23454          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-format-parameter",
23455          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
23456        },
23457        {
23458          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-type-parameter",
23459          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
23460        },
23461        {
23462          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-samples-parameter",
23463          "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
23464        },
23465        {
23466          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-usage-parameter",
23467          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
23468        },
23469        {
23470          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-usage-requiredbitmask",
23471          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
23472        },
23473        {
23474          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-tiling-parameter",
23475          "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
23476        },
23477        {
23478          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-pPropertyCount-parameter",
23479          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
23480        },
23481        {
23482          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-pProperties-parameter",
23483          "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> <a href=\"#VkSparseImageFormatProperties\">VkSparseImageFormatProperties</a> structures"
23484        }
23485      ]
23486    },
23487    "vkGetPhysicalDeviceSparseImageFormatProperties2": {
23488      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
23489        {
23490          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-physicalDevice-parameter",
23491          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
23492        },
23493        {
23494          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pFormatInfo-parameter",
23495          "text": " <code>pFormatInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceSparseImageFormatInfo2\">VkPhysicalDeviceSparseImageFormatInfo2</a> structure"
23496        },
23497        {
23498          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pPropertyCount-parameter",
23499          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
23500        },
23501        {
23502          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pProperties-parameter",
23503          "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> <a href=\"#VkSparseImageFormatProperties2\">VkSparseImageFormatProperties2</a> structures"
23504        }
23505      ]
23506    },
23507    "VkPhysicalDeviceSparseImageFormatInfo2": {
23508      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
23509        {
23510          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-samples-01095",
23511          "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 <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> when the image is created"
23512        },
23513        {
23514          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-sType-sType",
23515          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2</code>"
23516        },
23517        {
23518          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-pNext-pNext",
23519          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
23520        },
23521        {
23522          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-format-parameter",
23523          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
23524        },
23525        {
23526          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-type-parameter",
23527          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
23528        },
23529        {
23530          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-samples-parameter",
23531          "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
23532        },
23533        {
23534          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-usage-parameter",
23535          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
23536        },
23537        {
23538          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-usage-requiredbitmask",
23539          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
23540        },
23541        {
23542          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-tiling-parameter",
23543          "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
23544        }
23545      ]
23546    },
23547    "VkSparseImageFormatProperties2": {
23548      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
23549        {
23550          "vuid": "VUID-VkSparseImageFormatProperties2-sType-sType",
23551          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2</code>"
23552        },
23553        {
23554          "vuid": "VUID-VkSparseImageFormatProperties2-pNext-pNext",
23555          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
23556        }
23557      ]
23558    },
23559    "vkGetImageSparseMemoryRequirements": {
23560      "core": [
23561        {
23562          "vuid": "VUID-vkGetImageSparseMemoryRequirements-device-parameter",
23563          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
23564        },
23565        {
23566          "vuid": "VUID-vkGetImageSparseMemoryRequirements-image-parameter",
23567          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
23568        },
23569        {
23570          "vuid": "VUID-vkGetImageSparseMemoryRequirements-pSparseMemoryRequirementCount-parameter",
23571          "text": " <code>pSparseMemoryRequirementCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
23572        },
23573        {
23574          "vuid": "VUID-vkGetImageSparseMemoryRequirements-pSparseMemoryRequirements-parameter",
23575          "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> <a href=\"#VkSparseImageMemoryRequirements\">VkSparseImageMemoryRequirements</a> structures"
23576        },
23577        {
23578          "vuid": "VUID-vkGetImageSparseMemoryRequirements-image-parent",
23579          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
23580        }
23581      ]
23582    },
23583    "vkGetImageSparseMemoryRequirements2": {
23584      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
23585        {
23586          "vuid": "VUID-vkGetImageSparseMemoryRequirements2-device-parameter",
23587          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
23588        },
23589        {
23590          "vuid": "VUID-vkGetImageSparseMemoryRequirements2-pInfo-parameter",
23591          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageSparseMemoryRequirementsInfo2\">VkImageSparseMemoryRequirementsInfo2</a> structure"
23592        },
23593        {
23594          "vuid": "VUID-vkGetImageSparseMemoryRequirements2-pSparseMemoryRequirementCount-parameter",
23595          "text": " <code>pSparseMemoryRequirementCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
23596        },
23597        {
23598          "vuid": "VUID-vkGetImageSparseMemoryRequirements2-pSparseMemoryRequirements-parameter",
23599          "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> <a href=\"#VkSparseImageMemoryRequirements2\">VkSparseImageMemoryRequirements2</a> structures"
23600        }
23601      ]
23602    },
23603    "VkImageSparseMemoryRequirementsInfo2": {
23604      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
23605        {
23606          "vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-sType-sType",
23607          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2</code>"
23608        },
23609        {
23610          "vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-pNext-pNext",
23611          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
23612        },
23613        {
23614          "vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-image-parameter",
23615          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
23616        }
23617      ]
23618    },
23619    "VkSparseImageMemoryRequirements2": {
23620      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
23621        {
23622          "vuid": "VUID-VkSparseImageMemoryRequirements2-sType-sType",
23623          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2</code>"
23624        },
23625        {
23626          "vuid": "VUID-VkSparseImageMemoryRequirements2-pNext-pNext",
23627          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
23628        }
23629      ]
23630    },
23631    "VkSparseMemoryBind": {
23632      "core": [
23633        {
23634          "vuid": "VUID-VkSparseMemoryBind-memory-01096",
23635          "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>"
23636        },
23637        {
23638          "vuid": "VUID-VkSparseMemoryBind-memory-01097",
23639          "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"
23640        },
23641        {
23642          "vuid": "VUID-VkSparseMemoryBind-size-01098",
23643          "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
23644        },
23645        {
23646          "vuid": "VUID-VkSparseMemoryBind-resourceOffset-01099",
23647          "text": " <code>resourceOffset</code> <strong class=\"purple\">must</strong> be less than the size of the resource"
23648        },
23649        {
23650          "vuid": "VUID-VkSparseMemoryBind-size-01100",
23651          "text": " <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to the size of the resource minus <code>resourceOffset</code>"
23652        },
23653        {
23654          "vuid": "VUID-VkSparseMemoryBind-memoryOffset-01101",
23655          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
23656        },
23657        {
23658          "vuid": "VUID-VkSparseMemoryBind-size-01102",
23659          "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>"
23660        },
23661        {
23662          "vuid": "VUID-VkSparseMemoryBind-memory-parameter",
23663          "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 <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
23664        },
23665        {
23666          "vuid": "VUID-VkSparseMemoryBind-flags-parameter",
23667          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSparseMemoryBindFlagBits\">VkSparseMemoryBindFlagBits</a> values"
23668        }
23669      ],
23670      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
23671        {
23672          "vuid": "VUID-VkSparseMemoryBind-memory-02730",
23673          "text": " If <code>memory</code> was created with <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> not equal to <code>0</code>, at least one handle type it contained <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> or <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when the resource was created"
23674        },
23675        {
23676          "vuid": "VUID-VkSparseMemoryBind-memory-02731",
23677          "text": " If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> or <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when the resource was created"
23678        }
23679      ]
23680    },
23681    "VkSparseBufferMemoryBindInfo": {
23682      "core": [
23683        {
23684          "vuid": "VUID-VkSparseBufferMemoryBindInfo-buffer-parameter",
23685          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
23686        },
23687        {
23688          "vuid": "VUID-VkSparseBufferMemoryBindInfo-pBinds-parameter",
23689          "text": " <code>pBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindCount</code> valid <a href=\"#VkSparseMemoryBind\">VkSparseMemoryBind</a> structures"
23690        },
23691        {
23692          "vuid": "VUID-VkSparseBufferMemoryBindInfo-bindCount-arraylength",
23693          "text": " <code>bindCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
23694        }
23695      ]
23696    },
23697    "VkSparseImageOpaqueMemoryBindInfo": {
23698      "core": [
23699        {
23700          "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-01103",
23701          "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>"
23702        },
23703        {
23704          "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-image-parameter",
23705          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
23706        },
23707        {
23708          "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-parameter",
23709          "text": " <code>pBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindCount</code> valid <a href=\"#VkSparseMemoryBind\">VkSparseMemoryBind</a> structures"
23710        },
23711        {
23712          "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-bindCount-arraylength",
23713          "text": " <code>bindCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
23714        }
23715      ]
23716    },
23717    "VkSparseImageMemoryBindInfo": {
23718      "core": [
23719        {
23720          "vuid": "VUID-VkSparseImageMemoryBindInfo-subresource-01722",
23721          "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"
23722        },
23723        {
23724          "vuid": "VUID-VkSparseImageMemoryBindInfo-subresource-01723",
23725          "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"
23726        },
23727        {
23728          "vuid": "VUID-VkSparseImageMemoryBindInfo-image-02901",
23729          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> set"
23730        },
23731        {
23732          "vuid": "VUID-VkSparseImageMemoryBindInfo-image-parameter",
23733          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
23734        },
23735        {
23736          "vuid": "VUID-VkSparseImageMemoryBindInfo-pBinds-parameter",
23737          "text": " <code>pBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindCount</code> valid <a href=\"#VkSparseImageMemoryBind\">VkSparseImageMemoryBind</a> structures"
23738        },
23739        {
23740          "vuid": "VUID-VkSparseImageMemoryBindInfo-bindCount-arraylength",
23741          "text": " <code>bindCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
23742        }
23743      ]
23744    },
23745    "VkSparseImageMemoryBind": {
23746      "core": [
23747        {
23748          "vuid": "VUID-VkSparseImageMemoryBind-memory-01104",
23749          "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"
23750        },
23751        {
23752          "vuid": "VUID-VkSparseImageMemoryBind-memory-01105",
23753          "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>"
23754        },
23755        {
23756          "vuid": "VUID-VkSparseImageMemoryBind-subresource-01106",
23757          "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>)"
23758        },
23759        {
23760          "vuid": "VUID-VkSparseImageMemoryBind-offset-01107",
23761          "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"
23762        },
23763        {
23764          "vuid": "VUID-VkSparseImageMemoryBind-extent-01108",
23765          "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"
23766        },
23767        {
23768          "vuid": "VUID-VkSparseImageMemoryBind-offset-01109",
23769          "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"
23770        },
23771        {
23772          "vuid": "VUID-VkSparseImageMemoryBind-extent-01110",
23773          "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"
23774        },
23775        {
23776          "vuid": "VUID-VkSparseImageMemoryBind-offset-01111",
23777          "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"
23778        },
23779        {
23780          "vuid": "VUID-VkSparseImageMemoryBind-extent-01112",
23781          "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"
23782        },
23783        {
23784          "vuid": "VUID-VkSparseImageMemoryBind-subresource-parameter",
23785          "text": " <code>subresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresource\">VkImageSubresource</a> structure"
23786        },
23787        {
23788          "vuid": "VUID-VkSparseImageMemoryBind-memory-parameter",
23789          "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 <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
23790        },
23791        {
23792          "vuid": "VUID-VkSparseImageMemoryBind-flags-parameter",
23793          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSparseMemoryBindFlagBits\">VkSparseMemoryBindFlagBits</a> values"
23794        }
23795      ],
23796      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
23797        {
23798          "vuid": "VUID-VkSparseImageMemoryBind-memory-02732",
23799          "text": " If <code>memory</code> was created with <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> not equal to <code>0</code>, at least one handle type it contained <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when the image was created"
23800        },
23801        {
23802          "vuid": "VUID-VkSparseImageMemoryBind-memory-02733",
23803          "text": " If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created"
23804        }
23805      ]
23806    },
23807    "vkQueueBindSparse": {
23808      "core": [
23809        {
23810          "vuid": "VUID-vkQueueBindSparse-fence-01113",
23811          "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"
23812        },
23813        {
23814          "vuid": "VUID-vkQueueBindSparse-fence-01114",
23815          "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"
23816        },
23817        {
23818          "vuid": "VUID-vkQueueBindSparse-pSignalSemaphores-01115",
23819          "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"
23820        },
23821        {
23822          "vuid": "VUID-vkQueueBindSparse-pWaitSemaphores-01116",
23823          "text": " When a semaphore wait operation referring to a binary semaphore defined by any element of the <code>pWaitSemaphores</code> member of any element of <code>pBindInfo</code> executes on <code>queue</code>, there <strong class=\"purple\">must</strong> be no other queues waiting on the same semaphore"
23824        },
23825        {
23826          "vuid": "VUID-vkQueueBindSparse-pWaitSemaphores-01117",
23827          "text": " All elements of the <code>pWaitSemaphores</code> member of all elements of <code>pBindInfo</code> member referring to a binary semaphore <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"
23828        },
23829        {
23830          "vuid": "VUID-vkQueueBindSparse-queue-parameter",
23831          "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle"
23832        },
23833        {
23834          "vuid": "VUID-vkQueueBindSparse-pBindInfo-parameter",
23835          "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 <a href=\"#VkBindSparseInfo\">VkBindSparseInfo</a> structures"
23836        },
23837        {
23838          "vuid": "VUID-vkQueueBindSparse-fence-parameter",
23839          "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 <a href=\"#VkFence\">VkFence</a> handle"
23840        },
23841        {
23842          "vuid": "VUID-vkQueueBindSparse-queuetype",
23843          "text": " The <code>queue</code> <strong class=\"purple\">must</strong> support sparse binding operations"
23844        },
23845        {
23846          "vuid": "VUID-vkQueueBindSparse-commonparent",
23847          "text": " Both of <code>fence</code>, and <code>queue</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
23848        }
23849      ],
23850      "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
23851        {
23852          "vuid": "VUID-vkQueueBindSparse-pWaitSemaphores-03245",
23853          "text": " All elements of the <code>pWaitSemaphores</code> member of all elements of <code>pBindInfo</code> created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_BINARY</code> <strong class=\"purple\">must</strong> reference a semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends (if any) <strong class=\"purple\">must</strong> have also been submitted for execution"
23854        }
23855      ]
23856    },
23857    "VkBindSparseInfo": {
23858      "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
23859        {
23860          "vuid": "VUID-VkBindSparseInfo-pWaitSemaphores-03246",
23861          "text": " If any element of <code>pWaitSemaphores</code> or <code>pSignalSemaphores</code> was created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a> structure"
23862        },
23863        {
23864          "vuid": "VUID-VkBindSparseInfo-pNext-03247",
23865          "text": " If the <code>pNext</code> chain of this structure includes a <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a> structure and any element of <code>pWaitSemaphores</code> was created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> then its <code>waitSemaphoreValueCount</code> member <strong class=\"purple\">must</strong> equal <code>waitSemaphoreCount</code>"
23866        },
23867        {
23868          "vuid": "VUID-VkBindSparseInfo-pNext-03248",
23869          "text": " If the <code>pNext</code> chain of this structure includes a <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a> structure and any element of <code>pSignalSemaphores</code> was created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> then its <code>signalSemaphoreValueCount</code> member <strong class=\"purple\">must</strong> equal <code>signalSemaphoreCount</code>"
23870        },
23871        {
23872          "vuid": "VUID-VkBindSparseInfo-pSignalSemaphores-03249",
23873          "text": " For each element of <code>pSignalSemaphores</code> created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> the corresponding element of <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a>::pSignalSemaphoreValues <strong class=\"purple\">must</strong> have a value greater than the current value of the semaphore when the <a href=\"#synchronization-semaphores-signaling\">semaphore signal operation</a> is executed"
23874        },
23875        {
23876          "vuid": "VUID-VkBindSparseInfo-pWaitSemaphores-03250",
23877          "text": " For each element of <code>pWaitSemaphores</code> created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> the corresponding element of <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a>::pWaitSemaphoreValues <strong class=\"purple\">must</strong> have a value which does not differ from the current value of the semaphore or from the value of any outstanding semaphore wait or signal operation on that semaphore by more than <a href=\"#limits-maxTimelineSemaphoreValueDifference\"><code>maxTimelineSemaphoreValueDifference</code></a>"
23878        },
23879        {
23880          "vuid": "VUID-VkBindSparseInfo-pSignalSemaphores-03251",
23881          "text": " For each element of <code>pSignalSemaphores</code> created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> the corresponding element of <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a>::pSignalSemaphoreValues <strong class=\"purple\">must</strong> have a value which does not differ from the current value of the semaphore or from the value of any outstanding semaphore wait or signal operation on that semaphore by more than <a href=\"#limits-maxTimelineSemaphoreValueDifference\"><code>maxTimelineSemaphoreValueDifference</code></a>"
23882        }
23883      ],
23884      "core": [
23885        {
23886          "vuid": "VUID-VkBindSparseInfo-sType-sType",
23887          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_SPARSE_INFO</code>"
23888        },
23889        {
23890          "vuid": "VUID-VkBindSparseInfo-pNext-pNext",
23891          "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=\"#VkDeviceGroupBindSparseInfo\">VkDeviceGroupBindSparseInfo</a> or <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a>"
23892        },
23893        {
23894          "vuid": "VUID-VkBindSparseInfo-sType-unique",
23895          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
23896        },
23897        {
23898          "vuid": "VUID-VkBindSparseInfo-pWaitSemaphores-parameter",
23899          "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 <a href=\"#VkSemaphore\">VkSemaphore</a> handles"
23900        },
23901        {
23902          "vuid": "VUID-VkBindSparseInfo-pBufferBinds-parameter",
23903          "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 <a href=\"#VkSparseBufferMemoryBindInfo\">VkSparseBufferMemoryBindInfo</a> structures"
23904        },
23905        {
23906          "vuid": "VUID-VkBindSparseInfo-pImageOpaqueBinds-parameter",
23907          "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 <a href=\"#VkSparseImageOpaqueMemoryBindInfo\">VkSparseImageOpaqueMemoryBindInfo</a> structures"
23908        },
23909        {
23910          "vuid": "VUID-VkBindSparseInfo-pImageBinds-parameter",
23911          "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 <a href=\"#VkSparseImageMemoryBindInfo\">VkSparseImageMemoryBindInfo</a> structures"
23912        },
23913        {
23914          "vuid": "VUID-VkBindSparseInfo-pSignalSemaphores-parameter",
23915          "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 <a href=\"#VkSemaphore\">VkSemaphore</a> handles"
23916        },
23917        {
23918          "vuid": "VUID-VkBindSparseInfo-commonparent",
23919          "text": " Both of the elements of <code>pSignalSemaphores</code>, and the elements of <code>pWaitSemaphores</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
23920        }
23921      ]
23922    },
23923    "VkDeviceGroupBindSparseInfo": {
23924      "(VK_VERSION_1_1,VK_KHR_device_group)": [
23925        {
23926          "vuid": "VUID-VkDeviceGroupBindSparseInfo-resourceDeviceIndex-01118",
23927          "text": " <code>resourceDeviceIndex</code> and <code>memoryDeviceIndex</code> <strong class=\"purple\">must</strong> both be valid device indices"
23928        },
23929        {
23930          "vuid": "VUID-VkDeviceGroupBindSparseInfo-memoryDeviceIndex-01119",
23931          "text": " Each memory allocation bound in this batch <strong class=\"purple\">must</strong> have allocated an instance for <code>memoryDeviceIndex</code>"
23932        },
23933        {
23934          "vuid": "VUID-VkDeviceGroupBindSparseInfo-sType-sType",
23935          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO</code>"
23936        }
23937      ]
23938    },
23939    "vkCreateAndroidSurfaceKHR": {
23940      "(VK_KHR_surface)+(VK_KHR_android_surface)": [
23941        {
23942          "vuid": "VUID-vkCreateAndroidSurfaceKHR-instance-parameter",
23943          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
23944        },
23945        {
23946          "vuid": "VUID-vkCreateAndroidSurfaceKHR-pCreateInfo-parameter",
23947          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAndroidSurfaceCreateInfoKHR\">VkAndroidSurfaceCreateInfoKHR</a> structure"
23948        },
23949        {
23950          "vuid": "VUID-vkCreateAndroidSurfaceKHR-pAllocator-parameter",
23951          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
23952        },
23953        {
23954          "vuid": "VUID-vkCreateAndroidSurfaceKHR-pSurface-parameter",
23955          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
23956        }
23957      ]
23958    },
23959    "VkAndroidSurfaceCreateInfoKHR": {
23960      "(VK_KHR_surface)+(VK_KHR_android_surface)": [
23961        {
23962          "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-window-01248",
23963          "text": " <code>window</code> <strong class=\"purple\">must</strong> point to a valid Android <code>ANativeWindow</code>"
23964        },
23965        {
23966          "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-sType-sType",
23967          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR</code>"
23968        },
23969        {
23970          "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-pNext-pNext",
23971          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
23972        },
23973        {
23974          "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-flags-zerobitmask",
23975          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
23976        }
23977      ]
23978    },
23979    "vkCreateWaylandSurfaceKHR": {
23980      "(VK_KHR_surface)+(VK_KHR_wayland_surface)": [
23981        {
23982          "vuid": "VUID-vkCreateWaylandSurfaceKHR-instance-parameter",
23983          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
23984        },
23985        {
23986          "vuid": "VUID-vkCreateWaylandSurfaceKHR-pCreateInfo-parameter",
23987          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkWaylandSurfaceCreateInfoKHR\">VkWaylandSurfaceCreateInfoKHR</a> structure"
23988        },
23989        {
23990          "vuid": "VUID-vkCreateWaylandSurfaceKHR-pAllocator-parameter",
23991          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
23992        },
23993        {
23994          "vuid": "VUID-vkCreateWaylandSurfaceKHR-pSurface-parameter",
23995          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
23996        }
23997      ]
23998    },
23999    "VkWaylandSurfaceCreateInfoKHR": {
24000      "(VK_KHR_surface)+(VK_KHR_wayland_surface)": [
24001        {
24002          "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-display-01304",
24003          "text": " <code>display</code> <strong class=\"purple\">must</strong> point to a valid Wayland <code>wl_display</code>"
24004        },
24005        {
24006          "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-surface-01305",
24007          "text": " <code>surface</code> <strong class=\"purple\">must</strong> point to a valid Wayland <code>wl_surface</code>"
24008        },
24009        {
24010          "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-sType-sType",
24011          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR</code>"
24012        },
24013        {
24014          "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-pNext-pNext",
24015          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24016        },
24017        {
24018          "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-flags-zerobitmask",
24019          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
24020        }
24021      ]
24022    },
24023    "vkCreateWin32SurfaceKHR": {
24024      "(VK_KHR_surface)+(VK_KHR_win32_surface)": [
24025        {
24026          "vuid": "VUID-vkCreateWin32SurfaceKHR-instance-parameter",
24027          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
24028        },
24029        {
24030          "vuid": "VUID-vkCreateWin32SurfaceKHR-pCreateInfo-parameter",
24031          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkWin32SurfaceCreateInfoKHR\">VkWin32SurfaceCreateInfoKHR</a> structure"
24032        },
24033        {
24034          "vuid": "VUID-vkCreateWin32SurfaceKHR-pAllocator-parameter",
24035          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
24036        },
24037        {
24038          "vuid": "VUID-vkCreateWin32SurfaceKHR-pSurface-parameter",
24039          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
24040        }
24041      ]
24042    },
24043    "VkWin32SurfaceCreateInfoKHR": {
24044      "(VK_KHR_surface)+(VK_KHR_win32_surface)": [
24045        {
24046          "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-hinstance-01307",
24047          "text": " <code>hinstance</code> <strong class=\"purple\">must</strong> be a valid Win32 <code>HINSTANCE</code>"
24048        },
24049        {
24050          "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-hwnd-01308",
24051          "text": " <code>hwnd</code> <strong class=\"purple\">must</strong> be a valid Win32 <code>HWND</code>"
24052        },
24053        {
24054          "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-sType-sType",
24055          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR</code>"
24056        },
24057        {
24058          "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-pNext-pNext",
24059          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24060        },
24061        {
24062          "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-flags-zerobitmask",
24063          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
24064        }
24065      ]
24066    },
24067    "vkCreateXcbSurfaceKHR": {
24068      "(VK_KHR_surface)+(VK_KHR_xcb_surface)": [
24069        {
24070          "vuid": "VUID-vkCreateXcbSurfaceKHR-instance-parameter",
24071          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
24072        },
24073        {
24074          "vuid": "VUID-vkCreateXcbSurfaceKHR-pCreateInfo-parameter",
24075          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkXcbSurfaceCreateInfoKHR\">VkXcbSurfaceCreateInfoKHR</a> structure"
24076        },
24077        {
24078          "vuid": "VUID-vkCreateXcbSurfaceKHR-pAllocator-parameter",
24079          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
24080        },
24081        {
24082          "vuid": "VUID-vkCreateXcbSurfaceKHR-pSurface-parameter",
24083          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
24084        }
24085      ]
24086    },
24087    "VkXcbSurfaceCreateInfoKHR": {
24088      "(VK_KHR_surface)+(VK_KHR_xcb_surface)": [
24089        {
24090          "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-connection-01310",
24091          "text": " <code>connection</code> <strong class=\"purple\">must</strong> point to a valid X11 <code>xcb_connection_t</code>"
24092        },
24093        {
24094          "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-window-01311",
24095          "text": " <code>window</code> <strong class=\"purple\">must</strong> be a valid X11 <code>xcb_window_t</code>"
24096        },
24097        {
24098          "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-sType-sType",
24099          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR</code>"
24100        },
24101        {
24102          "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-pNext-pNext",
24103          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24104        },
24105        {
24106          "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-flags-zerobitmask",
24107          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
24108        }
24109      ]
24110    },
24111    "vkCreateXlibSurfaceKHR": {
24112      "(VK_KHR_surface)+(VK_KHR_xlib_surface)": [
24113        {
24114          "vuid": "VUID-vkCreateXlibSurfaceKHR-instance-parameter",
24115          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
24116        },
24117        {
24118          "vuid": "VUID-vkCreateXlibSurfaceKHR-pCreateInfo-parameter",
24119          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkXlibSurfaceCreateInfoKHR\">VkXlibSurfaceCreateInfoKHR</a> structure"
24120        },
24121        {
24122          "vuid": "VUID-vkCreateXlibSurfaceKHR-pAllocator-parameter",
24123          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
24124        },
24125        {
24126          "vuid": "VUID-vkCreateXlibSurfaceKHR-pSurface-parameter",
24127          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
24128        }
24129      ]
24130    },
24131    "VkXlibSurfaceCreateInfoKHR": {
24132      "(VK_KHR_surface)+(VK_KHR_xlib_surface)": [
24133        {
24134          "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-dpy-01313",
24135          "text": " <code>dpy</code> <strong class=\"purple\">must</strong> point to a valid Xlib <code>Display</code>"
24136        },
24137        {
24138          "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-window-01314",
24139          "text": " <code>window</code> <strong class=\"purple\">must</strong> be a valid Xlib <code>Window</code>"
24140        },
24141        {
24142          "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-sType-sType",
24143          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR</code>"
24144        },
24145        {
24146          "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-pNext-pNext",
24147          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24148        },
24149        {
24150          "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-flags-zerobitmask",
24151          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
24152        }
24153      ]
24154    },
24155    "vkCreateImagePipeSurfaceFUCHSIA": {
24156      "(VK_KHR_surface)+(VK_FUCHSIA_imagepipe_surface)": [
24157        {
24158          "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-instance-parameter",
24159          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
24160        },
24161        {
24162          "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pCreateInfo-parameter",
24163          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImagePipeSurfaceCreateInfoFUCHSIA\">VkImagePipeSurfaceCreateInfoFUCHSIA</a> structure"
24164        },
24165        {
24166          "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pAllocator-parameter",
24167          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
24168        },
24169        {
24170          "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pSurface-parameter",
24171          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
24172        }
24173      ]
24174    },
24175    "VkImagePipeSurfaceCreateInfoFUCHSIA": {
24176      "(VK_KHR_surface)+(VK_FUCHSIA_imagepipe_surface)": [
24177        {
24178          "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-imagePipeHandle-00000",
24179          "text": " <code>imagePipeHandle</code> <strong class=\"purple\">must</strong> be a valid <code>zx_handle_t</code>"
24180        },
24181        {
24182          "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-sType-sType",
24183          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA</code>"
24184        },
24185        {
24186          "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-pNext-pNext",
24187          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24188        },
24189        {
24190          "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-flags-zerobitmask",
24191          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
24192        }
24193      ]
24194    },
24195    "vkCreateStreamDescriptorSurfaceGGP": {
24196      "(VK_KHR_surface)+(VK_GGP_stream_descriptor_surface)": [
24197        {
24198          "vuid": "VUID-vkCreateStreamDescriptorSurfaceGGP-instance-parameter",
24199          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
24200        },
24201        {
24202          "vuid": "VUID-vkCreateStreamDescriptorSurfaceGGP-pCreateInfo-parameter",
24203          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStreamDescriptorSurfaceCreateInfoGGP\">VkStreamDescriptorSurfaceCreateInfoGGP</a> structure"
24204        },
24205        {
24206          "vuid": "VUID-vkCreateStreamDescriptorSurfaceGGP-pAllocator-parameter",
24207          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
24208        },
24209        {
24210          "vuid": "VUID-vkCreateStreamDescriptorSurfaceGGP-pSurface-parameter",
24211          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
24212        }
24213      ]
24214    },
24215    "VkStreamDescriptorSurfaceCreateInfoGGP": {
24216      "(VK_KHR_surface)+(VK_GGP_stream_descriptor_surface)": [
24217        {
24218          "vuid": "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-streamDescriptor-02681",
24219          "text": " <code>streamDescriptor</code> <strong class=\"purple\">must</strong> be a valid <code>GgpStreamDescriptor</code>"
24220        },
24221        {
24222          "vuid": "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-sType-sType",
24223          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP</code>"
24224        },
24225        {
24226          "vuid": "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-pNext-pNext",
24227          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24228        },
24229        {
24230          "vuid": "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-flags-zerobitmask",
24231          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
24232        }
24233      ]
24234    },
24235    "vkCreateIOSSurfaceMVK": {
24236      "(VK_KHR_surface)+(VK_MVK_ios_surface)": [
24237        {
24238          "vuid": "VUID-vkCreateIOSSurfaceMVK-instance-parameter",
24239          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
24240        },
24241        {
24242          "vuid": "VUID-vkCreateIOSSurfaceMVK-pCreateInfo-parameter",
24243          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkIOSSurfaceCreateInfoMVK\">VkIOSSurfaceCreateInfoMVK</a> structure"
24244        },
24245        {
24246          "vuid": "VUID-vkCreateIOSSurfaceMVK-pAllocator-parameter",
24247          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
24248        },
24249        {
24250          "vuid": "VUID-vkCreateIOSSurfaceMVK-pSurface-parameter",
24251          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
24252        }
24253      ]
24254    },
24255    "VkIOSSurfaceCreateInfoMVK": {
24256      "(VK_KHR_surface)+(VK_MVK_ios_surface)": [
24257        {
24258          "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-pView-01316",
24259          "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 <code>CAMetalLayer</code>"
24260        },
24261        {
24262          "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-sType-sType",
24263          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK</code>"
24264        },
24265        {
24266          "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-pNext-pNext",
24267          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24268        },
24269        {
24270          "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-flags-zerobitmask",
24271          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
24272        }
24273      ]
24274    },
24275    "vkCreateMacOSSurfaceMVK": {
24276      "(VK_KHR_surface)+(VK_MVK_macos_surface)": [
24277        {
24278          "vuid": "VUID-vkCreateMacOSSurfaceMVK-instance-parameter",
24279          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
24280        },
24281        {
24282          "vuid": "VUID-vkCreateMacOSSurfaceMVK-pCreateInfo-parameter",
24283          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMacOSSurfaceCreateInfoMVK\">VkMacOSSurfaceCreateInfoMVK</a> structure"
24284        },
24285        {
24286          "vuid": "VUID-vkCreateMacOSSurfaceMVK-pAllocator-parameter",
24287          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
24288        },
24289        {
24290          "vuid": "VUID-vkCreateMacOSSurfaceMVK-pSurface-parameter",
24291          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
24292        }
24293      ]
24294    },
24295    "VkMacOSSurfaceCreateInfoMVK": {
24296      "(VK_KHR_surface)+(VK_MVK_macos_surface)": [
24297        {
24298          "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-pView-01317",
24299          "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 <code>CAMetalLayer</code>"
24300        },
24301        {
24302          "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-sType-sType",
24303          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK</code>"
24304        },
24305        {
24306          "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-pNext-pNext",
24307          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24308        },
24309        {
24310          "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-flags-zerobitmask",
24311          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
24312        }
24313      ]
24314    },
24315    "vkCreateViSurfaceNN": {
24316      "(VK_KHR_surface)+(VK_NN_vi_surface)": [
24317        {
24318          "vuid": "VUID-vkCreateViSurfaceNN-instance-parameter",
24319          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
24320        },
24321        {
24322          "vuid": "VUID-vkCreateViSurfaceNN-pCreateInfo-parameter",
24323          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkViSurfaceCreateInfoNN\">VkViSurfaceCreateInfoNN</a> structure"
24324        },
24325        {
24326          "vuid": "VUID-vkCreateViSurfaceNN-pAllocator-parameter",
24327          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
24328        },
24329        {
24330          "vuid": "VUID-vkCreateViSurfaceNN-pSurface-parameter",
24331          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
24332        }
24333      ]
24334    },
24335    "VkViSurfaceCreateInfoNN": {
24336      "(VK_KHR_surface)+(VK_NN_vi_surface)": [
24337        {
24338          "vuid": "VUID-VkViSurfaceCreateInfoNN-window-01318",
24339          "text": " <code>window</code> <strong class=\"purple\">must</strong> be a valid <code>nn</code>::<code>vi</code>::<code>NativeWindowHandle</code>"
24340        },
24341        {
24342          "vuid": "VUID-VkViSurfaceCreateInfoNN-sType-sType",
24343          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN</code>"
24344        },
24345        {
24346          "vuid": "VUID-VkViSurfaceCreateInfoNN-pNext-pNext",
24347          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24348        },
24349        {
24350          "vuid": "VUID-VkViSurfaceCreateInfoNN-flags-zerobitmask",
24351          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
24352        }
24353      ]
24354    },
24355    "vkCreateMetalSurfaceEXT": {
24356      "(VK_KHR_surface)+(VK_EXT_metal_surface)": [
24357        {
24358          "vuid": "VUID-vkCreateMetalSurfaceEXT-instance-parameter",
24359          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
24360        },
24361        {
24362          "vuid": "VUID-vkCreateMetalSurfaceEXT-pCreateInfo-parameter",
24363          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMetalSurfaceCreateInfoEXT\">VkMetalSurfaceCreateInfoEXT</a> structure"
24364        },
24365        {
24366          "vuid": "VUID-vkCreateMetalSurfaceEXT-pAllocator-parameter",
24367          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
24368        },
24369        {
24370          "vuid": "VUID-vkCreateMetalSurfaceEXT-pSurface-parameter",
24371          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
24372        }
24373      ]
24374    },
24375    "VkMetalSurfaceCreateInfoEXT": {
24376      "(VK_KHR_surface)+(VK_EXT_metal_surface)": [
24377        {
24378          "vuid": "VUID-VkMetalSurfaceCreateInfoEXT-sType-sType",
24379          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT</code>"
24380        },
24381        {
24382          "vuid": "VUID-VkMetalSurfaceCreateInfoEXT-pNext-pNext",
24383          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24384        },
24385        {
24386          "vuid": "VUID-VkMetalSurfaceCreateInfoEXT-flags-zerobitmask",
24387          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
24388        }
24389      ]
24390    },
24391    "vkDestroySurfaceKHR": {
24392      "(VK_KHR_surface)": [
24393        {
24394          "vuid": "VUID-vkDestroySurfaceKHR-surface-01266",
24395          "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>"
24396        },
24397        {
24398          "vuid": "VUID-vkDestroySurfaceKHR-surface-01267",
24399          "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"
24400        },
24401        {
24402          "vuid": "VUID-vkDestroySurfaceKHR-surface-01268",
24403          "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>"
24404        },
24405        {
24406          "vuid": "VUID-vkDestroySurfaceKHR-instance-parameter",
24407          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
24408        },
24409        {
24410          "vuid": "VUID-vkDestroySurfaceKHR-surface-parameter",
24411          "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 <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
24412        },
24413        {
24414          "vuid": "VUID-vkDestroySurfaceKHR-pAllocator-parameter",
24415          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
24416        },
24417        {
24418          "vuid": "VUID-vkDestroySurfaceKHR-surface-parent",
24419          "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>"
24420        }
24421      ]
24422    },
24423    "vkGetPhysicalDeviceDisplayPropertiesKHR": {
24424      "(VK_KHR_surface)+(VK_KHR_display)": [
24425        {
24426          "vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-physicalDevice-parameter",
24427          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
24428        },
24429        {
24430          "vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-pPropertyCount-parameter",
24431          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
24432        },
24433        {
24434          "vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-pProperties-parameter",
24435          "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> <a href=\"#VkDisplayPropertiesKHR\">VkDisplayPropertiesKHR</a> structures"
24436        }
24437      ]
24438    },
24439    "vkGetPhysicalDeviceDisplayProperties2KHR": {
24440      "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
24441        {
24442          "vuid": "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-physicalDevice-parameter",
24443          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
24444        },
24445        {
24446          "vuid": "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-pPropertyCount-parameter",
24447          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
24448        },
24449        {
24450          "vuid": "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-pProperties-parameter",
24451          "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> <a href=\"#VkDisplayProperties2KHR\">VkDisplayProperties2KHR</a> structures"
24452        }
24453      ]
24454    },
24455    "VkDisplayProperties2KHR": {
24456      "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
24457        {
24458          "vuid": "VUID-VkDisplayProperties2KHR-sType-sType",
24459          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR</code>"
24460        },
24461        {
24462          "vuid": "VUID-VkDisplayProperties2KHR-pNext-pNext",
24463          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24464        }
24465      ]
24466    },
24467    "vkAcquireXlibDisplayEXT": {
24468      "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)+(VK_EXT_acquire_xlib_display)": [
24469        {
24470          "vuid": "VUID-vkAcquireXlibDisplayEXT-physicalDevice-parameter",
24471          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
24472        },
24473        {
24474          "vuid": "VUID-vkAcquireXlibDisplayEXT-dpy-parameter",
24475          "text": " <code>dpy</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>Display</code> value"
24476        },
24477        {
24478          "vuid": "VUID-vkAcquireXlibDisplayEXT-display-parameter",
24479          "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle"
24480        },
24481        {
24482          "vuid": "VUID-vkAcquireXlibDisplayEXT-display-parent",
24483          "text": " <code>display</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>physicalDevice</code>"
24484        }
24485      ]
24486    },
24487    "vkGetRandROutputDisplayEXT": {
24488      "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)+(VK_EXT_acquire_xlib_display)": [
24489        {
24490          "vuid": "VUID-vkGetRandROutputDisplayEXT-physicalDevice-parameter",
24491          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
24492        },
24493        {
24494          "vuid": "VUID-vkGetRandROutputDisplayEXT-dpy-parameter",
24495          "text": " <code>dpy</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>Display</code> value"
24496        },
24497        {
24498          "vuid": "VUID-vkGetRandROutputDisplayEXT-pDisplay-parameter",
24499          "text": " <code>pDisplay</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle"
24500        }
24501      ]
24502    },
24503    "vkReleaseDisplayEXT": {
24504      "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)": [
24505        {
24506          "vuid": "VUID-vkReleaseDisplayEXT-physicalDevice-parameter",
24507          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
24508        },
24509        {
24510          "vuid": "VUID-vkReleaseDisplayEXT-display-parameter",
24511          "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle"
24512        },
24513        {
24514          "vuid": "VUID-vkReleaseDisplayEXT-display-parent",
24515          "text": " <code>display</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>physicalDevice</code>"
24516        }
24517      ]
24518    },
24519    "vkGetPhysicalDeviceDisplayPlanePropertiesKHR": {
24520      "(VK_KHR_surface)+(VK_KHR_display)": [
24521        {
24522          "vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-physicalDevice-parameter",
24523          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
24524        },
24525        {
24526          "vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-pPropertyCount-parameter",
24527          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
24528        },
24529        {
24530          "vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-pProperties-parameter",
24531          "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> <a href=\"#VkDisplayPlanePropertiesKHR\">VkDisplayPlanePropertiesKHR</a> structures"
24532        }
24533      ]
24534    },
24535    "vkGetPhysicalDeviceDisplayPlaneProperties2KHR": {
24536      "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
24537        {
24538          "vuid": "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-physicalDevice-parameter",
24539          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
24540        },
24541        {
24542          "vuid": "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-pPropertyCount-parameter",
24543          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
24544        },
24545        {
24546          "vuid": "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-pProperties-parameter",
24547          "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> <a href=\"#VkDisplayPlaneProperties2KHR\">VkDisplayPlaneProperties2KHR</a> structures"
24548        }
24549      ]
24550    },
24551    "VkDisplayPlaneProperties2KHR": {
24552      "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
24553        {
24554          "vuid": "VUID-VkDisplayPlaneProperties2KHR-sType-sType",
24555          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR</code>"
24556        },
24557        {
24558          "vuid": "VUID-VkDisplayPlaneProperties2KHR-pNext-pNext",
24559          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24560        }
24561      ]
24562    },
24563    "vkGetDisplayPlaneSupportedDisplaysKHR": {
24564      "(VK_KHR_surface)+(VK_KHR_display)": [
24565        {
24566          "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-planeIndex-01249",
24567          "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>"
24568        },
24569        {
24570          "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-physicalDevice-parameter",
24571          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
24572        },
24573        {
24574          "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-pDisplayCount-parameter",
24575          "text": " <code>pDisplayCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
24576        },
24577        {
24578          "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-pDisplays-parameter",
24579          "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> <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handles"
24580        }
24581      ]
24582    },
24583    "vkGetDisplayModePropertiesKHR": {
24584      "(VK_KHR_surface)+(VK_KHR_display)": [
24585        {
24586          "vuid": "VUID-vkGetDisplayModePropertiesKHR-physicalDevice-parameter",
24587          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
24588        },
24589        {
24590          "vuid": "VUID-vkGetDisplayModePropertiesKHR-display-parameter",
24591          "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle"
24592        },
24593        {
24594          "vuid": "VUID-vkGetDisplayModePropertiesKHR-pPropertyCount-parameter",
24595          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
24596        },
24597        {
24598          "vuid": "VUID-vkGetDisplayModePropertiesKHR-pProperties-parameter",
24599          "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> <a href=\"#VkDisplayModePropertiesKHR\">VkDisplayModePropertiesKHR</a> structures"
24600        },
24601        {
24602          "vuid": "VUID-vkGetDisplayModePropertiesKHR-display-parent",
24603          "text": " <code>display</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>physicalDevice</code>"
24604        }
24605      ]
24606    },
24607    "vkGetDisplayModeProperties2KHR": {
24608      "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
24609        {
24610          "vuid": "VUID-vkGetDisplayModeProperties2KHR-physicalDevice-parameter",
24611          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
24612        },
24613        {
24614          "vuid": "VUID-vkGetDisplayModeProperties2KHR-display-parameter",
24615          "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle"
24616        },
24617        {
24618          "vuid": "VUID-vkGetDisplayModeProperties2KHR-pPropertyCount-parameter",
24619          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
24620        },
24621        {
24622          "vuid": "VUID-vkGetDisplayModeProperties2KHR-pProperties-parameter",
24623          "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> <a href=\"#VkDisplayModeProperties2KHR\">VkDisplayModeProperties2KHR</a> structures"
24624        },
24625        {
24626          "vuid": "VUID-vkGetDisplayModeProperties2KHR-display-parent",
24627          "text": " <code>display</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>physicalDevice</code>"
24628        }
24629      ]
24630    },
24631    "VkDisplayModeProperties2KHR": {
24632      "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
24633        {
24634          "vuid": "VUID-VkDisplayModeProperties2KHR-sType-sType",
24635          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR</code>"
24636        },
24637        {
24638          "vuid": "VUID-VkDisplayModeProperties2KHR-pNext-pNext",
24639          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24640        }
24641      ]
24642    },
24643    "VkDisplayModeParametersKHR": {
24644      "(VK_KHR_surface)+(VK_KHR_display)": [
24645        {
24646          "vuid": "VUID-VkDisplayModeParametersKHR-width-01990",
24647          "text": " The <code>width</code> member of <code>visibleRegion</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
24648        },
24649        {
24650          "vuid": "VUID-VkDisplayModeParametersKHR-height-01991",
24651          "text": " The <code>height</code> member of <code>visibleRegion</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
24652        },
24653        {
24654          "vuid": "VUID-VkDisplayModeParametersKHR-refreshRate-01992",
24655          "text": " <code>refreshRate</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
24656        }
24657      ]
24658    },
24659    "vkCreateDisplayModeKHR": {
24660      "(VK_KHR_surface)+(VK_KHR_display)": [
24661        {
24662          "vuid": "VUID-vkCreateDisplayModeKHR-physicalDevice-parameter",
24663          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
24664        },
24665        {
24666          "vuid": "VUID-vkCreateDisplayModeKHR-display-parameter",
24667          "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle"
24668        },
24669        {
24670          "vuid": "VUID-vkCreateDisplayModeKHR-pCreateInfo-parameter",
24671          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDisplayModeCreateInfoKHR\">VkDisplayModeCreateInfoKHR</a> structure"
24672        },
24673        {
24674          "vuid": "VUID-vkCreateDisplayModeKHR-pAllocator-parameter",
24675          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
24676        },
24677        {
24678          "vuid": "VUID-vkCreateDisplayModeKHR-pMode-parameter",
24679          "text": " <code>pMode</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDisplayModeKHR\">VkDisplayModeKHR</a> handle"
24680        },
24681        {
24682          "vuid": "VUID-vkCreateDisplayModeKHR-display-parent",
24683          "text": " <code>display</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>physicalDevice</code>"
24684        }
24685      ]
24686    },
24687    "VkDisplayModeCreateInfoKHR": {
24688      "(VK_KHR_surface)+(VK_KHR_display)": [
24689        {
24690          "vuid": "VUID-VkDisplayModeCreateInfoKHR-sType-sType",
24691          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR</code>"
24692        },
24693        {
24694          "vuid": "VUID-VkDisplayModeCreateInfoKHR-pNext-pNext",
24695          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24696        },
24697        {
24698          "vuid": "VUID-VkDisplayModeCreateInfoKHR-flags-zerobitmask",
24699          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
24700        },
24701        {
24702          "vuid": "VUID-VkDisplayModeCreateInfoKHR-parameters-parameter",
24703          "text": " <code>parameters</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayModeParametersKHR\">VkDisplayModeParametersKHR</a> structure"
24704        }
24705      ]
24706    },
24707    "vkGetDisplayPlaneCapabilitiesKHR": {
24708      "(VK_KHR_surface)+(VK_KHR_display)": [
24709        {
24710          "vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-physicalDevice-parameter",
24711          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
24712        },
24713        {
24714          "vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-mode-parameter",
24715          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayModeKHR\">VkDisplayModeKHR</a> handle"
24716        },
24717        {
24718          "vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-pCapabilities-parameter",
24719          "text": " <code>pCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDisplayPlaneCapabilitiesKHR\">VkDisplayPlaneCapabilitiesKHR</a> structure"
24720        }
24721      ]
24722    },
24723    "vkGetDisplayPlaneCapabilities2KHR": {
24724      "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
24725        {
24726          "vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-physicalDevice-parameter",
24727          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
24728        },
24729        {
24730          "vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-pDisplayPlaneInfo-parameter",
24731          "text": " <code>pDisplayPlaneInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDisplayPlaneInfo2KHR\">VkDisplayPlaneInfo2KHR</a> structure"
24732        },
24733        {
24734          "vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-pCapabilities-parameter",
24735          "text": " <code>pCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDisplayPlaneCapabilities2KHR\">VkDisplayPlaneCapabilities2KHR</a> structure"
24736        }
24737      ]
24738    },
24739    "VkDisplayPlaneInfo2KHR": {
24740      "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
24741        {
24742          "vuid": "VUID-VkDisplayPlaneInfo2KHR-sType-sType",
24743          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR</code>"
24744        },
24745        {
24746          "vuid": "VUID-VkDisplayPlaneInfo2KHR-pNext-pNext",
24747          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24748        },
24749        {
24750          "vuid": "VUID-VkDisplayPlaneInfo2KHR-mode-parameter",
24751          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayModeKHR\">VkDisplayModeKHR</a> handle"
24752        }
24753      ]
24754    },
24755    "VkDisplayPlaneCapabilities2KHR": {
24756      "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
24757        {
24758          "vuid": "VUID-VkDisplayPlaneCapabilities2KHR-sType-sType",
24759          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR</code>"
24760        },
24761        {
24762          "vuid": "VUID-VkDisplayPlaneCapabilities2KHR-pNext-pNext",
24763          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24764        }
24765      ]
24766    },
24767    "vkDisplayPowerControlEXT": {
24768      "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_display_control)": [
24769        {
24770          "vuid": "VUID-vkDisplayPowerControlEXT-device-parameter",
24771          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
24772        },
24773        {
24774          "vuid": "VUID-vkDisplayPowerControlEXT-display-parameter",
24775          "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle"
24776        },
24777        {
24778          "vuid": "VUID-vkDisplayPowerControlEXT-pDisplayPowerInfo-parameter",
24779          "text": " <code>pDisplayPowerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDisplayPowerInfoEXT\">VkDisplayPowerInfoEXT</a> structure"
24780        },
24781        {
24782          "vuid": "VUID-vkDisplayPowerControlEXT-commonparent",
24783          "text": " Both of <code>device</code>, and <code>display</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a>"
24784        }
24785      ]
24786    },
24787    "VkDisplayPowerInfoEXT": {
24788      "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_display_control)": [
24789        {
24790          "vuid": "VUID-VkDisplayPowerInfoEXT-sType-sType",
24791          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT</code>"
24792        },
24793        {
24794          "vuid": "VUID-VkDisplayPowerInfoEXT-pNext-pNext",
24795          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24796        },
24797        {
24798          "vuid": "VUID-VkDisplayPowerInfoEXT-powerState-parameter",
24799          "text": " <code>powerState</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayPowerStateEXT\">VkDisplayPowerStateEXT</a> value"
24800        }
24801      ]
24802    },
24803    "vkCreateDisplayPlaneSurfaceKHR": {
24804      "(VK_KHR_surface)+(VK_KHR_display)": [
24805        {
24806          "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-instance-parameter",
24807          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
24808        },
24809        {
24810          "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pCreateInfo-parameter",
24811          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDisplaySurfaceCreateInfoKHR\">VkDisplaySurfaceCreateInfoKHR</a> structure"
24812        },
24813        {
24814          "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pAllocator-parameter",
24815          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
24816        },
24817        {
24818          "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pSurface-parameter",
24819          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
24820        }
24821      ]
24822    },
24823    "VkDisplaySurfaceCreateInfoKHR": {
24824      "(VK_KHR_surface)+(VK_KHR_display)": [
24825        {
24826          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-planeIndex-01252",
24827          "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>"
24828        },
24829        {
24830          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-planeReorderPossible-01253",
24831          "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>"
24832        },
24833        {
24834          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-01254",
24835          "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"
24836        },
24837        {
24838          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-01255",
24839          "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>"
24840        },
24841        {
24842          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-width-01256",
24843          "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>"
24844        },
24845        {
24846          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-sType-sType",
24847          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR</code>"
24848        },
24849        {
24850          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-pNext-pNext",
24851          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24852        },
24853        {
24854          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-flags-zerobitmask",
24855          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
24856        },
24857        {
24858          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-displayMode-parameter",
24859          "text": " <code>displayMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayModeKHR\">VkDisplayModeKHR</a> handle"
24860        },
24861        {
24862          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-transform-parameter",
24863          "text": " <code>transform</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceTransformFlagBitsKHR\">VkSurfaceTransformFlagBitsKHR</a> value"
24864        },
24865        {
24866          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-parameter",
24867          "text": " <code>alphaMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayPlaneAlphaFlagBitsKHR\">VkDisplayPlaneAlphaFlagBitsKHR</a> value"
24868        }
24869      ]
24870    },
24871    "vkCreateHeadlessSurfaceEXT": {
24872      "(VK_KHR_surface)+(VK_EXT_headless_surface)": [
24873        {
24874          "vuid": "VUID-vkCreateHeadlessSurfaceEXT-instance-parameter",
24875          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
24876        },
24877        {
24878          "vuid": "VUID-vkCreateHeadlessSurfaceEXT-pCreateInfo-parameter",
24879          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkHeadlessSurfaceCreateInfoEXT\">VkHeadlessSurfaceCreateInfoEXT</a> structure"
24880        },
24881        {
24882          "vuid": "VUID-vkCreateHeadlessSurfaceEXT-pAllocator-parameter",
24883          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
24884        },
24885        {
24886          "vuid": "VUID-vkCreateHeadlessSurfaceEXT-pSurface-parameter",
24887          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
24888        }
24889      ]
24890    },
24891    "VkHeadlessSurfaceCreateInfoEXT": {
24892      "(VK_KHR_surface)+(VK_EXT_headless_surface)": [
24893        {
24894          "vuid": "VUID-VkHeadlessSurfaceCreateInfoEXT-sType-sType",
24895          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT</code>"
24896        },
24897        {
24898          "vuid": "VUID-VkHeadlessSurfaceCreateInfoEXT-pNext-pNext",
24899          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24900        },
24901        {
24902          "vuid": "VUID-VkHeadlessSurfaceCreateInfoEXT-flags-zerobitmask",
24903          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
24904        }
24905      ]
24906    },
24907    "vkGetPhysicalDeviceSurfaceSupportKHR": {
24908      "(VK_KHR_surface)": [
24909        {
24910          "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-queueFamilyIndex-01269",
24911          "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>"
24912        },
24913        {
24914          "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-physicalDevice-parameter",
24915          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
24916        },
24917        {
24918          "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-surface-parameter",
24919          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
24920        },
24921        {
24922          "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-pSupported-parameter",
24923          "text": " <code>pSupported</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkBool32</code> value"
24924        },
24925        {
24926          "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-commonparent",
24927          "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>"
24928        }
24929      ]
24930    },
24931    "vkGetPhysicalDeviceWaylandPresentationSupportKHR": {
24932      "(VK_KHR_surface)+(VK_KHR_wayland_surface)": [
24933        {
24934          "vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-queueFamilyIndex-01306",
24935          "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>"
24936        },
24937        {
24938          "vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-physicalDevice-parameter",
24939          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
24940        },
24941        {
24942          "vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-display-parameter",
24943          "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>wl_display</code> value"
24944        }
24945      ]
24946    },
24947    "vkGetPhysicalDeviceWin32PresentationSupportKHR": {
24948      "(VK_KHR_surface)+(VK_KHR_win32_surface)": [
24949        {
24950          "vuid": "VUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-queueFamilyIndex-01309",
24951          "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>"
24952        },
24953        {
24954          "vuid": "VUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-physicalDevice-parameter",
24955          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
24956        }
24957      ]
24958    },
24959    "vkGetPhysicalDeviceXcbPresentationSupportKHR": {
24960      "(VK_KHR_surface)+(VK_KHR_xcb_surface)": [
24961        {
24962          "vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-queueFamilyIndex-01312",
24963          "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>"
24964        },
24965        {
24966          "vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-physicalDevice-parameter",
24967          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
24968        },
24969        {
24970          "vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-connection-parameter",
24971          "text": " <code>connection</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>xcb_connection_t</code> value"
24972        }
24973      ]
24974    },
24975    "vkGetPhysicalDeviceXlibPresentationSupportKHR": {
24976      "(VK_KHR_surface)+(VK_KHR_xlib_surface)": [
24977        {
24978          "vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-queueFamilyIndex-01315",
24979          "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>"
24980        },
24981        {
24982          "vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-physicalDevice-parameter",
24983          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
24984        },
24985        {
24986          "vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-dpy-parameter",
24987          "text": " <code>dpy</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>Display</code> value"
24988        }
24989      ]
24990    },
24991    "vkGetPhysicalDeviceSurfaceCapabilitiesKHR": {
24992      "(VK_KHR_surface)": [
24993        {
24994          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-physicalDevice-parameter",
24995          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
24996        },
24997        {
24998          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-surface-parameter",
24999          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
25000        },
25001        {
25002          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-pSurfaceCapabilities-parameter",
25003          "text": " <code>pSurfaceCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceCapabilitiesKHR\">VkSurfaceCapabilitiesKHR</a> structure"
25004        },
25005        {
25006          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-commonparent",
25007          "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>"
25008        }
25009      ]
25010    },
25011    "vkGetPhysicalDeviceSurfaceCapabilities2KHR": {
25012      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_EXT_full_screen_exclusive+VK_KHR_win32_surface)": [
25013        {
25014          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pNext-02671",
25015          "text": " If a <a href=\"#VkSurfaceCapabilitiesFullScreenExclusiveEXT\">VkSurfaceCapabilitiesFullScreenExclusiveEXT</a> structure is included in the <code>pNext</code> chain of <code>pSurfaceCapabilities</code>, a <a href=\"#VkSurfaceFullScreenExclusiveWin32InfoEXT\">VkSurfaceFullScreenExclusiveWin32InfoEXT</a> structure <strong class=\"purple\">must</strong> be included in the <code>pNext</code> chain of <code>pSurfaceInfo</code>"
25016        }
25017      ],
25018      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
25019        {
25020          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-physicalDevice-parameter",
25021          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
25022        },
25023        {
25024          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceInfo-parameter",
25025          "text": " <code>pSurfaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceSurfaceInfo2KHR\">VkPhysicalDeviceSurfaceInfo2KHR</a> structure"
25026        },
25027        {
25028          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceCapabilities-parameter",
25029          "text": " <code>pSurfaceCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceCapabilities2KHR\">VkSurfaceCapabilities2KHR</a> structure"
25030        }
25031      ]
25032    },
25033    "VkPhysicalDeviceSurfaceInfo2KHR": {
25034      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_KHR_win32_surface+VK_EXT_full_screen_exclusive)": [
25035        {
25036          "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-pNext-02672",
25037          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkSurfaceFullScreenExclusiveInfoEXT\">VkSurfaceFullScreenExclusiveInfoEXT</a> structure with its <code>fullScreenExclusive</code> member set to <code>VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT</code>, and <code>surface</code> was created using <a href=\"#vkCreateWin32SurfaceKHR\">vkCreateWin32SurfaceKHR</a>, a <a href=\"#VkSurfaceFullScreenExclusiveWin32InfoEXT\">VkSurfaceFullScreenExclusiveWin32InfoEXT</a> structure <strong class=\"purple\">must</strong> be included in the <code>pNext</code> chain"
25038        }
25039      ],
25040      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
25041        {
25042          "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-sType",
25043          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR</code>"
25044        },
25045        {
25046          "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-pNext-pNext",
25047          "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=\"#VkSurfaceFullScreenExclusiveInfoEXT\">VkSurfaceFullScreenExclusiveInfoEXT</a> or <a href=\"#VkSurfaceFullScreenExclusiveWin32InfoEXT\">VkSurfaceFullScreenExclusiveWin32InfoEXT</a>"
25048        },
25049        {
25050          "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-unique",
25051          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
25052        },
25053        {
25054          "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-surface-parameter",
25055          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
25056        }
25057      ]
25058    },
25059    "VkSurfaceFullScreenExclusiveInfoEXT": {
25060      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_EXT_full_screen_exclusive)": [
25061        {
25062          "vuid": "VUID-VkSurfaceFullScreenExclusiveInfoEXT-sType-sType",
25063          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT</code>"
25064        },
25065        {
25066          "vuid": "VUID-VkSurfaceFullScreenExclusiveInfoEXT-fullScreenExclusive-parameter",
25067          "text": " <code>fullScreenExclusive</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFullScreenExclusiveEXT\">VkFullScreenExclusiveEXT</a> value"
25068        }
25069      ]
25070    },
25071    "VkSurfaceFullScreenExclusiveWin32InfoEXT": {
25072      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_EXT_full_screen_exclusive)+(VK_KHR_win32_surface)": [
25073        {
25074          "vuid": "VUID-VkSurfaceFullScreenExclusiveWin32InfoEXT-hmonitor-02673",
25075          "text": " <code>hmonitor</code> <strong class=\"purple\">must</strong> be a valid <code>HMONITOR</code>"
25076        },
25077        {
25078          "vuid": "VUID-VkSurfaceFullScreenExclusiveWin32InfoEXT-sType-sType",
25079          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT</code>"
25080        }
25081      ]
25082    },
25083    "VkSurfaceCapabilities2KHR": {
25084      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
25085        {
25086          "vuid": "VUID-VkSurfaceCapabilities2KHR-sType-sType",
25087          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR</code>"
25088        },
25089        {
25090          "vuid": "VUID-VkSurfaceCapabilities2KHR-pNext-pNext",
25091          "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=\"#VkDisplayNativeHdrSurfaceCapabilitiesAMD\">VkDisplayNativeHdrSurfaceCapabilitiesAMD</a>, <a href=\"#VkSharedPresentSurfaceCapabilitiesKHR\">VkSharedPresentSurfaceCapabilitiesKHR</a>, <a href=\"#VkSurfaceCapabilitiesFullScreenExclusiveEXT\">VkSurfaceCapabilitiesFullScreenExclusiveEXT</a>, or <a href=\"#VkSurfaceProtectedCapabilitiesKHR\">VkSurfaceProtectedCapabilitiesKHR</a>"
25092        },
25093        {
25094          "vuid": "VUID-VkSurfaceCapabilities2KHR-sType-unique",
25095          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
25096        }
25097      ]
25098    },
25099    "VkSurfaceProtectedCapabilitiesKHR": {
25100      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_KHR_surface_protected_capabilities)": [
25101        {
25102          "vuid": "VUID-VkSurfaceProtectedCapabilitiesKHR-sType-sType",
25103          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR</code>"
25104        }
25105      ]
25106    },
25107    "VkSharedPresentSurfaceCapabilitiesKHR": {
25108      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_KHR_shared_presentable_image)": [
25109        {
25110          "vuid": "VUID-VkSharedPresentSurfaceCapabilitiesKHR-sType-sType",
25111          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR</code>"
25112        }
25113      ]
25114    },
25115    "VkDisplayNativeHdrSurfaceCapabilitiesAMD": {
25116      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_AMD_display_native_hdr)": [
25117        {
25118          "vuid": "VUID-VkDisplayNativeHdrSurfaceCapabilitiesAMD-sType-sType",
25119          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD</code>"
25120        }
25121      ]
25122    },
25123    "VkSurfaceCapabilitiesFullScreenExclusiveEXT": {
25124      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_EXT_full_screen_exclusive)": [
25125        {
25126          "vuid": "VUID-VkSurfaceCapabilitiesFullScreenExclusiveEXT-sType-sType",
25127          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT</code>"
25128        }
25129      ]
25130    },
25131    "vkGetPhysicalDeviceSurfaceCapabilities2EXT": {
25132      "(VK_KHR_surface)+(VK_EXT_display_surface_counter)": [
25133        {
25134          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-physicalDevice-parameter",
25135          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
25136        },
25137        {
25138          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-surface-parameter",
25139          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
25140        },
25141        {
25142          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-pSurfaceCapabilities-parameter",
25143          "text": " <code>pSurfaceCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceCapabilities2EXT\">VkSurfaceCapabilities2EXT</a> structure"
25144        },
25145        {
25146          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-commonparent",
25147          "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>"
25148        }
25149      ]
25150    },
25151    "VkSurfaceCapabilities2EXT": {
25152      "(VK_KHR_surface)+(VK_EXT_display_surface_counter)": [
25153        {
25154          "vuid": "VUID-VkSurfaceCapabilities2EXT-supportedSurfaceCounters-01246",
25155          "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>"
25156        },
25157        {
25158          "vuid": "VUID-VkSurfaceCapabilities2EXT-sType-sType",
25159          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT</code>"
25160        },
25161        {
25162          "vuid": "VUID-VkSurfaceCapabilities2EXT-pNext-pNext",
25163          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
25164        }
25165      ]
25166    },
25167    "vkGetPhysicalDeviceSurfaceFormatsKHR": {
25168      "(VK_KHR_surface)": [
25169        {
25170          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-02739",
25171          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be supported by <code>physicalDevice</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a> or an equivalent platform-specific mechanism"
25172        },
25173        {
25174          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-physicalDevice-parameter",
25175          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
25176        },
25177        {
25178          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-parameter",
25179          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
25180        },
25181        {
25182          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-pSurfaceFormatCount-parameter",
25183          "text": " <code>pSurfaceFormatCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
25184        },
25185        {
25186          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-pSurfaceFormats-parameter",
25187          "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> <a href=\"#VkSurfaceFormatKHR\">VkSurfaceFormatKHR</a> structures"
25188        },
25189        {
25190          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-commonparent",
25191          "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>"
25192        }
25193      ]
25194    },
25195    "vkGetPhysicalDeviceSurfaceFormats2KHR": {
25196      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
25197        {
25198          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceInfo-02740",
25199          "text": " <code>pSurfaceInfo-&gt;surface</code> <strong class=\"purple\">must</strong> be supported by <code>physicalDevice</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a> or an equivalent platform-specific mechanism"
25200        },
25201        {
25202          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-physicalDevice-parameter",
25203          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
25204        },
25205        {
25206          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceInfo-parameter",
25207          "text": " <code>pSurfaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceSurfaceInfo2KHR\">VkPhysicalDeviceSurfaceInfo2KHR</a> structure"
25208        },
25209        {
25210          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceFormatCount-parameter",
25211          "text": " <code>pSurfaceFormatCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
25212        },
25213        {
25214          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceFormats-parameter",
25215          "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> <a href=\"#VkSurfaceFormat2KHR\">VkSurfaceFormat2KHR</a> structures"
25216        }
25217      ]
25218    },
25219    "VkSurfaceFormat2KHR": {
25220      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
25221        {
25222          "vuid": "VUID-VkSurfaceFormat2KHR-sType-sType",
25223          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR</code>"
25224        },
25225        {
25226          "vuid": "VUID-VkSurfaceFormat2KHR-pNext-pNext",
25227          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
25228        }
25229      ]
25230    },
25231    "vkGetPhysicalDeviceSurfacePresentModesKHR": {
25232      "(VK_KHR_surface)": [
25233        {
25234          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-physicalDevice-parameter",
25235          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
25236        },
25237        {
25238          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-surface-parameter",
25239          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
25240        },
25241        {
25242          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-pPresentModeCount-parameter",
25243          "text": " <code>pPresentModeCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
25244        },
25245        {
25246          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-pPresentModes-parameter",
25247          "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"
25248        },
25249        {
25250          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-commonparent",
25251          "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>"
25252        }
25253      ]
25254    },
25255    "vkGetPhysicalDeviceSurfacePresentModes2EXT": {
25256      "(VK_KHR_surface)+(VK_EXT_full_screen_exclusive)": [
25257        {
25258          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-physicalDevice-parameter",
25259          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
25260        },
25261        {
25262          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pSurfaceInfo-parameter",
25263          "text": " <code>pSurfaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceSurfaceInfo2KHR\">VkPhysicalDeviceSurfaceInfo2KHR</a> structure"
25264        },
25265        {
25266          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pPresentModeCount-parameter",
25267          "text": " <code>pPresentModeCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
25268        },
25269        {
25270          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pPresentModes-parameter",
25271          "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"
25272        }
25273      ]
25274    },
25275    "vkAcquireFullScreenExclusiveModeEXT": {
25276      "(VK_KHR_surface)+(VK_EXT_full_screen_exclusive)": [
25277        {
25278          "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-02674",
25279          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state"
25280        },
25281        {
25282          "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-02675",
25283          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a swapchain created with a <a href=\"#VkSurfaceFullScreenExclusiveInfoEXT\">VkSurfaceFullScreenExclusiveInfoEXT</a> structure, with <code>fullScreenExclusive</code> set to <code>VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT</code>"
25284        },
25285        {
25286          "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-02676",
25287          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> not currently have exclusive full-screen access"
25288        },
25289        {
25290          "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-device-parameter",
25291          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
25292        },
25293        {
25294          "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-parameter",
25295          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle"
25296        },
25297        {
25298          "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-commonparent",
25299          "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>"
25300        }
25301      ]
25302    },
25303    "vkReleaseFullScreenExclusiveModeEXT": {
25304      "(VK_KHR_surface)+(VK_EXT_full_screen_exclusive)": [
25305        {
25306          "vuid": "VUID-vkReleaseFullScreenExclusiveModeEXT-swapchain-02677",
25307          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state"
25308        },
25309        {
25310          "vuid": "VUID-vkReleaseFullScreenExclusiveModeEXT-swapchain-02678",
25311          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a swapchain created with a <a href=\"#VkSurfaceFullScreenExclusiveInfoEXT\">VkSurfaceFullScreenExclusiveInfoEXT</a> structure, with <code>fullScreenExclusive</code> set to <code>VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT</code>"
25312        }
25313      ]
25314    },
25315    "vkGetDeviceGroupPresentCapabilitiesKHR": {
25316      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
25317        {
25318          "vuid": "VUID-vkGetDeviceGroupPresentCapabilitiesKHR-device-parameter",
25319          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
25320        },
25321        {
25322          "vuid": "VUID-vkGetDeviceGroupPresentCapabilitiesKHR-pDeviceGroupPresentCapabilities-parameter",
25323          "text": " <code>pDeviceGroupPresentCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceGroupPresentCapabilitiesKHR\">VkDeviceGroupPresentCapabilitiesKHR</a> structure"
25324        }
25325      ]
25326    },
25327    "VkDeviceGroupPresentCapabilitiesKHR": {
25328      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
25329        {
25330          "vuid": "VUID-VkDeviceGroupPresentCapabilitiesKHR-sType-sType",
25331          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR</code>"
25332        },
25333        {
25334          "vuid": "VUID-VkDeviceGroupPresentCapabilitiesKHR-pNext-pNext",
25335          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
25336        }
25337      ]
25338    },
25339    "vkGetDeviceGroupSurfacePresentModesKHR": {
25340      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
25341        {
25342          "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-device-parameter",
25343          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
25344        },
25345        {
25346          "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-surface-parameter",
25347          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
25348        },
25349        {
25350          "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-pModes-parameter",
25351          "text": " <code>pModes</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceGroupPresentModeFlagsKHR\">VkDeviceGroupPresentModeFlagsKHR</a> value"
25352        },
25353        {
25354          "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-commonparent",
25355          "text": " Both of <code>device</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>"
25356        }
25357      ]
25358    },
25359    "vkGetDeviceGroupSurfacePresentModes2EXT": {
25360      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_EXT_full_screen_exclusive)": [
25361        {
25362          "vuid": "VUID-vkGetDeviceGroupSurfacePresentModes2EXT-device-parameter",
25363          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
25364        },
25365        {
25366          "vuid": "VUID-vkGetDeviceGroupSurfacePresentModes2EXT-pSurfaceInfo-parameter",
25367          "text": " <code>pSurfaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceSurfaceInfo2KHR\">VkPhysicalDeviceSurfaceInfo2KHR</a> structure"
25368        },
25369        {
25370          "vuid": "VUID-vkGetDeviceGroupSurfacePresentModes2EXT-pModes-parameter",
25371          "text": " <code>pModes</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceGroupPresentModeFlagsKHR\">VkDeviceGroupPresentModeFlagsKHR</a> value"
25372        }
25373      ]
25374    },
25375    "vkGetPhysicalDevicePresentRectanglesKHR": {
25376      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
25377        {
25378          "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-physicalDevice-parameter",
25379          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
25380        },
25381        {
25382          "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-surface-parameter",
25383          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
25384        },
25385        {
25386          "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-pRectCount-parameter",
25387          "text": " <code>pRectCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
25388        },
25389        {
25390          "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-pRects-parameter",
25391          "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> <a href=\"#VkRect2D\">VkRect2D</a> structures"
25392        },
25393        {
25394          "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-commonparent",
25395          "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>"
25396        }
25397      ]
25398    },
25399    "vkGetRefreshCycleDurationGOOGLE": {
25400      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GOOGLE_display_timing)": [
25401        {
25402          "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-device-parameter",
25403          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
25404        },
25405        {
25406          "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-swapchain-parameter",
25407          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle"
25408        },
25409        {
25410          "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-pDisplayTimingProperties-parameter",
25411          "text": " <code>pDisplayTimingProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkRefreshCycleDurationGOOGLE\">VkRefreshCycleDurationGOOGLE</a> structure"
25412        },
25413        {
25414          "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-commonparent",
25415          "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>"
25416        }
25417      ]
25418    },
25419    "vkGetPastPresentationTimingGOOGLE": {
25420      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GOOGLE_display_timing)": [
25421        {
25422          "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-device-parameter",
25423          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
25424        },
25425        {
25426          "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-swapchain-parameter",
25427          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle"
25428        },
25429        {
25430          "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-pPresentationTimingCount-parameter",
25431          "text": " <code>pPresentationTimingCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
25432        },
25433        {
25434          "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-pPresentationTimings-parameter",
25435          "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> <a href=\"#VkPastPresentationTimingGOOGLE\">VkPastPresentationTimingGOOGLE</a> structures"
25436        },
25437        {
25438          "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-commonparent",
25439          "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>"
25440        }
25441      ]
25442    },
25443    "vkGetSwapchainStatusKHR": {
25444      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_shared_presentable_image)": [
25445        {
25446          "vuid": "VUID-vkGetSwapchainStatusKHR-device-parameter",
25447          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
25448        },
25449        {
25450          "vuid": "VUID-vkGetSwapchainStatusKHR-swapchain-parameter",
25451          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle"
25452        },
25453        {
25454          "vuid": "VUID-vkGetSwapchainStatusKHR-commonparent",
25455          "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>"
25456        }
25457      ]
25458    },
25459    "vkCreateSwapchainKHR": {
25460      "(VK_KHR_surface)+(VK_KHR_swapchain)": [
25461        {
25462          "vuid": "VUID-vkCreateSwapchainKHR-device-parameter",
25463          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
25464        },
25465        {
25466          "vuid": "VUID-vkCreateSwapchainKHR-pCreateInfo-parameter",
25467          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a> structure"
25468        },
25469        {
25470          "vuid": "VUID-vkCreateSwapchainKHR-pAllocator-parameter",
25471          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
25472        },
25473        {
25474          "vuid": "VUID-vkCreateSwapchainKHR-pSwapchain-parameter",
25475          "text": " <code>pSwapchain</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle"
25476        }
25477      ]
25478    },
25479    "VkSwapchainCreateInfoKHR": {
25480      "(VK_KHR_surface)+(VK_KHR_swapchain)": [
25481        {
25482          "vuid": "VUID-VkSwapchainCreateInfoKHR-surface-01270",
25483          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a surface that is supported by the device as determined using <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a>"
25484        },
25485        {
25486          "vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01272",
25487          "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"
25488        },
25489        {
25490          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-01273",
25491          "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"
25492        },
25493        {
25494          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageExtent-01274",
25495          "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"
25496        },
25497        {
25498          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageExtent-01689",
25499          "text": " <code>imageExtent</code> members <code>width</code> and <code>height</code> <strong class=\"purple\">must</strong> both be non-zero"
25500        },
25501        {
25502          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageArrayLayers-01275",
25503          "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"
25504        },
25505        {
25506          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01277",
25507          "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"
25508        },
25509        {
25510          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01278",
25511          "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>"
25512        },
25513        {
25514          "vuid": "VUID-VkSwapchainCreateInfoKHR-preTransform-01279",
25515          "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"
25516        },
25517        {
25518          "vuid": "VUID-VkSwapchainCreateInfoKHR-compositeAlpha-01280",
25519          "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"
25520        },
25521        {
25522          "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-01281",
25523          "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"
25524        },
25525        {
25526          "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-01933",
25527          "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>"
25528        },
25529        {
25530          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-01778",
25531          "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>"
25532        },
25533        {
25534          "vuid": "VUID-VkSwapchainCreateInfoKHR-sType-sType",
25535          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR</code>"
25536        },
25537        {
25538          "vuid": "VUID-VkSwapchainCreateInfoKHR-pNext-pNext",
25539          "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=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>, <a href=\"#VkSurfaceFullScreenExclusiveInfoEXT\">VkSurfaceFullScreenExclusiveInfoEXT</a>, <a href=\"#VkSurfaceFullScreenExclusiveWin32InfoEXT\">VkSurfaceFullScreenExclusiveWin32InfoEXT</a>, <a href=\"#VkSwapchainCounterCreateInfoEXT\">VkSwapchainCounterCreateInfoEXT</a>, or <a href=\"#VkSwapchainDisplayNativeHdrCreateInfoAMD\">VkSwapchainDisplayNativeHdrCreateInfoAMD</a>"
25540        },
25541        {
25542          "vuid": "VUID-VkSwapchainCreateInfoKHR-sType-unique",
25543          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
25544        },
25545        {
25546          "vuid": "VUID-VkSwapchainCreateInfoKHR-flags-parameter",
25547          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSwapchainCreateFlagBitsKHR\">VkSwapchainCreateFlagBitsKHR</a> values"
25548        },
25549        {
25550          "vuid": "VUID-VkSwapchainCreateInfoKHR-surface-parameter",
25551          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
25552        },
25553        {
25554          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-parameter",
25555          "text": " <code>imageFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
25556        },
25557        {
25558          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageColorSpace-parameter",
25559          "text": " <code>imageColorSpace</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkColorSpaceKHR\">VkColorSpaceKHR</a> value"
25560        },
25561        {
25562          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-parameter",
25563          "text": " <code>imageUsage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
25564        },
25565        {
25566          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-requiredbitmask",
25567          "text": " <code>imageUsage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
25568        },
25569        {
25570          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-parameter",
25571          "text": " <code>imageSharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value"
25572        },
25573        {
25574          "vuid": "VUID-VkSwapchainCreateInfoKHR-preTransform-parameter",
25575          "text": " <code>preTransform</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceTransformFlagBitsKHR\">VkSurfaceTransformFlagBitsKHR</a> value"
25576        },
25577        {
25578          "vuid": "VUID-VkSwapchainCreateInfoKHR-compositeAlpha-parameter",
25579          "text": " <code>compositeAlpha</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompositeAlphaFlagBitsKHR\">VkCompositeAlphaFlagBitsKHR</a> value"
25580        },
25581        {
25582          "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-parameter",
25583          "text": " <code>presentMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPresentModeKHR\">VkPresentModeKHR</a> value"
25584        },
25585        {
25586          "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parameter",
25587          "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 <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle"
25588        },
25589        {
25590          "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parent",
25591          "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>"
25592        },
25593        {
25594          "vuid": "VUID-VkSwapchainCreateInfoKHR-commonparent",
25595          "text": " Both of <code>oldSwapchain</code>, and <code>surface</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>"
25596        }
25597      ],
25598      "(VK_KHR_surface)+(VK_KHR_swapchain)+!(VK_KHR_shared_presentable_image)": [
25599        {
25600          "vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01271",
25601          "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 <a href=\"#vkGetPhysicalDeviceSurfaceCapabilitiesKHR\">vkGetPhysicalDeviceSurfaceCapabilitiesKHR</a> for the surface"
25602        },
25603        {
25604          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-01276",
25605          "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"
25606        }
25607      ],
25608      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_shared_presentable_image)": [
25609        {
25610          "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-02839",
25611          "text": " If <code>presentMode</code> is not <code>VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR</code> nor <code>VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR</code>, then <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 <a href=\"#vkGetPhysicalDeviceSurfaceCapabilitiesKHR\">vkGetPhysicalDeviceSurfaceCapabilitiesKHR</a> for the surface"
25612        },
25613        {
25614          "vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01383",
25615          "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>"
25616        },
25617        {
25618          "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-01427",
25619          "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>"
25620        },
25621        {
25622          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-01384",
25623          "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>"
25624        }
25625      ],
25626      "(VK_KHR_surface)+(VK_KHR_swapchain)+!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
25627        {
25628          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01393",
25629          "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>"
25630        }
25631      ],
25632      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
25633        {
25634          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01428",
25635          "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>"
25636        }
25637      ],
25638      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
25639        {
25640          "vuid": "VUID-VkSwapchainCreateInfoKHR-physicalDeviceCount-01429",
25641          "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>"
25642        }
25643      ],
25644      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_swapchain_mutable_format)": [
25645        {
25646          "vuid": "VUID-VkSwapchainCreateInfoKHR-flags-03168",
25647          "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> include a <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a> structure 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>"
25648        },
25649        {
25650          "vuid": "VUID-VkSwapchainCreateInfoKHR-pNext-04099",
25651          "text": " If a <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a> structure was included in the <code>pNext</code> chain and <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>viewFormatCount</code> is not zero then all of the formats in <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>pViewFormats</code> <strong class=\"purple\">must</strong> be compatible with the <code>format</code> as described in the <a href=\"#formats-compatibility\">compatibility table</a>"
25652        },
25653        {
25654          "vuid": "VUID-VkSwapchainCreateInfoKHR-flags-04100",
25655          "text": " If <code>flags</code> dose not contain <code>VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR</code> and the <code>pNext</code> chain include a <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a> structure then <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>viewFormatCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>"
25656        }
25657      ],
25658      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_surface_protected_capabilities)": [
25659        {
25660          "vuid": "VUID-VkSwapchainCreateInfoKHR-flags-03187",
25661          "text": " If <code>flags</code> contains <code>VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR</code>, then <code>VkSurfaceProtectedCapabilitiesKHR</code>::<code>supportsProtected</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code> in the <a href=\"#VkSurfaceProtectedCapabilitiesKHR\">VkSurfaceProtectedCapabilitiesKHR</a> structure returned by <a href=\"#vkGetPhysicalDeviceSurfaceCapabilities2KHR\">vkGetPhysicalDeviceSurfaceCapabilities2KHR</a> for <code>surface</code>"
25662        }
25663      ],
25664      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_full_screen_exclusive+VK_KHR_win32_surface)": [
25665        {
25666          "vuid": "VUID-VkSwapchainCreateInfoKHR-pNext-02679",
25667          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkSurfaceFullScreenExclusiveInfoEXT\">VkSurfaceFullScreenExclusiveInfoEXT</a> structure with its <code>fullScreenExclusive</code> member set to <code>VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT</code>, and <code>surface</code> was created using <a href=\"#vkCreateWin32SurfaceKHR\">vkCreateWin32SurfaceKHR</a>, a <a href=\"#VkSurfaceFullScreenExclusiveWin32InfoEXT\">VkSurfaceFullScreenExclusiveWin32InfoEXT</a> structure <strong class=\"purple\">must</strong> be included in the <code>pNext</code> chain"
25668        }
25669      ]
25670    },
25671    "VkDeviceGroupSwapchainCreateInfoKHR": {
25672      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
25673        {
25674          "vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-sType-sType",
25675          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR</code>"
25676        },
25677        {
25678          "vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-parameter",
25679          "text": " <code>modes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceGroupPresentModeFlagBitsKHR\">VkDeviceGroupPresentModeFlagBitsKHR</a> values"
25680        },
25681        {
25682          "vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-requiredbitmask",
25683          "text": " <code>modes</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
25684        }
25685      ]
25686    },
25687    "VkSwapchainDisplayNativeHdrCreateInfoAMD": {
25688      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_AMD_display_native_hdr)": [
25689        {
25690          "vuid": "VUID-VkSwapchainDisplayNativeHdrCreateInfoAMD-sType-sType",
25691          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD</code>"
25692        },
25693        {
25694          "vuid": "VUID-VkSwapchainDisplayNativeHdrCreateInfoAMD-localDimmingEnable-XXXXX",
25695          "text": " It is only valid to set <code>localDimmingEnable</code> to <code>VK_TRUE</code> if <a href=\"#VkDisplayNativeHdrSurfaceCapabilitiesAMD\">VkDisplayNativeHdrSurfaceCapabilitiesAMD</a>::<code>localDimmingSupport</code> is supported"
25696        }
25697      ]
25698    },
25699    "vkSetLocalDimmingAMD": {
25700      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_AMD_display_native_hdr)": [
25701        {
25702          "vuid": "VUID-vkSetLocalDimmingAMD-device-parameter",
25703          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
25704        },
25705        {
25706          "vuid": "VUID-vkSetLocalDimmingAMD-swapChain-parameter",
25707          "text": " <code>swapChain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle"
25708        },
25709        {
25710          "vuid": "VUID-vkSetLocalDimmingAMD-commonparent",
25711          "text": " Both of <code>device</code>, and <code>swapChain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>"
25712        },
25713        {
25714          "vuid": "VUID-vkSetLocalDimmingAMD-XXXXX",
25715          "text": " It is only valid to call <a href=\"#vkSetLocalDimmingAMD\">vkSetLocalDimmingAMD</a> if <a href=\"#VkDisplayNativeHdrSurfaceCapabilitiesAMD\">VkDisplayNativeHdrSurfaceCapabilitiesAMD</a>::<code>localDimmingSupport</code> is supported"
25716        }
25717      ]
25718    },
25719    "VkSwapchainCounterCreateInfoEXT": {
25720      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_display_control)": [
25721        {
25722          "vuid": "VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-01244",
25723          "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>"
25724        },
25725        {
25726          "vuid": "VUID-VkSwapchainCounterCreateInfoEXT-sType-sType",
25727          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT</code>"
25728        },
25729        {
25730          "vuid": "VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-parameter",
25731          "text": " <code>surfaceCounters</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSurfaceCounterFlagBitsEXT\">VkSurfaceCounterFlagBitsEXT</a> values"
25732        }
25733      ]
25734    },
25735    "vkGetSwapchainCounterEXT": {
25736      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_display_control)": [
25737        {
25738          "vuid": "VUID-vkGetSwapchainCounterEXT-swapchain-01245",
25739          "text": " One or more present commands on <code>swapchain</code> <strong class=\"purple\">must</strong> have been processed by the presentation engine"
25740        },
25741        {
25742          "vuid": "VUID-vkGetSwapchainCounterEXT-device-parameter",
25743          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
25744        },
25745        {
25746          "vuid": "VUID-vkGetSwapchainCounterEXT-swapchain-parameter",
25747          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle"
25748        },
25749        {
25750          "vuid": "VUID-vkGetSwapchainCounterEXT-counter-parameter",
25751          "text": " <code>counter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceCounterFlagBitsEXT\">VkSurfaceCounterFlagBitsEXT</a> value"
25752        },
25753        {
25754          "vuid": "VUID-vkGetSwapchainCounterEXT-pCounterValue-parameter",
25755          "text": " <code>pCounterValue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint64_t</code> value"
25756        },
25757        {
25758          "vuid": "VUID-vkGetSwapchainCounterEXT-commonparent",
25759          "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>"
25760        }
25761      ]
25762    },
25763    "vkDestroySwapchainKHR": {
25764      "(VK_KHR_surface)+(VK_KHR_swapchain)": [
25765        {
25766          "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01282",
25767          "text": " All uses of presentable images acquired from <code>swapchain</code> <strong class=\"purple\">must</strong> have completed execution"
25768        },
25769        {
25770          "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01283",
25771          "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"
25772        },
25773        {
25774          "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01284",
25775          "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>"
25776        },
25777        {
25778          "vuid": "VUID-vkDestroySwapchainKHR-device-parameter",
25779          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
25780        },
25781        {
25782          "vuid": "VUID-vkDestroySwapchainKHR-swapchain-parameter",
25783          "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 <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle"
25784        },
25785        {
25786          "vuid": "VUID-vkDestroySwapchainKHR-pAllocator-parameter",
25787          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
25788        },
25789        {
25790          "vuid": "VUID-vkDestroySwapchainKHR-commonparent",
25791          "text": " Both of <code>device</code>, and <code>swapchain</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>"
25792        }
25793      ]
25794    },
25795    "vkCreateSharedSwapchainsKHR": {
25796      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [
25797        {
25798          "vuid": "VUID-vkCreateSharedSwapchainsKHR-device-parameter",
25799          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
25800        },
25801        {
25802          "vuid": "VUID-vkCreateSharedSwapchainsKHR-pCreateInfos-parameter",
25803          "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a> structures"
25804        },
25805        {
25806          "vuid": "VUID-vkCreateSharedSwapchainsKHR-pAllocator-parameter",
25807          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
25808        },
25809        {
25810          "vuid": "VUID-vkCreateSharedSwapchainsKHR-pSwapchains-parameter",
25811          "text": " <code>pSwapchains</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handles"
25812        },
25813        {
25814          "vuid": "VUID-vkCreateSharedSwapchainsKHR-swapchainCount-arraylength",
25815          "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
25816        }
25817      ]
25818    },
25819    "vkGetSwapchainImagesKHR": {
25820      "(VK_KHR_surface)+(VK_KHR_swapchain)": [
25821        {
25822          "vuid": "VUID-vkGetSwapchainImagesKHR-device-parameter",
25823          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
25824        },
25825        {
25826          "vuid": "VUID-vkGetSwapchainImagesKHR-swapchain-parameter",
25827          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle"
25828        },
25829        {
25830          "vuid": "VUID-vkGetSwapchainImagesKHR-pSwapchainImageCount-parameter",
25831          "text": " <code>pSwapchainImageCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
25832        },
25833        {
25834          "vuid": "VUID-vkGetSwapchainImagesKHR-pSwapchainImages-parameter",
25835          "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> <a href=\"#VkImage\">VkImage</a> handles"
25836        },
25837        {
25838          "vuid": "VUID-vkGetSwapchainImagesKHR-commonparent",
25839          "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>"
25840        }
25841      ]
25842    },
25843    "vkAcquireNextImageKHR": {
25844      "(VK_KHR_surface)+(VK_KHR_swapchain)": [
25845        {
25846          "vuid": "VUID-vkAcquireNextImageKHR-swapchain-01285",
25847          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state"
25848        },
25849        {
25850          "vuid": "VUID-vkAcquireNextImageKHR-semaphore-01286",
25851          "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> be unsignaled"
25852        },
25853        {
25854          "vuid": "VUID-vkAcquireNextImageKHR-semaphore-01779",
25855          "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"
25856        },
25857        {
25858          "vuid": "VUID-vkAcquireNextImageKHR-fence-01287",
25859          "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"
25860        },
25861        {
25862          "vuid": "VUID-vkAcquireNextImageKHR-semaphore-01780",
25863          "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>"
25864        },
25865        {
25866          "vuid": "VUID-vkAcquireNextImageKHR-swapchain-01802",
25867          "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>"
25868        },
25869        {
25870          "vuid": "VUID-vkAcquireNextImageKHR-device-parameter",
25871          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
25872        },
25873        {
25874          "vuid": "VUID-vkAcquireNextImageKHR-swapchain-parameter",
25875          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle"
25876        },
25877        {
25878          "vuid": "VUID-vkAcquireNextImageKHR-semaphore-parameter",
25879          "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 <a href=\"#VkSemaphore\">VkSemaphore</a> handle"
25880        },
25881        {
25882          "vuid": "VUID-vkAcquireNextImageKHR-fence-parameter",
25883          "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 <a href=\"#VkFence\">VkFence</a> handle"
25884        },
25885        {
25886          "vuid": "VUID-vkAcquireNextImageKHR-pImageIndex-parameter",
25887          "text": " <code>pImageIndex</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
25888        },
25889        {
25890          "vuid": "VUID-vkAcquireNextImageKHR-semaphore-parent",
25891          "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>"
25892        },
25893        {
25894          "vuid": "VUID-vkAcquireNextImageKHR-fence-parent",
25895          "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>"
25896        },
25897        {
25898          "vuid": "VUID-vkAcquireNextImageKHR-commonparent",
25899          "text": " Both of <code>device</code>, and <code>swapchain</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>"
25900        }
25901      ],
25902      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
25903        {
25904          "vuid": "VUID-vkAcquireNextImageKHR-semaphore-03265",
25905          "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> have a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_BINARY</code>"
25906        }
25907      ]
25908    },
25909    "vkAcquireNextImage2KHR": {
25910      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
25911        {
25912          "vuid": "VUID-vkAcquireNextImage2KHR-swapchain-01803",
25913          "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>"
25914        },
25915        {
25916          "vuid": "VUID-vkAcquireNextImage2KHR-device-parameter",
25917          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
25918        },
25919        {
25920          "vuid": "VUID-vkAcquireNextImage2KHR-pAcquireInfo-parameter",
25921          "text": " <code>pAcquireInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAcquireNextImageInfoKHR\">VkAcquireNextImageInfoKHR</a> structure"
25922        },
25923        {
25924          "vuid": "VUID-vkAcquireNextImage2KHR-pImageIndex-parameter",
25925          "text": " <code>pImageIndex</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
25926        }
25927      ]
25928    },
25929    "VkAcquireNextImageInfoKHR": {
25930      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
25931        {
25932          "vuid": "VUID-VkAcquireNextImageInfoKHR-swapchain-01675",
25933          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state"
25934        },
25935        {
25936          "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01288",
25937          "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> be unsignaled"
25938        },
25939        {
25940          "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01781",
25941          "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"
25942        },
25943        {
25944          "vuid": "VUID-VkAcquireNextImageInfoKHR-fence-01289",
25945          "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"
25946        },
25947        {
25948          "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01782",
25949          "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>"
25950        },
25951        {
25952          "vuid": "VUID-VkAcquireNextImageInfoKHR-deviceMask-01290",
25953          "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask"
25954        },
25955        {
25956          "vuid": "VUID-VkAcquireNextImageInfoKHR-deviceMask-01291",
25957          "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
25958        },
25959        {
25960          "vuid": "VUID-VkAcquireNextImageInfoKHR-sType-sType",
25961          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR</code>"
25962        },
25963        {
25964          "vuid": "VUID-VkAcquireNextImageInfoKHR-pNext-pNext",
25965          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
25966        },
25967        {
25968          "vuid": "VUID-VkAcquireNextImageInfoKHR-swapchain-parameter",
25969          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle"
25970        },
25971        {
25972          "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-parameter",
25973          "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 <a href=\"#VkSemaphore\">VkSemaphore</a> handle"
25974        },
25975        {
25976          "vuid": "VUID-VkAcquireNextImageInfoKHR-fence-parameter",
25977          "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 <a href=\"#VkFence\">VkFence</a> handle"
25978        },
25979        {
25980          "vuid": "VUID-VkAcquireNextImageInfoKHR-commonparent",
25981          "text": " Each of <code>fence</code>, <code>semaphore</code>, and <code>swapchain</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>"
25982        }
25983      ],
25984      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
25985        {
25986          "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-03266",
25987          "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> have a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_BINARY</code>"
25988        }
25989      ]
25990    },
25991    "vkQueuePresentKHR": {
25992      "(VK_KHR_surface)+(VK_KHR_swapchain)": [
25993        {
25994          "vuid": "VUID-vkQueuePresentKHR-pSwapchains-01292",
25995          "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>"
25996        },
25997        {
25998          "vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-01294",
25999          "text": " When a semaphore wait operation referring to a binary semaphore defined by the elements of the <code>pWaitSemaphores</code> member of <code>pPresentInfo</code> executes on <code>queue</code>, there <strong class=\"purple\">must</strong> be no other queues waiting on the same semaphore"
26000        },
26001        {
26002          "vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-01295",
26003          "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"
26004        },
26005        {
26006          "vuid": "VUID-vkQueuePresentKHR-queue-parameter",
26007          "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle"
26008        },
26009        {
26010          "vuid": "VUID-vkQueuePresentKHR-pPresentInfo-parameter",
26011          "text": " <code>pPresentInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPresentInfoKHR\">VkPresentInfoKHR</a> structure"
26012        }
26013      ],
26014      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [
26015        {
26016          "vuid": "VUID-vkQueuePresentKHR-pSwapchains-01293",
26017          "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"
26018        }
26019      ],
26020      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
26021        {
26022          "vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-03267",
26023          "text": " All elements of the <code>pWaitSemaphores</code> member of <code>pPresentInfo</code> <strong class=\"purple\">must</strong> be created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_BINARY</code>"
26024        },
26025        {
26026          "vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-03268",
26027          "text": " All elements of the <code>pWaitSemaphores</code> member of <code>pPresentInfo</code> <strong class=\"purple\">must</strong> reference a semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends (if any) <strong class=\"purple\">must</strong> have also been submitted for execution"
26028        }
26029      ]
26030    },
26031    "VkPresentInfoKHR": {
26032      "(VK_KHR_surface)+(VK_KHR_swapchain)+!(VK_KHR_shared_presentable_image)": [
26033        {
26034          "vuid": "VUID-VkPresentInfoKHR-pImageIndices-01296",
26035          "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>"
26036        }
26037      ],
26038      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_shared_presentable_image)": [
26039        {
26040          "vuid": "VUID-VkPresentInfoKHR-pImageIndices-01430",
26041          "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>"
26042        }
26043      ],
26044      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
26045        {
26046          "vuid": "VUID-VkPresentInfoKHR-pWaitSemaphores-03269",
26047          "text": " All elements of the <code>pWaitSemaphores</code> <strong class=\"purple\">must</strong> have a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_BINARY</code>"
26048        }
26049      ],
26050      "(VK_KHR_surface)+(VK_KHR_swapchain)": [
26051        {
26052          "vuid": "VUID-VkPresentInfoKHR-sType-sType",
26053          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_INFO_KHR</code>"
26054        },
26055        {
26056          "vuid": "VUID-VkPresentInfoKHR-pNext-pNext",
26057          "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=\"#VkPresentFrameTokenGGP\">VkPresentFrameTokenGGP</a>, <a href=\"#VkPresentRegionsKHR\">VkPresentRegionsKHR</a>, or <a href=\"#VkPresentTimesInfoGOOGLE\">VkPresentTimesInfoGOOGLE</a>"
26058        },
26059        {
26060          "vuid": "VUID-VkPresentInfoKHR-sType-unique",
26061          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
26062        },
26063        {
26064          "vuid": "VUID-VkPresentInfoKHR-pWaitSemaphores-parameter",
26065          "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 <a href=\"#VkSemaphore\">VkSemaphore</a> handles"
26066        },
26067        {
26068          "vuid": "VUID-VkPresentInfoKHR-pSwapchains-parameter",
26069          "text": " <code>pSwapchains</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handles"
26070        },
26071        {
26072          "vuid": "VUID-VkPresentInfoKHR-pImageIndices-parameter",
26073          "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"
26074        },
26075        {
26076          "vuid": "VUID-VkPresentInfoKHR-pResults-parameter",
26077          "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"
26078        },
26079        {
26080          "vuid": "VUID-VkPresentInfoKHR-swapchainCount-arraylength",
26081          "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
26082        },
26083        {
26084          "vuid": "VUID-VkPresentInfoKHR-commonparent",
26085          "text": " Both of the elements of <code>pSwapchains</code>, and the elements of <code>pWaitSemaphores</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>"
26086        }
26087      ]
26088    },
26089    "VkPresentRegionsKHR": {
26090      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [
26091        {
26092          "vuid": "VUID-VkPresentRegionsKHR-swapchainCount-01260",
26093          "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 included in the <code>pNext</code> chain of this <code>VkPresentRegionsKHR</code> structure"
26094        },
26095        {
26096          "vuid": "VUID-VkPresentRegionsKHR-sType-sType",
26097          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR</code>"
26098        },
26099        {
26100          "vuid": "VUID-VkPresentRegionsKHR-pRegions-parameter",
26101          "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 <a href=\"#VkPresentRegionKHR\">VkPresentRegionKHR</a> structures"
26102        },
26103        {
26104          "vuid": "VUID-VkPresentRegionsKHR-swapchainCount-arraylength",
26105          "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
26106        }
26107      ]
26108    },
26109    "VkPresentRegionKHR": {
26110      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [
26111        {
26112          "vuid": "VUID-VkPresentRegionKHR-pRectangles-parameter",
26113          "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 <a href=\"#VkRectLayerKHR\">VkRectLayerKHR</a> structures"
26114        }
26115      ]
26116    },
26117    "VkRectLayerKHR": {
26118      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [
26119        {
26120          "vuid": "VUID-VkRectLayerKHR-offset-01261",
26121          "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 <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a> structure passed to <a href=\"#vkCreateSwapchainKHR\">vkCreateSwapchainKHR</a>"
26122        },
26123        {
26124          "vuid": "VUID-VkRectLayerKHR-layer-01262",
26125          "text": " <code>layer</code> <strong class=\"purple\">must</strong> be less than the <code>imageArrayLayers</code> member of the <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a> structure passed to <a href=\"#vkCreateSwapchainKHR\">vkCreateSwapchainKHR</a>"
26126        }
26127      ]
26128    },
26129    "VkDisplayPresentInfoKHR": {
26130      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [
26131        {
26132          "vuid": "VUID-VkDisplayPresentInfoKHR-srcRect-01257",
26133          "text": " <code>srcRect</code> <strong class=\"purple\">must</strong> specify a rectangular region that is a subset of the image being presented"
26134        },
26135        {
26136          "vuid": "VUID-VkDisplayPresentInfoKHR-dstRect-01258",
26137          "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"
26138        },
26139        {
26140          "vuid": "VUID-VkDisplayPresentInfoKHR-persistentContent-01259",
26141          "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>"
26142        },
26143        {
26144          "vuid": "VUID-VkDisplayPresentInfoKHR-sType-sType",
26145          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR</code>"
26146        }
26147      ]
26148    },
26149    "VkDeviceGroupPresentInfoKHR": {
26150      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
26151        {
26152          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-swapchainCount-01297",
26153          "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> equal <code>0</code> or <a href=\"#VkPresentInfoKHR\">VkPresentInfoKHR</a>::<code>swapchainCount</code>"
26154        },
26155        {
26156          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01298",
26157          "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"
26158        },
26159        {
26160          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01299",
26161          "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>"
26162        },
26163        {
26164          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01300",
26165          "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>"
26166        },
26167        {
26168          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01301",
26169          "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"
26170        },
26171        {
26172          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-01302",
26173          "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"
26174        },
26175        {
26176          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01303",
26177          "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>"
26178        },
26179        {
26180          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-sType-sType",
26181          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR</code>"
26182        },
26183        {
26184          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-parameter",
26185          "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"
26186        },
26187        {
26188          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-parameter",
26189          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceGroupPresentModeFlagBitsKHR\">VkDeviceGroupPresentModeFlagBitsKHR</a> value"
26190        }
26191      ]
26192    },
26193    "VkPresentTimesInfoGOOGLE": {
26194      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GOOGLE_display_timing)": [
26195        {
26196          "vuid": "VUID-VkPresentTimesInfoGOOGLE-swapchainCount-01247",
26197          "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 included in the <code>pNext</code> chain of this <code>VkPresentTimesInfoGOOGLE</code> structure"
26198        },
26199        {
26200          "vuid": "VUID-VkPresentTimesInfoGOOGLE-sType-sType",
26201          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE</code>"
26202        },
26203        {
26204          "vuid": "VUID-VkPresentTimesInfoGOOGLE-pTimes-parameter",
26205          "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> <a href=\"#VkPresentTimeGOOGLE\">VkPresentTimeGOOGLE</a> structures"
26206        },
26207        {
26208          "vuid": "VUID-VkPresentTimesInfoGOOGLE-swapchainCount-arraylength",
26209          "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
26210        }
26211      ]
26212    },
26213    "VkPresentFrameTokenGGP": {
26214      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GGP_frame_token)": [
26215        {
26216          "vuid": "VUID-VkPresentFrameTokenGGP-frameToken-02680",
26217          "text": " <code>frameToken</code> <strong class=\"purple\">must</strong> be a valid <code>GgpFrameToken</code>"
26218        },
26219        {
26220          "vuid": "VUID-VkPresentFrameTokenGGP-sType-sType",
26221          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP</code>"
26222        }
26223      ]
26224    },
26225    "vkSetHdrMetadataEXT": {
26226      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_hdr_metadata)": [
26227        {
26228          "vuid": "VUID-vkSetHdrMetadataEXT-device-parameter",
26229          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
26230        },
26231        {
26232          "vuid": "VUID-vkSetHdrMetadataEXT-pSwapchains-parameter",
26233          "text": " <code>pSwapchains</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handles"
26234        },
26235        {
26236          "vuid": "VUID-vkSetHdrMetadataEXT-pMetadata-parameter",
26237          "text": " <code>pMetadata</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <a href=\"#VkHdrMetadataEXT\">VkHdrMetadataEXT</a> structures"
26238        },
26239        {
26240          "vuid": "VUID-vkSetHdrMetadataEXT-swapchainCount-arraylength",
26241          "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
26242        },
26243        {
26244          "vuid": "VUID-vkSetHdrMetadataEXT-commonparent",
26245          "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 <a href=\"#VkInstance\">VkInstance</a>"
26246        }
26247      ]
26248    },
26249    "VkHdrMetadataEXT": {
26250      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_hdr_metadata)": [
26251        {
26252          "vuid": "VUID-VkHdrMetadataEXT-sType-sType",
26253          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_HDR_METADATA_EXT</code>"
26254        },
26255        {
26256          "vuid": "VUID-VkHdrMetadataEXT-pNext-pNext",
26257          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
26258        }
26259      ]
26260    },
26261    "VkDeferredOperationInfoKHR": {
26262      "(VK_KHR_deferred_host_operations)": [
26263        {
26264          "vuid": "VUID-VkDeferredOperationInfoKHR-operationHandle-03433",
26265          "text": " Any previous deferred operation that was associated with <code>operationHandle</code> <strong class=\"purple\">must</strong> be complete"
26266        },
26267        {
26268          "vuid": "VUID-VkDeferredOperationInfoKHR-sType-sType",
26269          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR</code>"
26270        }
26271      ]
26272    },
26273    "vkCreateDeferredOperationKHR": {
26274      "(VK_KHR_deferred_host_operations)": [
26275        {
26276          "vuid": "VUID-vkCreateDeferredOperationKHR-device-parameter",
26277          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
26278        },
26279        {
26280          "vuid": "VUID-vkCreateDeferredOperationKHR-pAllocator-parameter",
26281          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
26282        },
26283        {
26284          "vuid": "VUID-vkCreateDeferredOperationKHR-pDeferredOperation-parameter",
26285          "text": " <code>pDeferredOperation</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle"
26286        }
26287      ]
26288    },
26289    "vkDeferredOperationJoinKHR": {
26290      "(VK_KHR_deferred_host_operations)": [
26291        {
26292          "vuid": "VUID-vkDeferredOperationJoinKHR-device-parameter",
26293          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
26294        },
26295        {
26296          "vuid": "VUID-vkDeferredOperationJoinKHR-operation-parameter",
26297          "text": " <code>operation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle"
26298        },
26299        {
26300          "vuid": "VUID-vkDeferredOperationJoinKHR-operation-parent",
26301          "text": " <code>operation</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
26302        }
26303      ]
26304    },
26305    "vkDestroyDeferredOperationKHR": {
26306      "(VK_KHR_deferred_host_operations)": [
26307        {
26308          "vuid": "VUID-vkDestroyDeferredOperationKHR-operation-03434",
26309          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>operation</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
26310        },
26311        {
26312          "vuid": "VUID-vkDestroyDeferredOperationKHR-operation-03435",
26313          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>operation</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
26314        },
26315        {
26316          "vuid": "VUID-vkDestroyDeferredOperationKHR-operation-03436",
26317          "text": " <code>operation</code> <strong class=\"purple\">must</strong> be completed"
26318        },
26319        {
26320          "vuid": "VUID-vkDestroyDeferredOperationKHR-device-parameter",
26321          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
26322        },
26323        {
26324          "vuid": "VUID-vkDestroyDeferredOperationKHR-operation-parameter",
26325          "text": " If <code>operation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>operation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle"
26326        },
26327        {
26328          "vuid": "VUID-vkDestroyDeferredOperationKHR-pAllocator-parameter",
26329          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
26330        },
26331        {
26332          "vuid": "VUID-vkDestroyDeferredOperationKHR-operation-parent",
26333          "text": " If <code>operation</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
26334        }
26335      ]
26336    },
26337    "vkGetDeferredOperationMaxConcurrencyKHR": {
26338      "(VK_KHR_deferred_host_operations)": [
26339        {
26340          "vuid": "VUID-vkGetDeferredOperationMaxConcurrencyKHR-device-parameter",
26341          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
26342        },
26343        {
26344          "vuid": "VUID-vkGetDeferredOperationMaxConcurrencyKHR-operation-parameter",
26345          "text": " <code>operation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle"
26346        },
26347        {
26348          "vuid": "VUID-vkGetDeferredOperationMaxConcurrencyKHR-operation-parent",
26349          "text": " <code>operation</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
26350        }
26351      ]
26352    },
26353    "vkGetDeferredOperationResultKHR": {
26354      "(VK_KHR_deferred_host_operations)": [
26355        {
26356          "vuid": "VUID-vkGetDeferredOperationResultKHR-device-parameter",
26357          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
26358        },
26359        {
26360          "vuid": "VUID-vkGetDeferredOperationResultKHR-operation-parameter",
26361          "text": " <code>operation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle"
26362        },
26363        {
26364          "vuid": "VUID-vkGetDeferredOperationResultKHR-operation-parent",
26365          "text": " <code>operation</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
26366        }
26367      ]
26368    },
26369    "vkCreatePrivateDataSlotEXT": {
26370      "(VK_EXT_private_data)": [
26371        {
26372          "vuid": "VUID-vkCreatePrivateDataSlotEXT-device-parameter",
26373          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
26374        },
26375        {
26376          "vuid": "VUID-vkCreatePrivateDataSlotEXT-pCreateInfo-parameter",
26377          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPrivateDataSlotCreateInfoEXT\">VkPrivateDataSlotCreateInfoEXT</a> structure"
26378        },
26379        {
26380          "vuid": "VUID-vkCreatePrivateDataSlotEXT-pAllocator-parameter",
26381          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
26382        },
26383        {
26384          "vuid": "VUID-vkCreatePrivateDataSlotEXT-pPrivateDataSlot-parameter",
26385          "text": " <code>pPrivateDataSlot</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPrivateDataSlotEXT\">VkPrivateDataSlotEXT</a> handle"
26386        }
26387      ]
26388    },
26389    "VkPrivateDataSlotCreateInfoEXT": {
26390      "(VK_EXT_private_data)": [
26391        {
26392          "vuid": "VUID-VkPrivateDataSlotCreateInfoEXT-sType-sType",
26393          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT</code>"
26394        },
26395        {
26396          "vuid": "VUID-VkPrivateDataSlotCreateInfoEXT-pNext-pNext",
26397          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
26398        },
26399        {
26400          "vuid": "VUID-VkPrivateDataSlotCreateInfoEXT-flags-zerobitmask",
26401          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
26402        }
26403      ]
26404    },
26405    "vkDestroyPrivateDataSlotEXT": {
26406      "(VK_EXT_private_data)": [
26407        {
26408          "vuid": "VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-04062",
26409          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>privateDataSlot</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
26410        },
26411        {
26412          "vuid": "VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-04063",
26413          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>privateDataSlot</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
26414        },
26415        {
26416          "vuid": "VUID-vkDestroyPrivateDataSlotEXT-device-parameter",
26417          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
26418        },
26419        {
26420          "vuid": "VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-parameter",
26421          "text": " If <code>privateDataSlot</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>privateDataSlot</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPrivateDataSlotEXT\">VkPrivateDataSlotEXT</a> handle"
26422        },
26423        {
26424          "vuid": "VUID-vkDestroyPrivateDataSlotEXT-pAllocator-parameter",
26425          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
26426        },
26427        {
26428          "vuid": "VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-parent",
26429          "text": " If <code>privateDataSlot</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
26430        }
26431      ]
26432    },
26433    "vkSetPrivateDataEXT": {
26434      "(VK_EXT_private_data)": [
26435        {
26436          "vuid": "VUID-vkSetPrivateDataEXT-objectHandle-04016",
26437          "text": " <code>objectHandle</code> <strong class=\"purple\">must</strong> be <code>device</code> or a child of <code>device</code>"
26438        },
26439        {
26440          "vuid": "VUID-vkSetPrivateDataEXT-objectHandle-04017",
26441          "text": " <code>objectHandle</code> <strong class=\"purple\">must</strong> be a valid handle to an object of type <code>objectType</code>"
26442        },
26443        {
26444          "vuid": "VUID-vkSetPrivateDataEXT-device-parameter",
26445          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
26446        },
26447        {
26448          "vuid": "VUID-vkSetPrivateDataEXT-objectType-parameter",
26449          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value"
26450        },
26451        {
26452          "vuid": "VUID-vkSetPrivateDataEXT-privateDataSlot-parameter",
26453          "text": " <code>privateDataSlot</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPrivateDataSlotEXT\">VkPrivateDataSlotEXT</a> handle"
26454        },
26455        {
26456          "vuid": "VUID-vkSetPrivateDataEXT-privateDataSlot-parent",
26457          "text": " <code>privateDataSlot</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
26458        }
26459      ]
26460    },
26461    "vkGetPrivateDataEXT": {
26462      "(VK_EXT_private_data)": [
26463        {
26464          "vuid": "VUID-vkGetPrivateDataEXT-objectType-04018",
26465          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be <a href=\"#VkDevice\">VkDevice</a> or an object type whose parent is <a href=\"#VkDevice\">VkDevice</a>"
26466        },
26467        {
26468          "vuid": "VUID-vkGetPrivateDataEXT-device-parameter",
26469          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
26470        },
26471        {
26472          "vuid": "VUID-vkGetPrivateDataEXT-objectType-parameter",
26473          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value"
26474        },
26475        {
26476          "vuid": "VUID-vkGetPrivateDataEXT-privateDataSlot-parameter",
26477          "text": " <code>privateDataSlot</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPrivateDataSlotEXT\">VkPrivateDataSlotEXT</a> handle"
26478        },
26479        {
26480          "vuid": "VUID-vkGetPrivateDataEXT-pData-parameter",
26481          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint64_t</code> value"
26482        },
26483        {
26484          "vuid": "VUID-vkGetPrivateDataEXT-privateDataSlot-parent",
26485          "text": " <code>privateDataSlot</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
26486        }
26487      ]
26488    },
26489    "vkCmdTraceRaysNV": {
26490      "core": [
26491        {
26492          "vuid": "VUID-vkCmdTraceRaysNV-None-02690",
26493          "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>"
26494        },
26495        {
26496          "vuid": "VUID-vkCmdTraceRaysNV-None-02691",
26497          "text": " If a <code>VkImageView</code> is accessed using atomic operations 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_STORAGE_IMAGE_ATOMIC_BIT</code>"
26498        },
26499        {
26500          "vuid": "VUID-vkCmdTraceRaysNV-None-02697",
26501          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, 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>"
26502        },
26503        {
26504          "vuid": "VUID-vkCmdTraceRaysNV-None-02698",
26505          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, 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>"
26506        },
26507        {
26508          "vuid": "VUID-vkCmdTraceRaysNV-None-02699",
26509          "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 <code>VkPipeline</code> bound to the pipeline bind point used by this command"
26510        },
26511        {
26512          "vuid": "VUID-vkCmdTraceRaysNV-None-02700",
26513          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
26514        },
26515        {
26516          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02701",
26517          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
26518        },
26519        {
26520          "vuid": "VUID-vkCmdTraceRaysNV-None-02859",
26521          "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound"
26522        },
26523        {
26524          "vuid": "VUID-vkCmdTraceRaysNV-None-02702",
26525          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
26526        },
26527        {
26528          "vuid": "VUID-vkCmdTraceRaysNV-None-02703",
26529          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
26530        },
26531        {
26532          "vuid": "VUID-vkCmdTraceRaysNV-None-02704",
26533          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
26534        },
26535        {
26536          "vuid": "VUID-vkCmdTraceRaysNV-None-02705",
26537          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
26538        },
26539        {
26540          "vuid": "VUID-vkCmdTraceRaysNV-None-02706",
26541          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
26542        },
26543        {
26544          "vuid": "VUID-vkCmdTraceRaysNV-None-04115",
26545          "text": " If a <code>VkImageView</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format."
26546        },
26547        {
26548          "vuid": "VUID-vkCmdTraceRaysNV-None-03429",
26549          "text": " Any shader group handle referenced by this call <strong class=\"purple\">must</strong> have been queried from the currently bound ray tracing shader pipeline"
26550        },
26551        {
26552          "vuid": "VUID-vkCmdTraceRaysNV-maxRecursionDepth-03430",
26553          "text": " This command <strong class=\"purple\">must</strong> not cause a shader call instruction to be executed from a shader invocation with a <a href=\"#ray-tracing-recursion-depth\">recursion depth</a> greater than the value of <code>maxRecursionDepth</code> used to create the bound ray tracing pipeline"
26554        },
26555        {
26556          "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-04042",
26557          "text": " If <code>raygenShaderBindingTableBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
26558        },
26559        {
26560          "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02455",
26561          "text": " <code>raygenShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>raygenShaderBindingTableBuffer</code>"
26562        },
26563        {
26564          "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02456",
26565          "text": " <code>raygenShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>"
26566        },
26567        {
26568          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-04043",
26569          "text": " If <code>missShaderBindingTableBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
26570        },
26571        {
26572          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02457",
26573          "text": " <code>missShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>missShaderBindingTableBuffer</code>"
26574        },
26575        {
26576          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02458",
26577          "text": " <code>missShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>"
26578        },
26579        {
26580          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-04044",
26581          "text": " If <code>hitShaderBindingTableBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
26582        },
26583        {
26584          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02459",
26585          "text": " <code>hitShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>hitShaderBindingTableBuffer</code>"
26586        },
26587        {
26588          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02460",
26589          "text": " <code>hitShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>"
26590        },
26591        {
26592          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-04045",
26593          "text": " If <code>callableShaderBindingTableBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
26594        },
26595        {
26596          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02461",
26597          "text": " <code>callableShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>callableShaderBindingTableBuffer</code>"
26598        },
26599        {
26600          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02462",
26601          "text": " <code>callableShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>"
26602        },
26603        {
26604          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingStride-02463",
26605          "text": " <code>missShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>"
26606        },
26607        {
26608          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02464",
26609          "text": " <code>hitShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>"
26610        },
26611        {
26612          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02465",
26613          "text": " <code>callableShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>"
26614        },
26615        {
26616          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingStride-02466",
26617          "text": " <code>missShaderBindingStride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>"
26618        },
26619        {
26620          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02467",
26621          "text": " <code>hitShaderBindingStride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>"
26622        },
26623        {
26624          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02468",
26625          "text": " <code>callableShaderBindingStride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>"
26626        },
26627        {
26628          "vuid": "VUID-vkCmdTraceRaysNV-width-02469",
26629          "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
26630        },
26631        {
26632          "vuid": "VUID-vkCmdTraceRaysNV-height-02470",
26633          "text": " <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
26634        },
26635        {
26636          "vuid": "VUID-vkCmdTraceRaysNV-depth-02471",
26637          "text": " <code>depth</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
26638        }
26639      ],
26640      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
26641        {
26642          "vuid": "VUID-vkCmdTraceRaysNV-None-02692",
26643          "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>"
26644        }
26645      ],
26646      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
26647        {
26648          "vuid": "VUID-vkCmdTraceRaysNV-None-02693",
26649          "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>"
26650        }
26651      ],
26652      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
26653        {
26654          "vuid": "VUID-vkCmdTraceRaysNV-filterCubic-02694",
26655          "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>"
26656        },
26657        {
26658          "vuid": "VUID-vkCmdTraceRaysNV-filterCubicMinmax-02695",
26659          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
26660        }
26661      ],
26662      "(VK_NV_corner_sampled_image)": [
26663        {
26664          "vuid": "VUID-vkCmdTraceRaysNV-flags-02696",
26665          "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>"
26666        }
26667      ],
26668      "(VK_VERSION_1_1)": [
26669        {
26670          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02707",
26671          "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource"
26672        },
26673        {
26674          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02712",
26675          "text": " If <code>commandBuffer</code> is a protected command buffer, any resource written to by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be an unprotected resource"
26676        },
26677        {
26678          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02713",
26679          "text": " If <code>commandBuffer</code> is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the <code>VkPipeline</code> object bound to the pipeline bind point <strong class=\"purple\">must</strong> not write to any resource"
26680        }
26681      ],
26682      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
26683        {
26684          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-parameter",
26685          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
26686        },
26687        {
26688          "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-parameter",
26689          "text": " <code>raygenShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
26690        },
26691        {
26692          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-parameter",
26693          "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 <a href=\"#VkBuffer\">VkBuffer</a> handle"
26694        },
26695        {
26696          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-parameter",
26697          "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 <a href=\"#VkBuffer\">VkBuffer</a> handle"
26698        },
26699        {
26700          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-parameter",
26701          "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 <a href=\"#VkBuffer\">VkBuffer</a> handle"
26702        },
26703        {
26704          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-recording",
26705          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
26706        },
26707        {
26708          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-cmdpool",
26709          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
26710        },
26711        {
26712          "vuid": "VUID-vkCmdTraceRaysNV-renderpass",
26713          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
26714        },
26715        {
26716          "vuid": "VUID-vkCmdTraceRaysNV-commonparent",
26717          "text": " Each of <code>callableShaderBindingTableBuffer</code>, <code>commandBuffer</code>, <code>hitShaderBindingTableBuffer</code>, <code>missShaderBindingTableBuffer</code>, and <code>raygenShaderBindingTableBuffer</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
26718        }
26719      ]
26720    },
26721    "vkCmdTraceRaysKHR": {
26722      "core": [
26723        {
26724          "vuid": "VUID-vkCmdTraceRaysKHR-None-02690",
26725          "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>"
26726        },
26727        {
26728          "vuid": "VUID-vkCmdTraceRaysKHR-None-02691",
26729          "text": " If a <code>VkImageView</code> is accessed using atomic operations 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_STORAGE_IMAGE_ATOMIC_BIT</code>"
26730        },
26731        {
26732          "vuid": "VUID-vkCmdTraceRaysKHR-None-02697",
26733          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, 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>"
26734        },
26735        {
26736          "vuid": "VUID-vkCmdTraceRaysKHR-None-02698",
26737          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, 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>"
26738        },
26739        {
26740          "vuid": "VUID-vkCmdTraceRaysKHR-None-02699",
26741          "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 <code>VkPipeline</code> bound to the pipeline bind point used by this command"
26742        },
26743        {
26744          "vuid": "VUID-vkCmdTraceRaysKHR-None-02700",
26745          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
26746        },
26747        {
26748          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-02701",
26749          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
26750        },
26751        {
26752          "vuid": "VUID-vkCmdTraceRaysKHR-None-02859",
26753          "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound"
26754        },
26755        {
26756          "vuid": "VUID-vkCmdTraceRaysKHR-None-02702",
26757          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
26758        },
26759        {
26760          "vuid": "VUID-vkCmdTraceRaysKHR-None-02703",
26761          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
26762        },
26763        {
26764          "vuid": "VUID-vkCmdTraceRaysKHR-None-02704",
26765          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
26766        },
26767        {
26768          "vuid": "VUID-vkCmdTraceRaysKHR-None-02705",
26769          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
26770        },
26771        {
26772          "vuid": "VUID-vkCmdTraceRaysKHR-None-02706",
26773          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
26774        },
26775        {
26776          "vuid": "VUID-vkCmdTraceRaysKHR-None-04115",
26777          "text": " If a <code>VkImageView</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format."
26778        },
26779        {
26780          "vuid": "VUID-vkCmdTraceRaysKHR-None-03429",
26781          "text": " Any shader group handle referenced by this call <strong class=\"purple\">must</strong> have been queried from the currently bound ray tracing shader pipeline"
26782        },
26783        {
26784          "vuid": "VUID-vkCmdTraceRaysKHR-maxRecursionDepth-03430",
26785          "text": " This command <strong class=\"purple\">must</strong> not cause a shader call instruction to be executed from a shader invocation with a <a href=\"#ray-tracing-recursion-depth\">recursion depth</a> greater than the value of <code>maxRecursionDepth</code> used to create the bound ray tracing pipeline"
26786        },
26787        {
26788          "vuid": "VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-04019",
26789          "text": " If <code>pRayGenShaderBindingTable-&gt;buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
26790        },
26791        {
26792          "vuid": "VUID-vkCmdTraceRaysKHR-offset-04020",
26793          "text": " The <code>offset</code> member of <code>pRayGenShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than the size of the <code>pRayGenShaderBindingTable-&gt;buffer</code>"
26794        },
26795        {
26796          "vuid": "VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-04021",
26797          "text": " <code>pRayGenShaderBindingTable-&gt;offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>"
26798        },
26799        {
26800          "vuid": "VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-04022",
26801          "text": " <span class=\"eq\"><code>pRayGenShaderBindingTable-&gt;offset</code> &#43; <code>pRayGenShaderBindingTable-&gt;size</code></span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>pRayGenShaderBindingTable-&gt;buffer</code>"
26802        },
26803        {
26804          "vuid": "VUID-vkCmdTraceRaysKHR-size-04023",
26805          "text": " The <code>size</code> member of <code>pRayGenShaderBindingTable</code> <strong class=\"purple\">must</strong> be equal to its <code>stride</code> member"
26806        },
26807        {
26808          "vuid": "VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-04024",
26809          "text": " If <code>pMissShaderBindingTable-&gt;buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
26810        },
26811        {
26812          "vuid": "VUID-vkCmdTraceRaysKHR-offset-04025",
26813          "text": " The <code>offset</code> member of <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than the size of <code>pMissShaderBindingTable-&gt;buffer</code>"
26814        },
26815        {
26816          "vuid": "VUID-vkCmdTraceRaysKHR-offset-04026",
26817          "text": " The <code>offset</code> member of <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>"
26818        },
26819        {
26820          "vuid": "VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-04027",
26821          "text": " <span class=\"eq\"><code>pMissShaderBindingTable-&gt;offset</code> &#43; <code>pMissShaderBindingTable-&gt;size</code></span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>pMissShaderBindingTable-&gt;buffer</code>"
26822        },
26823        {
26824          "vuid": "VUID-vkCmdTraceRaysKHR-stride-04028",
26825          "text": " The <code>stride</code> member of <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupHandleSize</code>"
26826        },
26827        {
26828          "vuid": "VUID-vkCmdTraceRaysKHR-stride-04029",
26829          "text": " The <code>stride</code> member of <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>maxShaderGroupStride</code>"
26830        },
26831        {
26832          "vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-04030",
26833          "text": " If <code>pHitShaderBindingTable-&gt;buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
26834        },
26835        {
26836          "vuid": "VUID-vkCmdTraceRaysKHR-offset-04031",
26837          "text": " The <code>offset</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than the size of <code>pHitShaderBindingTable-&gt;buffer</code>"
26838        },
26839        {
26840          "vuid": "VUID-vkCmdTraceRaysKHR-offset-04032",
26841          "text": " The <code>offset</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>"
26842        },
26843        {
26844          "vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-04033",
26845          "text": " <span class=\"eq\"><code>pHitShaderBindingTable-&gt;offset</code> &#43; <code>pHitShaderBindingTable-&gt;size</code></span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>pHitShaderBindingTable-&gt;buffer</code>"
26846        },
26847        {
26848          "vuid": "VUID-vkCmdTraceRaysKHR-stride-04034",
26849          "text": " The <code>stride</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupHandleSize</code>"
26850        },
26851        {
26852          "vuid": "VUID-vkCmdTraceRaysKHR-stride-04035",
26853          "text": " The <code>stride</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>maxShaderGroupStride</code>"
26854        },
26855        {
26856          "vuid": "VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-04036",
26857          "text": " If <code>pCallableShaderBindingTable-&gt;buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
26858        },
26859        {
26860          "vuid": "VUID-vkCmdTraceRaysKHR-offset-04037",
26861          "text": " The <code>offset</code> member of <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than the size of <code>pCallableShaderBindingTable-&gt;buffer</code>"
26862        },
26863        {
26864          "vuid": "VUID-vkCmdTraceRaysKHR-offset-04038",
26865          "text": " The <code>offset</code> member of <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>"
26866        },
26867        {
26868          "vuid": "VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-04039",
26869          "text": " <span class=\"eq\"><code>pCallableShaderBindingTable-&gt;offset</code> &#43; <code>pCallableShaderBindingTable-&gt;size</code></span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>pCallableShaderBindingTable-&gt;buffer</code>"
26870        },
26871        {
26872          "vuid": "VUID-vkCmdTraceRaysKHR-stride-04040",
26873          "text": " The <code>stride</code> member of <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupHandleSize</code>"
26874        },
26875        {
26876          "vuid": "VUID-vkCmdTraceRaysKHR-stride-04041",
26877          "text": " The <code>stride</code> member of <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>maxShaderGroupStride</code>"
26878        },
26879        {
26880          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03508",
26881          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>, the <code>buffer</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
26882        },
26883        {
26884          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03509",
26885          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, the <code>buffer</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
26886        },
26887        {
26888          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03510",
26889          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>, the <code>buffer</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
26890        },
26891        {
26892          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03511",
26893          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code>, the shader group handle identified by <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> contain a valid miss shader"
26894        },
26895        {
26896          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03512",
26897          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>, entries in <code>pHitShaderBindingTable</code> accessed as a result of this command in order to execute an any hit shader <strong class=\"purple\">must</strong> not be set to zero"
26898        },
26899        {
26900          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03513",
26901          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, entries in <code>pHitShaderBindingTable</code> accessed as a result of this command in order to execute a closest hit shader <strong class=\"purple\">must</strong> not be set to zero"
26902        },
26903        {
26904          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03514",
26905          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>, entries in <code>pHitShaderBindingTable</code> accessed as a result of this command in order to execute an intersection shader <strong class=\"purple\">must</strong> not be set to zero"
26906        },
26907        {
26908          "vuid": "VUID-vkCmdTraceRaysKHR-width-03505",
26909          "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
26910        },
26911        {
26912          "vuid": "VUID-vkCmdTraceRaysKHR-height-03506",
26913          "text": " <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
26914        },
26915        {
26916          "vuid": "VUID-vkCmdTraceRaysKHR-depth-03507",
26917          "text": " <code>depth</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
26918        }
26919      ],
26920      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
26921        {
26922          "vuid": "VUID-vkCmdTraceRaysKHR-None-02692",
26923          "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>"
26924        }
26925      ],
26926      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
26927        {
26928          "vuid": "VUID-vkCmdTraceRaysKHR-None-02693",
26929          "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>"
26930        }
26931      ],
26932      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
26933        {
26934          "vuid": "VUID-vkCmdTraceRaysKHR-filterCubic-02694",
26935          "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>"
26936        },
26937        {
26938          "vuid": "VUID-vkCmdTraceRaysKHR-filterCubicMinmax-02695",
26939          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
26940        }
26941      ],
26942      "(VK_NV_corner_sampled_image)": [
26943        {
26944          "vuid": "VUID-vkCmdTraceRaysKHR-flags-02696",
26945          "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>"
26946        }
26947      ],
26948      "(VK_VERSION_1_1)": [
26949        {
26950          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-02707",
26951          "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource"
26952        },
26953        {
26954          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-02712",
26955          "text": " If <code>commandBuffer</code> is a protected command buffer, any resource written to by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be an unprotected resource"
26956        },
26957        {
26958          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-02713",
26959          "text": " If <code>commandBuffer</code> is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the <code>VkPipeline</code> object bound to the pipeline bind point <strong class=\"purple\">must</strong> not write to any resource"
26960        }
26961      ],
26962      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
26963        {
26964          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-parameter",
26965          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
26966        },
26967        {
26968          "vuid": "VUID-vkCmdTraceRaysKHR-pRaygenShaderBindingTable-parameter",
26969          "text": " <code>pRaygenShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedBufferRegionKHR\">VkStridedBufferRegionKHR</a> structure"
26970        },
26971        {
26972          "vuid": "VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-parameter",
26973          "text": " <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedBufferRegionKHR\">VkStridedBufferRegionKHR</a> structure"
26974        },
26975        {
26976          "vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-parameter",
26977          "text": " <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedBufferRegionKHR\">VkStridedBufferRegionKHR</a> structure"
26978        },
26979        {
26980          "vuid": "VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-parameter",
26981          "text": " <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedBufferRegionKHR\">VkStridedBufferRegionKHR</a> structure"
26982        },
26983        {
26984          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-recording",
26985          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
26986        },
26987        {
26988          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-cmdpool",
26989          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
26990        },
26991        {
26992          "vuid": "VUID-vkCmdTraceRaysKHR-renderpass",
26993          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
26994        }
26995      ]
26996    },
26997    "VkStridedBufferRegionKHR": {
26998      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
26999        {
27000          "vuid": "VUID-VkStridedBufferRegionKHR-buffer-03515",
27001          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>size</code> plus <code>offset</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
27002        },
27003        {
27004          "vuid": "VUID-VkStridedBufferRegionKHR-buffer-03516",
27005          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>stride</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
27006        },
27007        {
27008          "vuid": "VUID-VkStridedBufferRegionKHR-buffer-parameter",
27009          "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 <a href=\"#VkBuffer\">VkBuffer</a> handle"
27010        }
27011      ]
27012    },
27013    "vkCmdTraceRaysIndirectKHR": {
27014      "core": [
27015        {
27016          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02690",
27017          "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>"
27018        },
27019        {
27020          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02691",
27021          "text": " If a <code>VkImageView</code> is accessed using atomic operations 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_STORAGE_IMAGE_ATOMIC_BIT</code>"
27022        },
27023        {
27024          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02697",
27025          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, 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>"
27026        },
27027        {
27028          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02698",
27029          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, 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>"
27030        },
27031        {
27032          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02699",
27033          "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 <code>VkPipeline</code> bound to the pipeline bind point used by this command"
27034        },
27035        {
27036          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02700",
27037          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
27038        },
27039        {
27040          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02701",
27041          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
27042        },
27043        {
27044          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02859",
27045          "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound"
27046        },
27047        {
27048          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02702",
27049          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
27050        },
27051        {
27052          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02703",
27053          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
27054        },
27055        {
27056          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02704",
27057          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <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"
27058        },
27059        {
27060          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02705",
27061          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
27062        },
27063        {
27064          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02706",
27065          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
27066        },
27067        {
27068          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-04115",
27069          "text": " If a <code>VkImageView</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format."
27070        },
27071        {
27072          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-03429",
27073          "text": " Any shader group handle referenced by this call <strong class=\"purple\">must</strong> have been queried from the currently bound ray tracing shader pipeline"
27074        },
27075        {
27076          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-maxRecursionDepth-03430",
27077          "text": " This command <strong class=\"purple\">must</strong> not cause a shader call instruction to be executed from a shader invocation with a <a href=\"#ray-tracing-recursion-depth\">recursion depth</a> greater than the value of <code>maxRecursionDepth</code> used to create the bound ray tracing pipeline"
27078        },
27079        {
27080          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-04019",
27081          "text": " If <code>pRayGenShaderBindingTable-&gt;buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
27082        },
27083        {
27084          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-offset-04020",
27085          "text": " The <code>offset</code> member of <code>pRayGenShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than the size of the <code>pRayGenShaderBindingTable-&gt;buffer</code>"
27086        },
27087        {
27088          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-04021",
27089          "text": " <code>pRayGenShaderBindingTable-&gt;offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>"
27090        },
27091        {
27092          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-04022",
27093          "text": " <span class=\"eq\"><code>pRayGenShaderBindingTable-&gt;offset</code> &#43; <code>pRayGenShaderBindingTable-&gt;size</code></span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>pRayGenShaderBindingTable-&gt;buffer</code>"
27094        },
27095        {
27096          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-size-04023",
27097          "text": " The <code>size</code> member of <code>pRayGenShaderBindingTable</code> <strong class=\"purple\">must</strong> be equal to its <code>stride</code> member"
27098        },
27099        {
27100          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-04024",
27101          "text": " If <code>pMissShaderBindingTable-&gt;buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
27102        },
27103        {
27104          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-offset-04025",
27105          "text": " The <code>offset</code> member of <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than the size of <code>pMissShaderBindingTable-&gt;buffer</code>"
27106        },
27107        {
27108          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-offset-04026",
27109          "text": " The <code>offset</code> member of <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>"
27110        },
27111        {
27112          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-04027",
27113          "text": " <span class=\"eq\"><code>pMissShaderBindingTable-&gt;offset</code> &#43; <code>pMissShaderBindingTable-&gt;size</code></span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>pMissShaderBindingTable-&gt;buffer</code>"
27114        },
27115        {
27116          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04028",
27117          "text": " The <code>stride</code> member of <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupHandleSize</code>"
27118        },
27119        {
27120          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04029",
27121          "text": " The <code>stride</code> member of <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>maxShaderGroupStride</code>"
27122        },
27123        {
27124          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-04030",
27125          "text": " If <code>pHitShaderBindingTable-&gt;buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
27126        },
27127        {
27128          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-offset-04031",
27129          "text": " The <code>offset</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than the size of <code>pHitShaderBindingTable-&gt;buffer</code>"
27130        },
27131        {
27132          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-offset-04032",
27133          "text": " The <code>offset</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>"
27134        },
27135        {
27136          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-04033",
27137          "text": " <span class=\"eq\"><code>pHitShaderBindingTable-&gt;offset</code> &#43; <code>pHitShaderBindingTable-&gt;size</code></span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>pHitShaderBindingTable-&gt;buffer</code>"
27138        },
27139        {
27140          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04034",
27141          "text": " The <code>stride</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupHandleSize</code>"
27142        },
27143        {
27144          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04035",
27145          "text": " The <code>stride</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>maxShaderGroupStride</code>"
27146        },
27147        {
27148          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-04036",
27149          "text": " If <code>pCallableShaderBindingTable-&gt;buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
27150        },
27151        {
27152          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-offset-04037",
27153          "text": " The <code>offset</code> member of <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than the size of <code>pCallableShaderBindingTable-&gt;buffer</code>"
27154        },
27155        {
27156          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-offset-04038",
27157          "text": " The <code>offset</code> member of <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>"
27158        },
27159        {
27160          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-04039",
27161          "text": " <span class=\"eq\"><code>pCallableShaderBindingTable-&gt;offset</code> &#43; <code>pCallableShaderBindingTable-&gt;size</code></span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>pCallableShaderBindingTable-&gt;buffer</code>"
27162        },
27163        {
27164          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04040",
27165          "text": " The <code>stride</code> member of <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupHandleSize</code>"
27166        },
27167        {
27168          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04041",
27169          "text": " The <code>stride</code> member of <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>maxShaderGroupStride</code>"
27170        },
27171        {
27172          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03508",
27173          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>, the <code>buffer</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
27174        },
27175        {
27176          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03509",
27177          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, the <code>buffer</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
27178        },
27179        {
27180          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03510",
27181          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>, the <code>buffer</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
27182        },
27183        {
27184          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03511",
27185          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code>, the shader group handle identified by <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> contain a valid miss shader"
27186        },
27187        {
27188          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03512",
27189          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>, entries in <code>pHitShaderBindingTable</code> accessed as a result of this command in order to execute an any hit shader <strong class=\"purple\">must</strong> not be set to zero"
27190        },
27191        {
27192          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03513",
27193          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, entries in <code>pHitShaderBindingTable</code> accessed as a result of this command in order to execute a closest hit shader <strong class=\"purple\">must</strong> not be set to zero"
27194        },
27195        {
27196          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03514",
27197          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>, entries in <code>pHitShaderBindingTable</code> accessed as a result of this command in order to execute an intersection shader <strong class=\"purple\">must</strong> not be set to zero"
27198        },
27199        {
27200          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-buffer-02708",
27201          "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"
27202        },
27203        {
27204          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-buffer-02709",
27205          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
27206        },
27207        {
27208          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-offset-02710",
27209          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
27210        },
27211        {
27212          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-offset-03517",
27213          "text": " <span class=\"eq\">(<code>offset</code> &#43; <code>sizeof</code>(<code>VkTraceRaysIndirectCommandKHR</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
27214        },
27215        {
27216          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-rayTracingIndirectTraceRays-03518",
27217          "text": " the <a href=\"#features-raytracing-indirecttraceray\"><code>VkPhysicalDeviceRayTracingFeaturesKHR</code>::<code>rayTracingIndirectTraceRays</code></a> feature <strong class=\"purple\">must</strong> be enabled"
27218        }
27219      ],
27220      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
27221        {
27222          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02692",
27223          "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>"
27224        }
27225      ],
27226      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
27227        {
27228          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02693",
27229          "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>"
27230        }
27231      ],
27232      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
27233        {
27234          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-filterCubic-02694",
27235          "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>"
27236        },
27237        {
27238          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-filterCubicMinmax-02695",
27239          "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
27240        }
27241      ],
27242      "(VK_NV_corner_sampled_image)": [
27243        {
27244          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-02696",
27245          "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>"
27246        }
27247      ],
27248      "(VK_VERSION_1_1)": [
27249        {
27250          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02707",
27251          "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource"
27252        },
27253        {
27254          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02711",
27255          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
27256        }
27257      ],
27258      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
27259        {
27260          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-parameter",
27261          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
27262        },
27263        {
27264          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pRaygenShaderBindingTable-parameter",
27265          "text": " <code>pRaygenShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedBufferRegionKHR\">VkStridedBufferRegionKHR</a> structure"
27266        },
27267        {
27268          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-parameter",
27269          "text": " <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedBufferRegionKHR\">VkStridedBufferRegionKHR</a> structure"
27270        },
27271        {
27272          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-parameter",
27273          "text": " <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedBufferRegionKHR\">VkStridedBufferRegionKHR</a> structure"
27274        },
27275        {
27276          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-parameter",
27277          "text": " <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedBufferRegionKHR\">VkStridedBufferRegionKHR</a> structure"
27278        },
27279        {
27280          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-buffer-parameter",
27281          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
27282        },
27283        {
27284          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-recording",
27285          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
27286        },
27287        {
27288          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-cmdpool",
27289          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
27290        },
27291        {
27292          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-renderpass",
27293          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
27294        },
27295        {
27296          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commonparent",
27297          "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
27298        }
27299      ]
27300    },
27301    "VkTraceRaysIndirectCommandKHR": {
27302      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
27303        {
27304          "vuid": "VUID-VkTraceRaysIndirectCommandKHR-width-03519",
27305          "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
27306        },
27307        {
27308          "vuid": "VUID-VkTraceRaysIndirectCommandKHR-height-03520",
27309          "text": " <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
27310        },
27311        {
27312          "vuid": "VUID-VkTraceRaysIndirectCommandKHR-depth-03521",
27313          "text": " <code>depth</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
27314        }
27315      ]
27316    },
27317    "vkCmdBuildAccelerationStructureNV": {
27318      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
27319        {
27320          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-geometryCount-02241",
27321          "text": " <code>geometryCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxGeometryCount</code>"
27322        },
27323        {
27324          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-dst-02488",
27325          "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"
27326        },
27327        {
27328          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02489",
27329          "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>"
27330        },
27331        {
27332          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02490",
27333          "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>"
27334        },
27335        {
27336          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02491",
27337          "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>"
27338        },
27339        {
27340          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02492",
27341          "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>"
27342        },
27343        {
27344          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-scratch-03522",
27345          "text": " <code>scratch</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_RAY_TRACING_BIT_NV</code> usage flag"
27346        },
27347        {
27348          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-instanceData-03523",
27349          "text": " If <code>instanceData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>instanceData</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_RAY_TRACING_BIT_NV</code> usage flag"
27350        },
27351        {
27352          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-03524",
27353          "text": " If <code>update</code> is <code>VK_TRUE</code>, then objects that were previously active <strong class=\"purple\">must</strong> not be made inactive as per <a href=\"#acceleration-structure-inactive-prims\">Inactive Primitives and Instances</a>"
27354        },
27355        {
27356          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-03525",
27357          "text": " If <code>update</code> is <code>VK_TRUE</code>, then objects that were previously inactive <strong class=\"purple\">must</strong> not be made active as per <a href=\"#acceleration-structure-inactive-prims\">Inactive Primitives and Instances</a>"
27358        },
27359        {
27360          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-03526",
27361          "text": " If <code>update</code> is <code>VK_TRUE</code>, the <code>src</code> and <code>dst</code> objects <strong class=\"purple\">must</strong> either be the same object or not have any <a href=\"#resources-memory-aliasing\">memory aliasing</a>"
27362        },
27363        {
27364          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-parameter",
27365          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
27366        },
27367        {
27368          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-pInfo-parameter",
27369          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a> structure"
27370        },
27371        {
27372          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-instanceData-parameter",
27373          "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 <a href=\"#VkBuffer\">VkBuffer</a> handle"
27374        },
27375        {
27376          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-dst-parameter",
27377          "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
27378        },
27379        {
27380          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-src-parameter",
27381          "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 <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
27382        },
27383        {
27384          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-scratch-parameter",
27385          "text": " <code>scratch</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
27386        },
27387        {
27388          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-recording",
27389          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
27390        },
27391        {
27392          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-cmdpool",
27393          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
27394        },
27395        {
27396          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-renderpass",
27397          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
27398        },
27399        {
27400          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commonparent",
27401          "text": " Each of <code>commandBuffer</code>, <code>dst</code>, <code>instanceData</code>, <code>scratch</code>, and <code>src</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
27402        }
27403      ]
27404    },
27405    "vkCmdBuildAccelerationStructureKHR": {
27406      "core": [
27407        {
27408          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-pOffsetInfos-03402",
27409          "text": " Each element of <code>ppOffsetInfos</code>[i] <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pInfos</code>[i].<code>geometryCount</code> <code>VkAccelerationStructureBuildOffsetInfoKHR</code> structures"
27410        },
27411        {
27412          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-pInfos-03403",
27413          "text": " Each <code>pInfos</code>[i].<code>srcAccelerationStructure</code> <strong class=\"purple\">must</strong> not refer to the same acceleration structure as any <code>pInfos</code>[i].<code>dstAccelerationStructure</code> that is provided to the same build command unless it is identical for an update"
27414        },
27415        {
27416          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-pInfos-03404",
27417          "text": " For each <code>pInfos</code>[i], <code>dstAccelerationStructure</code> <strong class=\"purple\">must</strong> have been created with compatible <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a> where <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>type</code> and <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>flags</code> are identical to <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a>::<code>type</code> and <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a>::<code>flags</code> respectively, <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a>::<code>geometryCount</code> for <code>dstAccelerationStructure</code> are greater than or equal to the build size, and each geometry in <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a>::<code>ppGeometries</code> for <code>dstAccelerationStructure</code> has greater than or equal to the number of vertices, indices, and AABBs, <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>transformData</code> is both 0 or both non-zero, and all other parameters are the same"
27418        },
27419        {
27420          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-pInfos-03405",
27421          "text": " For each <code>pInfos</code>[i], if <code>update</code> is <code>VK_TRUE</code>, then objects that were previously active for that acceleration structure <strong class=\"purple\">must</strong> not be made inactive as per <a href=\"#acceleration-structure-inactive-prims\">Inactive Primitives and Instances</a>"
27422        },
27423        {
27424          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-pInfos-03406",
27425          "text": " For each <code>pInfos</code>[i], if <code>update</code> is <code>VK_TRUE</code>, then objects that were previously inactive for that acceleration structure <strong class=\"purple\">must</strong> not be made active as per <a href=\"#acceleration-structure-inactive-prims\">Inactive Primitives and Instances</a>"
27426        },
27427        {
27428          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-None-03407",
27429          "text": " Any acceleration structure instance in any top level build in this command <strong class=\"purple\">must</strong> not reference any bottom level acceleration structure built by this command"
27430        },
27431        {
27432          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-pInfos-03408",
27433          "text": " There <strong class=\"purple\">must</strong> not be any <a href=\"#resources-memory-aliasing\">memory aliasing</a> between the scratch memories that are provided in all the <code>pInfos</code>[i].<code>scratchData</code> memories for the acceleration structure builds"
27434        },
27435        {
27436          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-None-03409",
27437          "text": " There <strong class=\"purple\">must</strong> not be any <a href=\"#resources-memory-aliasing\">memory aliasing</a> between memory bound to any top level, bottom level, or instance acceleration structure accessed by this command"
27438        },
27439        {
27440          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-update-03527",
27441          "text": " If <code>update</code> is <code>VK_FALSE</code>, all addresses between <code>pInfos</code>[i].<code>scratchData</code> and <code>pInfos</code>[i].<code>scratchData</code> + N - 1 <strong class=\"purple\">must</strong> be in the buffer device address range of the same buffer, where N is given by the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsKHR\">vkGetAccelerationStructureMemoryRequirementsKHR</a> with <a href=\"#VkAccelerationStructureMemoryRequirementsInfoKHR\">VkAccelerationStructureMemoryRequirementsInfoKHR</a>::<code>accelerationStructure</code> set to <code>pInfos</code>[i].<code>dstAccelerationStructure</code> and <a href=\"#VkAccelerationStructureMemoryRequirementsInfoKHR\">VkAccelerationStructureMemoryRequirementsInfoKHR</a>::<code>type</code> set to <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR</code>"
27442        },
27443        {
27444          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-update-03528",
27445          "text": " If <code>update</code> is <code>VK_TRUE</code>, all addresses between <code>pInfos</code>[i].<code>scratchData</code> and <code>pInfos</code>[i].<code>scratchData</code> + N - 1 <strong class=\"purple\">must</strong> be in the buffer device address range of the same buffer, where N is given by the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsKHR\">vkGetAccelerationStructureMemoryRequirementsKHR</a> with <a href=\"#VkAccelerationStructureMemoryRequirementsInfoKHR\">VkAccelerationStructureMemoryRequirementsInfoKHR</a>::<code>accelerationStructure</code> set to <code>pInfos</code>[i].<code>dstAccelerationStructure</code> and <a href=\"#VkAccelerationStructureMemoryRequirementsInfoKHR\">VkAccelerationStructureMemoryRequirementsInfoKHR</a>::<code>type</code> set to <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR</code>"
27446        },
27447        {
27448          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-pInfos-03529",
27449          "text": " The buffer from which the buffer device address <code>pInfos</code>[i].<code>scratchData</code> is queried <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR</code> usage flag"
27450        },
27451        {
27452          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-None-04046",
27453          "text": " All <a href=\"#VkDeviceOrHostAddressKHR\">VkDeviceOrHostAddressKHR</a> or <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> referenced by this command <strong class=\"purple\">must</strong> contain valid device addresses for a buffer bound to device memory. If the buffer is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single VkDeviceMemory object"
27454        },
27455        {
27456          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-None-03531",
27457          "text": " All <code>VkAccelerationStructureKHR</code> objects referenced by this command <strong class=\"purple\">must</strong> be bound to device memory"
27458        }
27459      ],
27460      "(VK_KHR_deferred_host_operations)": [
27461        {
27462          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-pNext-03532",
27463          "text": " The <a href=\"#VkDeferredOperationInfoKHR\">VkDeferredOperationInfoKHR</a> structure <strong class=\"purple\">must</strong> not be included in the <code>pNext</code> chain of any of the provided <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structures"
27464        }
27465      ],
27466      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
27467        {
27468          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-commandBuffer-parameter",
27469          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
27470        },
27471        {
27472          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-pInfos-parameter",
27473          "text": " <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> valid <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structures"
27474        },
27475        {
27476          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-ppOffsetInfos-parameter",
27477          "text": " <code>ppOffsetInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> <a href=\"#VkAccelerationStructureBuildOffsetInfoKHR\">VkAccelerationStructureBuildOffsetInfoKHR</a> structures"
27478        },
27479        {
27480          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-commandBuffer-recording",
27481          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
27482        },
27483        {
27484          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-commandBuffer-cmdpool",
27485          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
27486        },
27487        {
27488          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-renderpass",
27489          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
27490        },
27491        {
27492          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-infoCount-arraylength",
27493          "text": " <code>infoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
27494        }
27495      ]
27496    },
27497    "vkCmdBuildAccelerationStructureIndirectKHR": {
27498      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
27499        {
27500          "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-None-04047",
27501          "text": " All <a href=\"#VkDeviceOrHostAddressKHR\">VkDeviceOrHostAddressKHR</a> or <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> referenced by this command <strong class=\"purple\">must</strong> contain valid device addresses for a buffer bound to device memory. If the buffer is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single VkDeviceMemory object"
27502        },
27503        {
27504          "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-None-03534",
27505          "text": " All <code>VkAccelerationStructureKHR</code> objects referenced by this command <strong class=\"purple\">must</strong> be bound to device memory"
27506        },
27507        {
27508          "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-rayTracingIndirectAccelerationStructureBuild-03535",
27509          "text": " The <a href=\"#features-raytracing-indirectasbuild\"><code>VkPhysicalDeviceRayTracingFeaturesKHR</code>::<code>rayTracingIndirectAccelerationStructureBuild</code></a> feature <strong class=\"purple\">must</strong> be enabled"
27510        },
27511        {
27512          "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-commandBuffer-parameter",
27513          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
27514        },
27515        {
27516          "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-pInfo-parameter",
27517          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structure"
27518        },
27519        {
27520          "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-indirectBuffer-parameter",
27521          "text": " <code>indirectBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
27522        },
27523        {
27524          "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-commandBuffer-recording",
27525          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
27526        },
27527        {
27528          "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-commandBuffer-cmdpool",
27529          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
27530        },
27531        {
27532          "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-renderpass",
27533          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
27534        },
27535        {
27536          "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-commonparent",
27537          "text": " Both of <code>commandBuffer</code>, and <code>indirectBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
27538        }
27539      ],
27540      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)+(VK_KHR_deferred_host_operations)": [
27541        {
27542          "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-pNext-03536",
27543          "text": " The <a href=\"#VkDeferredOperationInfoKHR\">VkDeferredOperationInfoKHR</a> structure <strong class=\"purple\">must</strong> not be included in the <code>pNext</code> chain of any of the provided <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structures"
27544        }
27545      ]
27546    },
27547    "VkAccelerationStructureBuildGeometryInfoKHR": {
27548      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
27549        {
27550          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-update-03537",
27551          "text": " If <code>update</code> is <code>VK_TRUE</code>, <code>srcAccelerationStructure</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
27552        },
27553        {
27554          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-update-03538",
27555          "text": " If <code>update</code> is <code>VK_TRUE</code>, <code>srcAccelerationStructure</code> <strong class=\"purple\">must</strong> have been built before with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR</code> set in <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a>::<code>flags</code>"
27556        },
27557        {
27558          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-scratchData-03539",
27559          "text": " <code>scratchData</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR</code> usage flag"
27560        },
27561        {
27562          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-update-03540",
27563          "text": " If <code>update</code> is <code>VK_TRUE</code>, the <code>srcAccelerationStructure</code> and <code>dstAccelerationStructure</code> objects <strong class=\"purple\">must</strong> either be the same object or not have any <a href=\"#resources-memory-aliasing\">memory aliasing</a>"
27564        },
27565        {
27566          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-sType-sType",
27567          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR</code>"
27568        },
27569        {
27570          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-pNext-pNext",
27571          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeferredOperationInfoKHR\">VkDeferredOperationInfoKHR</a>"
27572        },
27573        {
27574          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-sType-unique",
27575          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
27576        },
27577        {
27578          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-parameter",
27579          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureTypeKHR\">VkAccelerationStructureTypeKHR</a> value"
27580        },
27581        {
27582          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-parameter",
27583          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBuildAccelerationStructureFlagBitsKHR\">VkBuildAccelerationStructureFlagBitsKHR</a> values"
27584        },
27585        {
27586          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-srcAccelerationStructure-parameter",
27587          "text": " If <code>srcAccelerationStructure</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>srcAccelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
27588        },
27589        {
27590          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-dstAccelerationStructure-parameter",
27591          "text": " <code>dstAccelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
27592        },
27593        {
27594          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-scratchData-parameter",
27595          "text": " <code>scratchData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressKHR\">VkDeviceOrHostAddressKHR</a> union"
27596        },
27597        {
27598          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-commonparent",
27599          "text": " Both of <code>dstAccelerationStructure</code>, and <code>srcAccelerationStructure</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
27600        }
27601      ]
27602    },
27603    "VkAccelerationStructureGeometryKHR": {
27604      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
27605        {
27606          "vuid": "VUID-VkAccelerationStructureGeometryKHR-geometryType-03541",
27607          "text": " If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, the <code>aabbs</code> member of <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureGeometryAabbsDataKHR\">VkAccelerationStructureGeometryAabbsDataKHR</a> structure"
27608        },
27609        {
27610          "vuid": "VUID-VkAccelerationStructureGeometryKHR-geometryType-03542",
27611          "text": " If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, the <code>triangles</code> member of <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a> structure"
27612        },
27613        {
27614          "vuid": "VUID-VkAccelerationStructureGeometryKHR-geometryType-03543",
27615          "text": " If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, the <code>instances</code> member of <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureGeometryInstancesDataKHR\">VkAccelerationStructureGeometryInstancesDataKHR</a> structure"
27616        },
27617        {
27618          "vuid": "VUID-VkAccelerationStructureGeometryKHR-sType-sType",
27619          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR</code>"
27620        },
27621        {
27622          "vuid": "VUID-VkAccelerationStructureGeometryKHR-pNext-pNext",
27623          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
27624        },
27625        {
27626          "vuid": "VUID-VkAccelerationStructureGeometryKHR-geometryType-parameter",
27627          "text": " <code>geometryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryTypeKHR\">VkGeometryTypeKHR</a> value"
27628        },
27629        {
27630          "vuid": "VUID-VkAccelerationStructureGeometryKHR-triangles-parameter",
27631          "text": " If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, the <code>triangles</code> member of <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a> structure"
27632        },
27633        {
27634          "vuid": "VUID-VkAccelerationStructureGeometryKHR-aabbs-parameter",
27635          "text": " If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, the <code>aabbs</code> member of <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureGeometryAabbsDataKHR\">VkAccelerationStructureGeometryAabbsDataKHR</a> structure"
27636        },
27637        {
27638          "vuid": "VUID-VkAccelerationStructureGeometryKHR-instances-parameter",
27639          "text": " If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, the <code>instances</code> member of <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureGeometryInstancesDataKHR\">VkAccelerationStructureGeometryInstancesDataKHR</a> structure"
27640        },
27641        {
27642          "vuid": "VUID-VkAccelerationStructureGeometryKHR-flags-parameter",
27643          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkGeometryFlagBitsKHR\">VkGeometryFlagBitsKHR</a> values"
27644        }
27645      ]
27646    },
27647    "VkAccelerationStructureGeometryTrianglesDataKHR": {
27648      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
27649        {
27650          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-sType-sType",
27651          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR</code>"
27652        },
27653        {
27654          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-pNext-pNext",
27655          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
27656        },
27657        {
27658          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexFormat-parameter",
27659          "text": " <code>vertexFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
27660        },
27661        {
27662          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexData-parameter",
27663          "text": " <code>vertexData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> union"
27664        },
27665        {
27666          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexType-parameter",
27667          "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value"
27668        },
27669        {
27670          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexData-parameter",
27671          "text": " If <code>indexData</code> is not <code>0</code>, <code>indexData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> union"
27672        },
27673        {
27674          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-transformData-parameter",
27675          "text": " If <code>transformData</code> is not <code>0</code>, <code>transformData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> union"
27676        }
27677      ]
27678    },
27679    "VkAccelerationStructureGeometryAabbsDataKHR": {
27680      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
27681        {
27682          "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-data-03544",
27683          "text": " <code>data</code> <strong class=\"purple\">must</strong> be aligned to <code>8</code> bytes"
27684        },
27685        {
27686          "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-stride-03545",
27687          "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>8</code>"
27688        },
27689        {
27690          "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-sType-sType",
27691          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR</code>"
27692        },
27693        {
27694          "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-pNext-pNext",
27695          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
27696        },
27697        {
27698          "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-data-parameter",
27699          "text": " <code>data</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> union"
27700        }
27701      ]
27702    },
27703    "VkAabbPositionsKHR": {
27704      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
27705        {
27706          "vuid": "VUID-VkAabbPositionsKHR-minX-03546",
27707          "text": " <code>minX</code> <strong class=\"purple\">must</strong> be less than or equal to <code>maxX</code>"
27708        },
27709        {
27710          "vuid": "VUID-VkAabbPositionsKHR-minY-03547",
27711          "text": " <code>minY</code> <strong class=\"purple\">must</strong> be less than or equal to <code>maxY</code>"
27712        },
27713        {
27714          "vuid": "VUID-VkAabbPositionsKHR-minZ-03548",
27715          "text": " <code>minZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>maxZ</code>"
27716        }
27717      ]
27718    },
27719    "VkAccelerationStructureGeometryInstancesDataKHR": {
27720      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
27721        {
27722          "vuid": "VUID-VkAccelerationStructureGeometryInstancesDataKHR-data-03549",
27723          "text": " <code>data</code> <strong class=\"purple\">must</strong> be aligned to <code>16</code> bytes"
27724        },
27725        {
27726          "vuid": "VUID-VkAccelerationStructureGeometryInstancesDataKHR-arrayOfPointers-03550",
27727          "text": " If <code>arrayOfPointers</code> is true, each pointer <strong class=\"purple\">must</strong> be aligned to <code>16</code> bytes"
27728        },
27729        {
27730          "vuid": "VUID-VkAccelerationStructureGeometryInstancesDataKHR-sType-sType",
27731          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR</code>"
27732        },
27733        {
27734          "vuid": "VUID-VkAccelerationStructureGeometryInstancesDataKHR-pNext-pNext",
27735          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
27736        },
27737        {
27738          "vuid": "VUID-VkAccelerationStructureGeometryInstancesDataKHR-data-parameter",
27739          "text": " <code>data</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> union"
27740        }
27741      ]
27742    },
27743    "VkAccelerationStructureInstanceKHR": {
27744      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
27745        {
27746          "vuid": "VUID-VkAccelerationStructureInstanceKHR-flags-parameter",
27747          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkGeometryInstanceFlagBitsKHR\">VkGeometryInstanceFlagBitsKHR</a> values"
27748        }
27749      ]
27750    },
27751    "VkAccelerationStructureBuildOffsetInfoKHR": {
27752      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
27753        {
27754          "vuid": "VUID-VkAccelerationStructureBuildOffsetInfoKHR-primitiveOffset-03551",
27755          "text": " For geometries of type <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if the geometry uses indices, the offset <code>primitiveOffset</code> from <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>indexData</code> <strong class=\"purple\">must</strong> be a multiple of the element size of <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>indexType</code>"
27756        },
27757        {
27758          "vuid": "VUID-VkAccelerationStructureBuildOffsetInfoKHR-primitiveOffset-03552",
27759          "text": " For geometries of type <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if the geometry doesn&#8217;t use indices, the offset <code>primitiveOffset</code> from <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>vertexData</code> <strong class=\"purple\">must</strong> be a multiple of the component size of <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>vertexFormat</code>"
27760        },
27761        {
27762          "vuid": "VUID-VkAccelerationStructureBuildOffsetInfoKHR-transformOffset-03553",
27763          "text": " For geometries of type <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, the offset <code>transformOffset</code> from <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>transformData</code> <strong class=\"purple\">must</strong> be a multiple of 16"
27764        },
27765        {
27766          "vuid": "VUID-VkAccelerationStructureBuildOffsetInfoKHR-primitiveOffset-03554",
27767          "text": " For geometries of type <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, the offset <code>primitiveOffset</code> from <a href=\"#VkAccelerationStructureGeometryAabbsDataKHR\">VkAccelerationStructureGeometryAabbsDataKHR</a>::<code>data</code> <strong class=\"purple\">must</strong> be a multiple of 8"
27768        },
27769        {
27770          "vuid": "VUID-VkAccelerationStructureBuildOffsetInfoKHR-primitiveOffset-03555",
27771          "text": "   For geometries of type <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, the offset   <code>primitiveOffset</code> from   <a href=\"#VkAccelerationStructureGeometryInstancesDataKHR\">VkAccelerationStructureGeometryInstancesDataKHR</a>::<code>data</code> <strong class=\"purple\">must</strong>   be a multiple of 16 // TODO - Almost certainly should be more here"
27772        }
27773      ]
27774    },
27775    "vkCmdWriteAccelerationStructuresPropertiesKHR": {
27776      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
27777        {
27778          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-02493",
27779          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> matching <code>queryType</code>"
27780        },
27781        {
27782          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-02494",
27783          "text": " The queries identified by <code>queryPool</code> and <code>firstQuery</code> <strong class=\"purple\">must</strong> be <em>unavailable</em>"
27784        },
27785        {
27786          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-parameter",
27787          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
27788        },
27789        {
27790          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parameter",
27791          "text": " <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>accelerationStructureCount</code> valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handles"
27792        },
27793        {
27794          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryType-parameter",
27795          "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value"
27796        },
27797        {
27798          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-parameter",
27799          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle"
27800        },
27801        {
27802          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-recording",
27803          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
27804        },
27805        {
27806          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-cmdpool",
27807          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
27808        },
27809        {
27810          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-renderpass",
27811          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
27812        },
27813        {
27814          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructureCount-arraylength",
27815          "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
27816        },
27817        {
27818          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commonparent",
27819          "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 <a href=\"#VkDevice\">VkDevice</a>"
27820        }
27821      ],
27822      "core": [
27823        {
27824          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431",
27825          "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_KHR</code> if <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code>"
27826        },
27827        {
27828          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryType-03432",
27829          "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code> or <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>"
27830        }
27831      ]
27832    },
27833    "vkCmdCopyAccelerationStructureNV": {
27834      "core": [
27835        {
27836          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-mode-03410",
27837          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR</code> or <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR</code>"
27838        },
27839        {
27840          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-src-03411",
27841          "text": " <code>src</code> <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR</code> if <code>mode</code> is <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR</code>"
27842        }
27843      ],
27844      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
27845        {
27846          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-parameter",
27847          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
27848        },
27849        {
27850          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-dst-parameter",
27851          "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
27852        },
27853        {
27854          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-src-parameter",
27855          "text": " <code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
27856        },
27857        {
27858          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-mode-parameter",
27859          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyAccelerationStructureModeKHR\">VkCopyAccelerationStructureModeKHR</a> value"
27860        },
27861        {
27862          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-recording",
27863          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
27864        },
27865        {
27866          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-cmdpool",
27867          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
27868        },
27869        {
27870          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-renderpass",
27871          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
27872        },
27873        {
27874          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commonparent",
27875          "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 <a href=\"#VkDevice\">VkDevice</a>"
27876        }
27877      ]
27878    },
27879    "vkCmdCopyAccelerationStructureKHR": {
27880      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
27881        {
27882          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-None-03556",
27883          "text": " All <code>VkAccelerationStructureKHR</code> objects referenced by this command <strong class=\"purple\">must</strong> be bound to device memory"
27884        },
27885        {
27886          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-parameter",
27887          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
27888        },
27889        {
27890          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-pInfo-parameter",
27891          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyAccelerationStructureInfoKHR\">VkCopyAccelerationStructureInfoKHR</a> structure"
27892        },
27893        {
27894          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-recording",
27895          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
27896        },
27897        {
27898          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-cmdpool",
27899          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
27900        },
27901        {
27902          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-renderpass",
27903          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
27904        }
27905      ],
27906      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)+(VK_KHR_deferred_host_operations)": [
27907        {
27908          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-pNext-03557",
27909          "text": " The <a href=\"#VkDeferredOperationInfoKHR\">VkDeferredOperationInfoKHR</a> structure <strong class=\"purple\">must</strong> not be included in the <code>pNext</code> chain of the <a href=\"#VkCopyAccelerationStructureInfoKHR\">VkCopyAccelerationStructureInfoKHR</a> structure"
27910        }
27911      ]
27912    },
27913    "VkCopyAccelerationStructureInfoKHR": {
27914      "core": [
27915        {
27916          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-mode-03410",
27917          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR</code> or <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR</code>"
27918        },
27919        {
27920          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-src-03411",
27921          "text": " <code>src</code> <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR</code> if <code>mode</code> is <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR</code>"
27922        }
27923      ],
27924      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
27925        {
27926          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-sType-sType",
27927          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR</code>"
27928        },
27929        {
27930          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-pNext-pNext",
27931          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeferredOperationInfoKHR\">VkDeferredOperationInfoKHR</a>"
27932        },
27933        {
27934          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-sType-unique",
27935          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
27936        },
27937        {
27938          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-src-parameter",
27939          "text": " <code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
27940        },
27941        {
27942          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-dst-parameter",
27943          "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
27944        },
27945        {
27946          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-mode-parameter",
27947          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyAccelerationStructureModeKHR\">VkCopyAccelerationStructureModeKHR</a> value"
27948        },
27949        {
27950          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-commonparent",
27951          "text": " Both of <code>dst</code>, and <code>src</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
27952        }
27953      ]
27954    },
27955    "vkCmdCopyAccelerationStructureToMemoryKHR": {
27956      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
27957        {
27958          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-None-04048",
27959          "text": " All <code>VkDeviceOrHostAddressConstKHR</code> referenced by this command <strong class=\"purple\">must</strong> contain valid device addresses for a buffer bound to device memory. If the buffer is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single VkDeviceMemory object"
27960        },
27961        {
27962          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-None-03559",
27963          "text": " All <code>VkAccelerationStructureKHR</code> objects referenced by this command <strong class=\"purple\">must</strong> be bound to device memory"
27964        },
27965        {
27966          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-parameter",
27967          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
27968        },
27969        {
27970          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-parameter",
27971          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyAccelerationStructureToMemoryInfoKHR\">VkCopyAccelerationStructureToMemoryInfoKHR</a> structure"
27972        },
27973        {
27974          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-recording",
27975          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
27976        },
27977        {
27978          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-cmdpool",
27979          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
27980        },
27981        {
27982          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-renderpass",
27983          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
27984        }
27985      ],
27986      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_deferred_host_operations)": [
27987        {
27988          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pNext-03560",
27989          "text": " The <a href=\"#VkDeferredOperationInfoKHR\">VkDeferredOperationInfoKHR</a> structure <strong class=\"purple\">must</strong> not be included in the <code>pNext</code> chain of the <a href=\"#VkCopyAccelerationStructureToMemoryInfoKHR\">VkCopyAccelerationStructureToMemoryInfoKHR</a> structure"
27990        }
27991      ],
27992      "core": [
27993        {
27994          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-mode-03412",
27995          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR</code>"
27996        }
27997      ]
27998    },
27999    "VkCopyAccelerationStructureToMemoryInfoKHR": {
28000      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
28001        {
28002          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-dst-03561",
28003          "text": " The memory pointed to by <code>dst</code> <strong class=\"purple\">must</strong> be at least as large as the serialization size of <code>src</code>, as reported by <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>"
28004        },
28005        {
28006          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-sType-sType",
28007          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR</code>"
28008        },
28009        {
28010          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-pNext-pNext",
28011          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeferredOperationInfoKHR\">VkDeferredOperationInfoKHR</a>"
28012        },
28013        {
28014          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-sType-unique",
28015          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
28016        },
28017        {
28018          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-src-parameter",
28019          "text": " <code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
28020        },
28021        {
28022          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-dst-parameter",
28023          "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressKHR\">VkDeviceOrHostAddressKHR</a> union"
28024        },
28025        {
28026          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-mode-parameter",
28027          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyAccelerationStructureModeKHR\">VkCopyAccelerationStructureModeKHR</a> value"
28028        }
28029      ],
28030      "core": [
28031        {
28032          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-mode-03412",
28033          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR</code>"
28034        }
28035      ]
28036    },
28037    "vkCmdCopyMemoryToAccelerationStructureKHR": {
28038      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
28039        {
28040          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-None-04049",
28041          "text": " All <code>VkDeviceOrHostAddressKHR</code> referenced by this command <strong class=\"purple\">must</strong> contain valid device addresses for a buffer bound to device memory. If the buffer is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single VkDeviceMemory object"
28042        },
28043        {
28044          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-None-03563",
28045          "text": " All <code>VkAccelerationStructureKHR</code> objects referenced by this command <strong class=\"purple\">must</strong> be bound to device memory"
28046        },
28047        {
28048          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-parameter",
28049          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
28050        },
28051        {
28052          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-parameter",
28053          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyMemoryToAccelerationStructureInfoKHR\">VkCopyMemoryToAccelerationStructureInfoKHR</a> structure"
28054        },
28055        {
28056          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-recording",
28057          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
28058        },
28059        {
28060          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-cmdpool",
28061          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
28062        },
28063        {
28064          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-renderpass",
28065          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
28066        }
28067      ],
28068      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_deferred_host_operations)": [
28069        {
28070          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pNext-03564",
28071          "text": " The <a href=\"#VkDeferredOperationInfoKHR\">VkDeferredOperationInfoKHR</a> structure <strong class=\"purple\">must</strong> not be included in the <code>pNext</code> chain of the <a href=\"#VkCopyMemoryToAccelerationStructureInfoKHR\">VkCopyMemoryToAccelerationStructureInfoKHR</a> structure"
28072        }
28073      ],
28074      "core": [
28075        {
28076          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-mode-03413",
28077          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR</code>"
28078        },
28079        {
28080          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03414",
28081          "text": " The data in <code>pInfo-&gt;src</code> <strong class=\"purple\">must</strong> have a format compatible with the destination physical device as returned by <a href=\"#vkGetDeviceAccelerationStructureCompatibilityKHR\">vkGetDeviceAccelerationStructureCompatibilityKHR</a>"
28082        }
28083      ]
28084    },
28085    "VkCopyMemoryToAccelerationStructureInfoKHR": {
28086      "core": [
28087        {
28088          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-mode-03413",
28089          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR</code>"
28090        },
28091        {
28092          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-pInfo-03414",
28093          "text": " The data in <code>pInfo-&gt;src</code> <strong class=\"purple\">must</strong> have a format compatible with the destination physical device as returned by <a href=\"#vkGetDeviceAccelerationStructureCompatibilityKHR\">vkGetDeviceAccelerationStructureCompatibilityKHR</a>"
28094        }
28095      ],
28096      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
28097        {
28098          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-sType-sType",
28099          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR</code>"
28100        },
28101        {
28102          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-pNext-pNext",
28103          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeferredOperationInfoKHR\">VkDeferredOperationInfoKHR</a>"
28104        },
28105        {
28106          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-sType-unique",
28107          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
28108        },
28109        {
28110          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-src-parameter",
28111          "text": " <code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> union"
28112        },
28113        {
28114          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-dst-parameter",
28115          "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
28116        },
28117        {
28118          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-mode-parameter",
28119          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyAccelerationStructureModeKHR\">VkCopyAccelerationStructureModeKHR</a> value"
28120        }
28121      ]
28122    },
28123    "vkGetDeviceAccelerationStructureCompatibilityKHR": {
28124      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
28125        {
28126          "vuid": "VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-rayTracing-03565",
28127          "text": " The <a href=\"#features-raytracing\"><code>rayTracing</code></a> or <a href=\"#features-rayQuery\"><code>rayQuery</code></a> feature <strong class=\"purple\">must</strong> be enabled"
28128        },
28129        {
28130          "vuid": "VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-device-parameter",
28131          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
28132        },
28133        {
28134          "vuid": "VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-version-parameter",
28135          "text": " <code>version</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureVersionKHR\">VkAccelerationStructureVersionKHR</a> structure"
28136        }
28137      ]
28138    },
28139    "VkAccelerationStructureVersionKHR": {
28140      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
28141        {
28142          "vuid": "VUID-VkAccelerationStructureVersionKHR-sType-sType",
28143          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR</code>"
28144        },
28145        {
28146          "vuid": "VUID-VkAccelerationStructureVersionKHR-pNext-pNext",
28147          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
28148        },
28149        {
28150          "vuid": "VUID-VkAccelerationStructureVersionKHR-versionData-parameter",
28151          "text": " <code>versionData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>2</code>*VK_UUID_SIZE <code>uint8_t</code> values"
28152        }
28153      ]
28154    },
28155    "vkBuildAccelerationStructureKHR": {
28156      "core": [
28157        {
28158          "vuid": "VUID-vkBuildAccelerationStructureKHR-pOffsetInfos-03402",
28159          "text": " Each element of <code>ppOffsetInfos</code>[i] <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pInfos</code>[i].<code>geometryCount</code> <code>VkAccelerationStructureBuildOffsetInfoKHR</code> structures"
28160        },
28161        {
28162          "vuid": "VUID-vkBuildAccelerationStructureKHR-pInfos-03403",
28163          "text": " Each <code>pInfos</code>[i].<code>srcAccelerationStructure</code> <strong class=\"purple\">must</strong> not refer to the same acceleration structure as any <code>pInfos</code>[i].<code>dstAccelerationStructure</code> that is provided to the same build command unless it is identical for an update"
28164        },
28165        {
28166          "vuid": "VUID-vkBuildAccelerationStructureKHR-pInfos-03404",
28167          "text": " For each <code>pInfos</code>[i], <code>dstAccelerationStructure</code> <strong class=\"purple\">must</strong> have been created with compatible <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a> where <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>type</code> and <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>flags</code> are identical to <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a>::<code>type</code> and <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a>::<code>flags</code> respectively, <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a>::<code>geometryCount</code> for <code>dstAccelerationStructure</code> are greater than or equal to the build size, and each geometry in <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a>::<code>ppGeometries</code> for <code>dstAccelerationStructure</code> has greater than or equal to the number of vertices, indices, and AABBs, <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>transformData</code> is both 0 or both non-zero, and all other parameters are the same"
28168        },
28169        {
28170          "vuid": "VUID-vkBuildAccelerationStructureKHR-pInfos-03405",
28171          "text": " For each <code>pInfos</code>[i], if <code>update</code> is <code>VK_TRUE</code>, then objects that were previously active for that acceleration structure <strong class=\"purple\">must</strong> not be made inactive as per <a href=\"#acceleration-structure-inactive-prims\">Inactive Primitives and Instances</a>"
28172        },
28173        {
28174          "vuid": "VUID-vkBuildAccelerationStructureKHR-pInfos-03406",
28175          "text": " For each <code>pInfos</code>[i], if <code>update</code> is <code>VK_TRUE</code>, then objects that were previously inactive for that acceleration structure <strong class=\"purple\">must</strong> not be made active as per <a href=\"#acceleration-structure-inactive-prims\">Inactive Primitives and Instances</a>"
28176        },
28177        {
28178          "vuid": "VUID-vkBuildAccelerationStructureKHR-None-03407",
28179          "text": " Any acceleration structure instance in any top level build in this command <strong class=\"purple\">must</strong> not reference any bottom level acceleration structure built by this command"
28180        },
28181        {
28182          "vuid": "VUID-vkBuildAccelerationStructureKHR-pInfos-03408",
28183          "text": " There <strong class=\"purple\">must</strong> not be any <a href=\"#resources-memory-aliasing\">memory aliasing</a> between the scratch memories that are provided in all the <code>pInfos</code>[i].<code>scratchData</code> memories for the acceleration structure builds"
28184        },
28185        {
28186          "vuid": "VUID-vkBuildAccelerationStructureKHR-None-03409",
28187          "text": " There <strong class=\"purple\">must</strong> not be any <a href=\"#resources-memory-aliasing\">memory aliasing</a> between memory bound to any top level, bottom level, or instance acceleration structure accessed by this command"
28188        },
28189        {
28190          "vuid": "VUID-vkBuildAccelerationStructureKHR-None-03437",
28191          "text": " All <a href=\"#VkDeviceOrHostAddressKHR\">VkDeviceOrHostAddressKHR</a> or <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> referenced by this command <strong class=\"purple\">must</strong> contain valid host addresses"
28192        },
28193        {
28194          "vuid": "VUID-vkBuildAccelerationStructureKHR-None-03438",
28195          "text": " All <code>VkAccelerationStructureKHR</code> objects referenced by this command <strong class=\"purple\">must</strong> be bound to host-visible memory"
28196        },
28197        {
28198          "vuid": "VUID-vkBuildAccelerationStructureKHR-rayTracingHostAccelerationStructureCommands-03439",
28199          "text": " The <a href=\"#feature-raytracing-hostascmds\"><code>VkPhysicalDeviceRayTracingFeaturesKHR</code>::<code>rayTracingHostAccelerationStructureCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
28200        }
28201      ],
28202      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
28203        {
28204          "vuid": "VUID-vkBuildAccelerationStructureKHR-device-parameter",
28205          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
28206        },
28207        {
28208          "vuid": "VUID-vkBuildAccelerationStructureKHR-pInfos-parameter",
28209          "text": " <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> valid <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structures"
28210        },
28211        {
28212          "vuid": "VUID-vkBuildAccelerationStructureKHR-ppOffsetInfos-parameter",
28213          "text": " <code>ppOffsetInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> <a href=\"#VkAccelerationStructureBuildOffsetInfoKHR\">VkAccelerationStructureBuildOffsetInfoKHR</a> structures"
28214        },
28215        {
28216          "vuid": "VUID-vkBuildAccelerationStructureKHR-infoCount-arraylength",
28217          "text": " <code>infoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
28218        }
28219      ]
28220    },
28221    "vkCopyAccelerationStructureKHR": {
28222      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
28223        {
28224          "vuid": "VUID-vkCopyAccelerationStructureKHR-None-03440",
28225          "text": " All <code>VkAccelerationStructureKHR</code> objects referenced by this command <strong class=\"purple\">must</strong> be bound to host-visible memory"
28226        },
28227        {
28228          "vuid": "VUID-vkCopyAccelerationStructureKHR-rayTracingHostAccelerationStructureCommands-03441",
28229          "text": " the <a href=\"#feature-raytracing-hostascmds\"><code>VkPhysicalDeviceRayTracingFeaturesKHR</code>::<code>rayTracingHostAccelerationStructureCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
28230        },
28231        {
28232          "vuid": "VUID-vkCopyAccelerationStructureKHR-device-parameter",
28233          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
28234        },
28235        {
28236          "vuid": "VUID-vkCopyAccelerationStructureKHR-pInfo-parameter",
28237          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyAccelerationStructureInfoKHR\">VkCopyAccelerationStructureInfoKHR</a> structure"
28238        }
28239      ]
28240    },
28241    "vkCopyMemoryToAccelerationStructureKHR": {
28242      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
28243        {
28244          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-None-03442",
28245          "text": " All <code>VkAccelerationStructureKHR</code> objects referenced by this command <strong class=\"purple\">must</strong> be bound to host-visible memory"
28246        },
28247        {
28248          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-None-03443",
28249          "text": " All <code>VkDeviceOrHostAddressConstKHR</code> referenced by this command <strong class=\"purple\">must</strong> contain valid host pointers"
28250        },
28251        {
28252          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-rayTracingHostAccelerationStructureCommands-03444",
28253          "text": " the <a href=\"#feature-raytracing-hostascmds\"><code>VkPhysicalDeviceRayTracingFeaturesKHR</code>::<code>rayTracingHostAccelerationStructureCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
28254        },
28255        {
28256          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-device-parameter",
28257          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
28258        },
28259        {
28260          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-parameter",
28261          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyMemoryToAccelerationStructureInfoKHR\">VkCopyMemoryToAccelerationStructureInfoKHR</a> structure"
28262        }
28263      ]
28264    },
28265    "vkCopyAccelerationStructureToMemoryKHR": {
28266      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
28267        {
28268          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-None-03445",
28269          "text": " All <code>VkAccelerationStructureKHR</code> objects referenced by this command <strong class=\"purple\">must</strong> be bound to host-visible memory"
28270        },
28271        {
28272          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-None-03446",
28273          "text": " All <code>VkDeviceOrHostAddressKHR</code> referenced by this command <strong class=\"purple\">must</strong> contain valid host pointers"
28274        },
28275        {
28276          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-rayTracingHostAccelerationStructureCommands-03447",
28277          "text": " the <a href=\"#feature-raytracing-hostascmds\"><code>VkPhysicalDeviceRayTracingFeaturesKHR</code>::<code>rayTracingHostAccelerationStructureCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
28278        },
28279        {
28280          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-device-parameter",
28281          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
28282        },
28283        {
28284          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-parameter",
28285          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyAccelerationStructureToMemoryInfoKHR\">VkCopyAccelerationStructureToMemoryInfoKHR</a> structure"
28286        }
28287      ]
28288    },
28289    "vkWriteAccelerationStructuresPropertiesKHR": {
28290      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
28291        {
28292          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03448",
28293          "text": " If <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code>, then <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of the size of <code>VkDeviceSize</code>"
28294        },
28295        {
28296          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03449",
28297          "text": " If <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code>, then <code>data</code> <strong class=\"purple\">must</strong> point to a <code>VkDeviceSize</code>"
28298        },
28299        {
28300          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03450",
28301          "text": " If <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>, then <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of the size of <code>VkDeviceSize</code>"
28302        },
28303        {
28304          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03451",
28305          "text": " If <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>, then <code>data</code> <strong class=\"purple\">must</strong> point to a <code>VkDeviceSize</code>"
28306        },
28307        {
28308          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-dataSize-03452",
28309          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than or equal to <span class=\"eq\"><code>accelerationStructureCount</code>*<code>stride</code></span>"
28310        },
28311        {
28312          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-03453",
28313          "text": " The acceleration structures referenced by <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be bound to host-visible memory"
28314        },
28315        {
28316          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-device-parameter",
28317          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
28318        },
28319        {
28320          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parameter",
28321          "text": " <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>accelerationStructureCount</code> valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handles"
28322        },
28323        {
28324          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-parameter",
28325          "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value"
28326        },
28327        {
28328          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-pData-parameter",
28329          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
28330        },
28331        {
28332          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructureCount-arraylength",
28333          "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
28334        },
28335        {
28336          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-dataSize-arraylength",
28337          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
28338        },
28339        {
28340          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parent",
28341          "text": " Each element of <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
28342        }
28343      ],
28344      "core": [
28345        {
28346          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431",
28347          "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_KHR</code> if <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code>"
28348        },
28349        {
28350          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03432",
28351          "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code> or <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>"
28352        },
28353        {
28354          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-rayTracingHostAccelerationStructureCommands-03454",
28355          "text": " the <a href=\"#feature-raytracing-hostascmds\"><code>VkPhysicalDeviceRayTracingFeaturesKHR</code>::<code>rayTracingHostAccelerationStructureCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
28356        }
28357      ]
28358    },
28359    "vkEnumerateInstanceLayerProperties": {
28360      "core": [
28361        {
28362          "vuid": "VUID-vkEnumerateInstanceLayerProperties-pPropertyCount-parameter",
28363          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
28364        },
28365        {
28366          "vuid": "VUID-vkEnumerateInstanceLayerProperties-pProperties-parameter",
28367          "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> <a href=\"#VkLayerProperties\">VkLayerProperties</a> structures"
28368        }
28369      ]
28370    },
28371    "vkEnumerateDeviceLayerProperties": {
28372      "core": [
28373        {
28374          "vuid": "VUID-vkEnumerateDeviceLayerProperties-physicalDevice-parameter",
28375          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
28376        },
28377        {
28378          "vuid": "VUID-vkEnumerateDeviceLayerProperties-pPropertyCount-parameter",
28379          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
28380        },
28381        {
28382          "vuid": "VUID-vkEnumerateDeviceLayerProperties-pProperties-parameter",
28383          "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> <a href=\"#VkLayerProperties\">VkLayerProperties</a> structures"
28384        }
28385      ]
28386    },
28387    "vkEnumerateInstanceExtensionProperties": {
28388      "core": [
28389        {
28390          "vuid": "VUID-vkEnumerateInstanceExtensionProperties-pLayerName-parameter",
28391          "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"
28392        },
28393        {
28394          "vuid": "VUID-vkEnumerateInstanceExtensionProperties-pPropertyCount-parameter",
28395          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
28396        },
28397        {
28398          "vuid": "VUID-vkEnumerateInstanceExtensionProperties-pProperties-parameter",
28399          "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> <a href=\"#VkExtensionProperties\">VkExtensionProperties</a> structures"
28400        }
28401      ]
28402    },
28403    "vkEnumerateDeviceExtensionProperties": {
28404      "core": [
28405        {
28406          "vuid": "VUID-vkEnumerateDeviceExtensionProperties-physicalDevice-parameter",
28407          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
28408        },
28409        {
28410          "vuid": "VUID-vkEnumerateDeviceExtensionProperties-pLayerName-parameter",
28411          "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"
28412        },
28413        {
28414          "vuid": "VUID-vkEnumerateDeviceExtensionProperties-pPropertyCount-parameter",
28415          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
28416        },
28417        {
28418          "vuid": "VUID-vkEnumerateDeviceExtensionProperties-pProperties-parameter",
28419          "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> <a href=\"#VkExtensionProperties\">VkExtensionProperties</a> structures"
28420        }
28421      ]
28422    },
28423    "vkGetPhysicalDeviceFeatures": {
28424      "core": [
28425        {
28426          "vuid": "VUID-vkGetPhysicalDeviceFeatures-physicalDevice-parameter",
28427          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
28428        },
28429        {
28430          "vuid": "VUID-vkGetPhysicalDeviceFeatures-pFeatures-parameter",
28431          "text": " <code>pFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPhysicalDeviceFeatures\">VkPhysicalDeviceFeatures</a> structure"
28432        }
28433      ]
28434    },
28435    "vkGetPhysicalDeviceFeatures2": {
28436      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
28437        {
28438          "vuid": "VUID-vkGetPhysicalDeviceFeatures2-physicalDevice-parameter",
28439          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
28440        },
28441        {
28442          "vuid": "VUID-vkGetPhysicalDeviceFeatures2-pFeatures-parameter",
28443          "text": " <code>pFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a> structure"
28444        }
28445      ]
28446    },
28447    "VkPhysicalDeviceFeatures2": {
28448      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
28449        {
28450          "vuid": "VUID-VkPhysicalDeviceFeatures2-sType-sType",
28451          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2</code>"
28452        }
28453      ]
28454    },
28455    "VkPhysicalDeviceVulkan11Features": {
28456      "(VK_VERSION_1_2)": [
28457        {
28458          "vuid": "VUID-VkPhysicalDeviceVulkan11Features-sType-sType",
28459          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES</code>"
28460        }
28461      ]
28462    },
28463    "VkPhysicalDeviceVulkan12Features": {
28464      "(VK_VERSION_1_2)": [
28465        {
28466          "vuid": "VUID-VkPhysicalDeviceVulkan12Features-sType-sType",
28467          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES</code>"
28468        }
28469      ]
28470    },
28471    "VkPhysicalDeviceVariablePointersFeatures": {
28472      "(VK_VERSION_1_1,VK_KHR_variable_pointers)": [
28473        {
28474          "vuid": "VUID-VkPhysicalDeviceVariablePointersFeatures-variablePointers-01431",
28475          "text": " If <code>variablePointers</code> is enabled then <code>variablePointersStorageBuffer</code> <strong class=\"purple\">must</strong> also be enabled"
28476        },
28477        {
28478          "vuid": "VUID-VkPhysicalDeviceVariablePointersFeatures-sType-sType",
28479          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES</code>"
28480        }
28481      ]
28482    },
28483    "VkPhysicalDeviceMultiviewFeatures": {
28484      "(VK_VERSION_1_1,VK_KHR_multiview)": [
28485        {
28486          "vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-multiviewGeometryShader-00580",
28487          "text": " If <code>multiviewGeometryShader</code> is enabled then <code>multiview</code> <strong class=\"purple\">must</strong> also be enabled"
28488        },
28489        {
28490          "vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-multiviewTessellationShader-00581",
28491          "text": " If <code>multiviewTessellationShader</code> is enabled then <code>multiview</code> <strong class=\"purple\">must</strong> also be enabled"
28492        },
28493        {
28494          "vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-sType-sType",
28495          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES</code>"
28496        }
28497      ]
28498    },
28499    "VkPhysicalDeviceShaderAtomicInt64Features": {
28500      "(VK_VERSION_1_2,VK_KHR_shader_atomic_int64)": [
28501        {
28502          "vuid": "VUID-VkPhysicalDeviceShaderAtomicInt64Features-sType-sType",
28503          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES</code>"
28504        }
28505      ]
28506    },
28507    "VkPhysicalDevice8BitStorageFeatures": {
28508      "(VK_VERSION_1_2,VK_KHR_8bit_storage)": [
28509        {
28510          "vuid": "VUID-VkPhysicalDevice8BitStorageFeatures-sType-sType",
28511          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES</code>"
28512        }
28513      ]
28514    },
28515    "VkPhysicalDevice16BitStorageFeatures": {
28516      "(VK_VERSION_1_1,VK_KHR_16bit_storage)": [
28517        {
28518          "vuid": "VUID-VkPhysicalDevice16BitStorageFeatures-sType-sType",
28519          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES</code>"
28520        }
28521      ]
28522    },
28523    "VkPhysicalDeviceShaderFloat16Int8Features": {
28524      "(VK_VERSION_1_2,VK_KHR_shader_float16_int8)": [
28525        {
28526          "vuid": "VUID-VkPhysicalDeviceShaderFloat16Int8Features-sType-sType",
28527          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES</code>"
28528        }
28529      ]
28530    },
28531    "VkPhysicalDeviceShaderClockFeaturesKHR": {
28532      "(VK_KHR_shader_clock)": [
28533        {
28534          "vuid": "VUID-VkPhysicalDeviceShaderClockFeaturesKHR-sType-sType",
28535          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR</code>"
28536        }
28537      ]
28538    },
28539    "VkPhysicalDeviceSamplerYcbcrConversionFeatures": {
28540      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
28541        {
28542          "vuid": "VUID-VkPhysicalDeviceSamplerYcbcrConversionFeatures-sType-sType",
28543          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES</code>"
28544        }
28545      ]
28546    },
28547    "VkPhysicalDeviceProtectedMemoryFeatures": {
28548      "(VK_VERSION_1_1)": [
28549        {
28550          "vuid": "VUID-VkPhysicalDeviceProtectedMemoryFeatures-sType-sType",
28551          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES</code>"
28552        }
28553      ]
28554    },
28555    "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT": {
28556      "(VK_EXT_blend_operation_advanced)": [
28557        {
28558          "vuid": "VUID-VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT-sType-sType",
28559          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT</code>"
28560        }
28561      ]
28562    },
28563    "VkPhysicalDeviceConditionalRenderingFeaturesEXT": {
28564      "(VK_EXT_conditional_rendering)": [
28565        {
28566          "vuid": "VUID-VkPhysicalDeviceConditionalRenderingFeaturesEXT-sType-sType",
28567          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT</code>"
28568        }
28569      ]
28570    },
28571    "VkPhysicalDeviceShaderDrawParametersFeatures": {
28572      "(VK_VERSION_1_1)": [
28573        {
28574          "vuid": "VUID-VkPhysicalDeviceShaderDrawParametersFeatures-sType-sType",
28575          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES</code>"
28576        }
28577      ]
28578    },
28579    "VkPhysicalDeviceMeshShaderFeaturesNV": {
28580      "(VK_NV_mesh_shader)": [
28581        {
28582          "vuid": "VUID-VkPhysicalDeviceMeshShaderFeaturesNV-sType-sType",
28583          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV</code>"
28584        }
28585      ]
28586    },
28587    "VkPhysicalDeviceDescriptorIndexingFeatures": {
28588      "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
28589        {
28590          "vuid": "VUID-VkPhysicalDeviceDescriptorIndexingFeatures-sType-sType",
28591          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES</code>"
28592        }
28593      ]
28594    },
28595    "VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT": {
28596      "(VK_EXT_vertex_attribute_divisor)": [
28597        {
28598          "vuid": "VUID-VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT-sType-sType",
28599          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT</code>"
28600        }
28601      ]
28602    },
28603    "VkPhysicalDeviceASTCDecodeFeaturesEXT": {
28604      "(VK_EXT_astc_decode_mode)": [
28605        {
28606          "vuid": "VUID-VkPhysicalDeviceASTCDecodeFeaturesEXT-sType-sType",
28607          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT</code>"
28608        }
28609      ]
28610    },
28611    "VkPhysicalDeviceTransformFeedbackFeaturesEXT": {
28612      "(VK_EXT_transform_feedback)": [
28613        {
28614          "vuid": "VUID-VkPhysicalDeviceTransformFeedbackFeaturesEXT-sType-sType",
28615          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT</code>"
28616        }
28617      ]
28618    },
28619    "VkPhysicalDeviceVulkanMemoryModelFeatures": {
28620      "(VK_VERSION_1_2,VK_KHR_vulkan_memory_model)": [
28621        {
28622          "vuid": "VUID-VkPhysicalDeviceVulkanMemoryModelFeatures-sType-sType",
28623          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES</code>"
28624        }
28625      ]
28626    },
28627    "VkPhysicalDeviceInlineUniformBlockFeaturesEXT": {
28628      "(VK_EXT_inline_uniform_block)": [
28629        {
28630          "vuid": "VUID-VkPhysicalDeviceInlineUniformBlockFeaturesEXT-sType-sType",
28631          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT</code>"
28632        }
28633      ]
28634    },
28635    "VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV": {
28636      "(VK_NV_representative_fragment_test)": [
28637        {
28638          "vuid": "VUID-VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV-sType-sType",
28639          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV</code>"
28640        }
28641      ]
28642    },
28643    "VkPhysicalDeviceExclusiveScissorFeaturesNV": {
28644      "(VK_NV_scissor_exclusive)": [
28645        {
28646          "vuid": "VUID-VkPhysicalDeviceExclusiveScissorFeaturesNV-sType-sType",
28647          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV</code>"
28648        }
28649      ]
28650    },
28651    "VkPhysicalDeviceCornerSampledImageFeaturesNV": {
28652      "(VK_NV_corner_sampled_image)": [
28653        {
28654          "vuid": "VUID-VkPhysicalDeviceCornerSampledImageFeaturesNV-sType-sType",
28655          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV</code>"
28656        }
28657      ]
28658    },
28659    "VkPhysicalDeviceComputeShaderDerivativesFeaturesNV": {
28660      "(VK_NV_compute_shader_derivatives)": [
28661        {
28662          "vuid": "VUID-VkPhysicalDeviceComputeShaderDerivativesFeaturesNV-sType-sType",
28663          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV</code>"
28664        }
28665      ]
28666    },
28667    "VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV": {
28668      "(VK_NV_fragment_shader_barycentric)": [
28669        {
28670          "vuid": "VUID-VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV-sType-sType",
28671          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV</code>"
28672        }
28673      ]
28674    },
28675    "VkPhysicalDeviceShaderImageFootprintFeaturesNV": {
28676      "(VK_NV_shader_image_footprint)": [
28677        {
28678          "vuid": "VUID-VkPhysicalDeviceShaderImageFootprintFeaturesNV-sType-sType",
28679          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV</code>"
28680        }
28681      ]
28682    },
28683    "VkPhysicalDeviceShadingRateImageFeaturesNV": {
28684      "(VK_NV_shading_rate_image)": [
28685        {
28686          "vuid": "VUID-VkPhysicalDeviceShadingRateImageFeaturesNV-sType-sType",
28687          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV</code>"
28688        }
28689      ]
28690    },
28691    "VkPhysicalDeviceFragmentDensityMapFeaturesEXT": {
28692      "(VK_EXT_fragment_density_map)": [
28693        {
28694          "vuid": "VUID-VkPhysicalDeviceFragmentDensityMapFeaturesEXT-sType-sType",
28695          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT</code>"
28696        }
28697      ]
28698    },
28699    "VkPhysicalDeviceScalarBlockLayoutFeatures": {
28700      "(VK_VERSION_1_2,VK_EXT_scalar_block_layout)": [
28701        {
28702          "vuid": "VUID-VkPhysicalDeviceScalarBlockLayoutFeatures-sType-sType",
28703          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES</code>"
28704        }
28705      ]
28706    },
28707    "VkPhysicalDeviceUniformBufferStandardLayoutFeatures": {
28708      "(VK_VERSION_1_2,VK_KHR_uniform_buffer_standard_layout)": [
28709        {
28710          "vuid": "VUID-VkPhysicalDeviceUniformBufferStandardLayoutFeatures-sType-sType",
28711          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES</code>"
28712        }
28713      ]
28714    },
28715    "VkPhysicalDeviceDepthClipEnableFeaturesEXT": {
28716      "(VK_EXT_depth_clip_enable)": [
28717        {
28718          "vuid": "VUID-VkPhysicalDeviceDepthClipEnableFeaturesEXT-sType-sType",
28719          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT</code>"
28720        }
28721      ]
28722    },
28723    "VkPhysicalDeviceMemoryPriorityFeaturesEXT": {
28724      "(VK_EXT_memory_priority)": [
28725        {
28726          "vuid": "VUID-VkPhysicalDeviceMemoryPriorityFeaturesEXT-sType-sType",
28727          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT</code>"
28728        }
28729      ]
28730    },
28731    "VkPhysicalDeviceBufferDeviceAddressFeatures": {
28732      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
28733        {
28734          "vuid": "VUID-VkPhysicalDeviceBufferDeviceAddressFeatures-sType-sType",
28735          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES</code>"
28736        }
28737      ]
28738    },
28739    "VkPhysicalDeviceBufferDeviceAddressFeaturesEXT": {
28740      "(VK_EXT_buffer_device_address)": [
28741        {
28742          "vuid": "VUID-VkPhysicalDeviceBufferDeviceAddressFeaturesEXT-sType-sType",
28743          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT</code>"
28744        }
28745      ]
28746    },
28747    "VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV": {
28748      "(VK_NV_dedicated_allocation_image_aliasing)": [
28749        {
28750          "vuid": "VUID-VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV-sType-sType",
28751          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV</code>"
28752        }
28753      ]
28754    },
28755    "VkPhysicalDeviceImagelessFramebufferFeatures": {
28756      "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)": [
28757        {
28758          "vuid": "VUID-VkPhysicalDeviceImagelessFramebufferFeatures-sType-sType",
28759          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES</code>"
28760        }
28761      ]
28762    },
28763    "VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT": {
28764      "(VK_EXT_fragment_shader_interlock)": [
28765        {
28766          "vuid": "VUID-VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT-sType-sType",
28767          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT</code>"
28768        }
28769      ]
28770    },
28771    "VkPhysicalDeviceCooperativeMatrixFeaturesNV": {
28772      "(VK_NV_cooperative_matrix)": [
28773        {
28774          "vuid": "VUID-VkPhysicalDeviceCooperativeMatrixFeaturesNV-sType-sType",
28775          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV</code>"
28776        }
28777      ]
28778    },
28779    "VkPhysicalDeviceYcbcrImageArraysFeaturesEXT": {
28780      "(VK_EXT_ycbcr_image_arrays)": [
28781        {
28782          "vuid": "VUID-VkPhysicalDeviceYcbcrImageArraysFeaturesEXT-sType-sType",
28783          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT</code>"
28784        }
28785      ]
28786    },
28787    "VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures": {
28788      "(VK_VERSION_1_1)+(VK_VERSION_1_2,VK_KHR_shader_subgroup_extended_types)": [
28789        {
28790          "vuid": "VUID-VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures-sType-sType",
28791          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES</code>"
28792        }
28793      ]
28794    },
28795    "VkPhysicalDeviceHostQueryResetFeatures": {
28796      "(VK_VERSION_1_2,VK_EXT_host_query_reset)": [
28797        {
28798          "vuid": "VUID-VkPhysicalDeviceHostQueryResetFeatures-sType-sType",
28799          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES</code>"
28800        }
28801      ]
28802    },
28803    "VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL": {
28804      "(VK_INTEL_shader_integer_functions2)": [
28805        {
28806          "vuid": "VUID-VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL-sType-sType",
28807          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL</code>"
28808        }
28809      ]
28810    },
28811    "VkPhysicalDeviceCoverageReductionModeFeaturesNV": {
28812      "(VK_NV_coverage_reduction_mode)": [
28813        {
28814          "vuid": "VUID-VkPhysicalDeviceCoverageReductionModeFeaturesNV-sType-sType",
28815          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV</code>"
28816        }
28817      ]
28818    },
28819    "VkPhysicalDeviceTimelineSemaphoreFeatures": {
28820      "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
28821        {
28822          "vuid": "VUID-VkPhysicalDeviceTimelineSemaphoreFeatures-sType-sType",
28823          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES</code>"
28824        }
28825      ]
28826    },
28827    "VkPhysicalDeviceIndexTypeUint8FeaturesEXT": {
28828      "(VK_EXT_index_type_uint8)": [
28829        {
28830          "vuid": "VUID-VkPhysicalDeviceIndexTypeUint8FeaturesEXT-sType-sType",
28831          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT</code>"
28832        }
28833      ]
28834    },
28835    "VkPhysicalDeviceShaderSMBuiltinsFeaturesNV": {
28836      "(VK_NV_shader_sm_builtins)": [
28837        {
28838          "vuid": "VUID-VkPhysicalDeviceShaderSMBuiltinsFeaturesNV-sType-sType",
28839          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV</code>"
28840        }
28841      ]
28842    },
28843    "VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures": {
28844      "(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
28845        {
28846          "vuid": "VUID-VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures-sType-sType",
28847          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES</code>"
28848        }
28849      ]
28850    },
28851    "VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR": {
28852      "(VK_KHR_pipeline_executable_properties)": [
28853        {
28854          "vuid": "VUID-VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR-sType-sType",
28855          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR</code>"
28856        }
28857      ]
28858    },
28859    "VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT": {
28860      "(VK_EXT_shader_demote_to_helper_invocation)": [
28861        {
28862          "vuid": "VUID-VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT-sType-sType",
28863          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT</code>"
28864        }
28865      ]
28866    },
28867    "VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT": {
28868      "(VK_EXT_texel_buffer_alignment)": [
28869        {
28870          "vuid": "VUID-VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT-sType-sType",
28871          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT</code>"
28872        }
28873      ]
28874    },
28875    "VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT": {
28876      "(VK_EXT_texture_compression_astc_hdr)": [
28877        {
28878          "vuid": "VUID-VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT-sType-sType",
28879          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT</code>"
28880        }
28881      ]
28882    },
28883    "VkPhysicalDeviceLineRasterizationFeaturesEXT": {
28884      "(VK_EXT_line_rasterization)": [
28885        {
28886          "vuid": "VUID-VkPhysicalDeviceLineRasterizationFeaturesEXT-sType-sType",
28887          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT</code>"
28888        }
28889      ]
28890    },
28891    "VkPhysicalDeviceSubgroupSizeControlFeaturesEXT": {
28892      "(VK_EXT_subgroup_size_control)": [
28893        {
28894          "vuid": "VUID-VkPhysicalDeviceSubgroupSizeControlFeaturesEXT-sType-sType",
28895          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT</code>"
28896        }
28897      ]
28898    },
28899    "VkPhysicalDeviceCoherentMemoryFeaturesAMD": {
28900      "(VK_AMD_device_coherent_memory)": [
28901        {
28902          "vuid": "VUID-VkPhysicalDeviceCoherentMemoryFeaturesAMD-sType-sType",
28903          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD</code>"
28904        }
28905      ]
28906    },
28907    "VkPhysicalDeviceRayTracingFeaturesKHR": {
28908      "(VK_KHR_ray_tracing)": [
28909        {
28910          "vuid": "VUID-VkPhysicalDeviceRayTracingFeaturesKHR-rayTracingShaderGroupHandleCaptureReplayMixed-03348",
28911          "text": " If <code>rayTracingShaderGroupHandleCaptureReplayMixed</code> is <code>VK_TRUE</code>, <code>rayTracingShaderGroupHandleCaptureReplay</code> <strong class=\"purple\">must</strong> also be <code>VK_TRUE</code>"
28912        },
28913        {
28914          "vuid": "VUID-VkPhysicalDeviceRayTracingFeaturesKHR-sType-sType",
28915          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR</code>"
28916        }
28917      ]
28918    },
28919    "VkPhysicalDeviceExtendedDynamicStateFeaturesEXT": {
28920      "(VK_EXT_extended_dynamic_state)": [
28921        {
28922          "vuid": "VUID-VkPhysicalDeviceExtendedDynamicStateFeaturesEXT-sType-sType",
28923          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT</code>"
28924        }
28925      ]
28926    },
28927    "VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV": {
28928      "(VK_NV_device_generated_commands)": [
28929        {
28930          "vuid": "VUID-VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV-sType-sType",
28931          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV</code>"
28932        }
28933      ]
28934    },
28935    "VkPhysicalDeviceDiagnosticsConfigFeaturesNV": {
28936      "(VK_NV_device_diagnostics_config)": [
28937        {
28938          "vuid": "VUID-VkPhysicalDeviceDiagnosticsConfigFeaturesNV-sType-sType",
28939          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV</code>"
28940        }
28941      ]
28942    },
28943    "VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT": {
28944      "(VK_EXT_pipeline_creation_cache_control)": [
28945        {
28946          "vuid": "VUID-VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT-sType-sType",
28947          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT</code>"
28948        }
28949      ]
28950    },
28951    "VkPhysicalDevicePrivateDataFeaturesEXT": {
28952      "(VK_EXT_private_data)": [
28953        {
28954          "vuid": "VUID-VkPhysicalDevicePrivateDataFeaturesEXT-sType-sType",
28955          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT</code>"
28956        }
28957      ]
28958    },
28959    "VkPhysicalDeviceRobustness2FeaturesEXT": {
28960      "(VK_EXT_robustness2)": [
28961        {
28962          "vuid": "VUID-VkPhysicalDeviceRobustness2FeaturesEXT-robustBufferAccess2-04000",
28963          "text": " If <code>robustBufferAccess2</code> is enabled then <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> <strong class=\"purple\">must</strong> also be enabled"
28964        },
28965        {
28966          "vuid": "VUID-VkPhysicalDeviceRobustness2FeaturesEXT-sType-sType",
28967          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT</code>"
28968        }
28969      ]
28970    },
28971    "VkPhysicalDeviceCustomBorderColorFeaturesEXT": {
28972      "(VK_EXT_custom_border_color)": [
28973        {
28974          "vuid": "VUID-VkPhysicalDeviceCustomBorderColorFeaturesEXT-sType-sType",
28975          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT</code>"
28976        }
28977      ]
28978    },
28979    "VkPhysicalDevicePushDescriptorPropertiesKHR": {
28980      "(VK_KHR_push_descriptor)": [
28981        {
28982          "vuid": "VUID-VkPhysicalDevicePushDescriptorPropertiesKHR-sType-sType",
28983          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR</code>"
28984        }
28985      ]
28986    },
28987    "VkPhysicalDeviceMultiviewProperties": {
28988      "(VK_VERSION_1_1,VK_KHR_multiview)": [
28989        {
28990          "vuid": "VUID-VkPhysicalDeviceMultiviewProperties-sType-sType",
28991          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES</code>"
28992        }
28993      ]
28994    },
28995    "VkPhysicalDeviceFloatControlsProperties": {
28996      "(VK_VERSION_1_2,VK_KHR_shader_float_controls)": [
28997        {
28998          "vuid": "VUID-VkPhysicalDeviceFloatControlsProperties-sType-sType",
28999          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES</code>"
29000        }
29001      ]
29002    },
29003    "VkPhysicalDeviceDiscardRectanglePropertiesEXT": {
29004      "(VK_EXT_discard_rectangles)": [
29005        {
29006          "vuid": "VUID-VkPhysicalDeviceDiscardRectanglePropertiesEXT-sType-sType",
29007          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT</code>"
29008        }
29009      ]
29010    },
29011    "VkPhysicalDeviceSampleLocationsPropertiesEXT": {
29012      "(VK_EXT_sample_locations)": [
29013        {
29014          "vuid": "VUID-VkPhysicalDeviceSampleLocationsPropertiesEXT-sType-sType",
29015          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT</code>"
29016        }
29017      ]
29018    },
29019    "VkPhysicalDeviceExternalMemoryHostPropertiesEXT": {
29020      "(VK_EXT_external_memory_host)": [
29021        {
29022          "vuid": "VUID-VkPhysicalDeviceExternalMemoryHostPropertiesEXT-sType-sType",
29023          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT</code>"
29024        }
29025      ]
29026    },
29027    "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX": {
29028      "(VK_NVX_multiview_per_view_attributes)": [
29029        {
29030          "vuid": "VUID-VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX-sType-sType",
29031          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX</code>"
29032        }
29033      ]
29034    },
29035    "VkPhysicalDevicePointClippingProperties": {
29036      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
29037        {
29038          "vuid": "VUID-VkPhysicalDevicePointClippingProperties-sType-sType",
29039          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES</code>"
29040        }
29041      ]
29042    },
29043    "VkPhysicalDeviceSubgroupProperties": {
29044      "(VK_VERSION_1_1)": [
29045        {
29046          "vuid": "VUID-VkPhysicalDeviceSubgroupProperties-sType-sType",
29047          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES</code>"
29048        }
29049      ]
29050    },
29051    "VkPhysicalDeviceSubgroupSizeControlPropertiesEXT": {
29052      "(VK_VERSION_1_1)+(VK_EXT_subgroup_size_control)": [
29053        {
29054          "vuid": "VUID-VkPhysicalDeviceSubgroupSizeControlPropertiesEXT-sType-sType",
29055          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT</code>"
29056        }
29057      ]
29058    },
29059    "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT": {
29060      "(VK_EXT_blend_operation_advanced)": [
29061        {
29062          "vuid": "VUID-VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT-sType-sType",
29063          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT</code>"
29064        }
29065      ]
29066    },
29067    "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT": {
29068      "(VK_EXT_vertex_attribute_divisor)": [
29069        {
29070          "vuid": "VUID-VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT-sType-sType",
29071          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT</code>"
29072        }
29073      ]
29074    },
29075    "VkPhysicalDeviceSamplerFilterMinmaxProperties": {
29076      "(VK_VERSION_1_2,VK_EXT_sampler_filter_minmax)": [
29077        {
29078          "vuid": "VUID-VkPhysicalDeviceSamplerFilterMinmaxProperties-sType-sType",
29079          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES</code>"
29080        }
29081      ]
29082    },
29083    "VkPhysicalDeviceProtectedMemoryProperties": {
29084      "(VK_VERSION_1_1)": [
29085        {
29086          "vuid": "VUID-VkPhysicalDeviceProtectedMemoryProperties-sType-sType",
29087          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES</code>"
29088        }
29089      ]
29090    },
29091    "VkPhysicalDeviceMaintenance3Properties": {
29092      "(VK_VERSION_1_1,VK_KHR_maintenance3)": [
29093        {
29094          "vuid": "VUID-VkPhysicalDeviceMaintenance3Properties-sType-sType",
29095          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES</code>"
29096        }
29097      ]
29098    },
29099    "VkPhysicalDeviceMeshShaderPropertiesNV": {
29100      "(VK_NV_mesh_shader)": [
29101        {
29102          "vuid": "VUID-VkPhysicalDeviceMeshShaderPropertiesNV-sType-sType",
29103          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV</code>"
29104        }
29105      ]
29106    },
29107    "VkPhysicalDeviceDescriptorIndexingProperties": {
29108      "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
29109        {
29110          "vuid": "VUID-VkPhysicalDeviceDescriptorIndexingProperties-sType-sType",
29111          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES</code>"
29112        }
29113      ]
29114    },
29115    "VkPhysicalDeviceInlineUniformBlockPropertiesEXT": {
29116      "(VK_EXT_inline_uniform_block)": [
29117        {
29118          "vuid": "VUID-VkPhysicalDeviceInlineUniformBlockPropertiesEXT-sType-sType",
29119          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT</code>"
29120        }
29121      ]
29122    },
29123    "VkPhysicalDeviceConservativeRasterizationPropertiesEXT": {
29124      "(VK_EXT_conservative_rasterization)": [
29125        {
29126          "vuid": "VUID-VkPhysicalDeviceConservativeRasterizationPropertiesEXT-sType-sType",
29127          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT</code>"
29128        }
29129      ]
29130    },
29131    "VkPhysicalDeviceFragmentDensityMapPropertiesEXT": {
29132      "(VK_EXT_fragment_density_map)": [
29133        {
29134          "vuid": "VUID-VkPhysicalDeviceFragmentDensityMapPropertiesEXT-sType-sType",
29135          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT</code>"
29136        }
29137      ]
29138    },
29139    "VkPhysicalDeviceShaderCorePropertiesAMD": {
29140      "(VK_AMD_shader_core_properties)": [
29141        {
29142          "vuid": "VUID-VkPhysicalDeviceShaderCorePropertiesAMD-sType-sType",
29143          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD</code>"
29144        }
29145      ]
29146    },
29147    "VkPhysicalDeviceShaderCoreProperties2AMD": {
29148      "(VK_AMD_shader_core_properties2)": [
29149        {
29150          "vuid": "VUID-VkPhysicalDeviceShaderCoreProperties2AMD-sType-sType",
29151          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD</code>"
29152        }
29153      ]
29154    },
29155    "VkPhysicalDeviceDepthStencilResolveProperties": {
29156      "(VK_VERSION_1_2,VK_KHR_depth_stencil_resolve)": [
29157        {
29158          "vuid": "VUID-VkPhysicalDeviceDepthStencilResolveProperties-sType-sType",
29159          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES</code>"
29160        }
29161      ]
29162    },
29163    "VkPhysicalDevicePerformanceQueryFeaturesKHR": {
29164      "(VK_KHR_performance_query)": [
29165        {
29166          "vuid": "VUID-VkPhysicalDevicePerformanceQueryFeaturesKHR-sType-sType",
29167          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR</code>"
29168        }
29169      ]
29170    },
29171    "VkPhysicalDevicePerformanceQueryPropertiesKHR": {
29172      "(VK_KHR_performance_query)": [
29173        {
29174          "vuid": "VUID-VkPhysicalDevicePerformanceQueryPropertiesKHR-sType-sType",
29175          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR</code>"
29176        }
29177      ]
29178    },
29179    "VkPhysicalDeviceShadingRateImagePropertiesNV": {
29180      "(VK_NV_shading_rate_image)": [
29181        {
29182          "vuid": "VUID-VkPhysicalDeviceShadingRateImagePropertiesNV-sType-sType",
29183          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV</code>"
29184        }
29185      ]
29186    },
29187    "VkPhysicalDeviceTransformFeedbackPropertiesEXT": {
29188      "(VK_EXT_transform_feedback)": [
29189        {
29190          "vuid": "VUID-VkPhysicalDeviceTransformFeedbackPropertiesEXT-sType-sType",
29191          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT</code>"
29192        }
29193      ]
29194    },
29195    "VkPhysicalDeviceRayTracingPropertiesNV": {
29196      "(VK_NV_ray_tracing)": [
29197        {
29198          "vuid": "VUID-VkPhysicalDeviceRayTracingPropertiesNV-sType-sType",
29199          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV</code>"
29200        }
29201      ]
29202    },
29203    "VkPhysicalDeviceRayTracingPropertiesKHR": {
29204      "(VK_KHR_ray_tracing)": [
29205        {
29206          "vuid": "VUID-VkPhysicalDeviceRayTracingPropertiesKHR-sType-sType",
29207          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR</code>"
29208        }
29209      ]
29210    },
29211    "VkPhysicalDeviceCooperativeMatrixPropertiesNV": {
29212      "(VK_NV_cooperative_matrix)": [
29213        {
29214          "vuid": "VUID-VkPhysicalDeviceCooperativeMatrixPropertiesNV-sType-sType",
29215          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV</code>"
29216        }
29217      ]
29218    },
29219    "VkPhysicalDeviceShaderSMBuiltinsPropertiesNV": {
29220      "(VK_NV_shader_sm_builtins)": [
29221        {
29222          "vuid": "VUID-VkPhysicalDeviceShaderSMBuiltinsPropertiesNV-sType-sType",
29223          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV</code>"
29224        }
29225      ]
29226    },
29227    "VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT": {
29228      "(VK_EXT_texel_buffer_alignment)": [
29229        {
29230          "vuid": "VUID-VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT-sType-sType",
29231          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT</code>"
29232        }
29233      ]
29234    },
29235    "VkPhysicalDeviceTimelineSemaphoreProperties": {
29236      "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
29237        {
29238          "vuid": "VUID-VkPhysicalDeviceTimelineSemaphoreProperties-sType-sType",
29239          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES</code>"
29240        }
29241      ]
29242    },
29243    "VkPhysicalDeviceLineRasterizationPropertiesEXT": {
29244      "(VK_EXT_line_rasterization)": [
29245        {
29246          "vuid": "VUID-VkPhysicalDeviceLineRasterizationPropertiesEXT-sType-sType",
29247          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT</code>"
29248        }
29249      ]
29250    },
29251    "VkPhysicalDeviceRobustness2PropertiesEXT": {
29252      "(VK_EXT_robustness2)": [
29253        {
29254          "vuid": "VUID-VkPhysicalDeviceRobustness2PropertiesEXT-sType-sType",
29255          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT</code>"
29256        }
29257      ]
29258    },
29259    "VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV": {
29260      "(VK_NV_device_generated_commands)": [
29261        {
29262          "vuid": "VUID-VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV-sType-sType",
29263          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV</code>"
29264        }
29265      ]
29266    },
29267    "vkGetPhysicalDeviceMultisamplePropertiesEXT": {
29268      "(VK_EXT_sample_locations)": [
29269        {
29270          "vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-physicalDevice-parameter",
29271          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29272        },
29273        {
29274          "vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-samples-parameter",
29275          "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
29276        },
29277        {
29278          "vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-pMultisampleProperties-parameter",
29279          "text": " <code>pMultisampleProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a> structure"
29280        }
29281      ]
29282    },
29283    "VkMultisamplePropertiesEXT": {
29284      "(VK_EXT_sample_locations)": [
29285        {
29286          "vuid": "VUID-VkMultisamplePropertiesEXT-sType-sType",
29287          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT</code>"
29288        },
29289        {
29290          "vuid": "VUID-VkMultisamplePropertiesEXT-pNext-pNext",
29291          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
29292        }
29293      ]
29294    },
29295    "VkPhysicalDeviceCustomBorderColorPropertiesEXT": {
29296      "(VK_EXT_custom_border_color)": [
29297        {
29298          "vuid": "VUID-VkPhysicalDeviceCustomBorderColorPropertiesEXT-sType-sType",
29299          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT</code>"
29300        }
29301      ]
29302    },
29303    "vkGetPhysicalDeviceFormatProperties": {
29304      "core": [
29305        {
29306          "vuid": "VUID-vkGetPhysicalDeviceFormatProperties-physicalDevice-parameter",
29307          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29308        },
29309        {
29310          "vuid": "VUID-vkGetPhysicalDeviceFormatProperties-format-parameter",
29311          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
29312        },
29313        {
29314          "vuid": "VUID-vkGetPhysicalDeviceFormatProperties-pFormatProperties-parameter",
29315          "text": " <code>pFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkFormatProperties\">VkFormatProperties</a> structure"
29316        }
29317      ]
29318    },
29319    "vkGetPhysicalDeviceFormatProperties2": {
29320      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
29321        {
29322          "vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-physicalDevice-parameter",
29323          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29324        },
29325        {
29326          "vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-format-parameter",
29327          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
29328        },
29329        {
29330          "vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-pFormatProperties-parameter",
29331          "text": " <code>pFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkFormatProperties2\">VkFormatProperties2</a> structure"
29332        }
29333      ]
29334    },
29335    "VkFormatProperties2": {
29336      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
29337        {
29338          "vuid": "VUID-VkFormatProperties2-sType-sType",
29339          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2</code>"
29340        },
29341        {
29342          "vuid": "VUID-VkFormatProperties2-pNext-pNext",
29343          "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>"
29344        },
29345        {
29346          "vuid": "VUID-VkFormatProperties2-sType-unique",
29347          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
29348        }
29349      ]
29350    },
29351    "VkDrmFormatModifierPropertiesListEXT": {
29352      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_image_drm_format_modifier)": [
29353        {
29354          "vuid": "VUID-VkDrmFormatModifierPropertiesListEXT-sType-sType",
29355          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT</code>"
29356        }
29357      ]
29358    },
29359    "vkGetPhysicalDeviceImageFormatProperties": {
29360      "(VK_EXT_image_drm_format_modifier)": [
29361        {
29362          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-02248",
29363          "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)"
29364        }
29365      ],
29366      "core": [
29367        {
29368          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-physicalDevice-parameter",
29369          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29370        },
29371        {
29372          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-format-parameter",
29373          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
29374        },
29375        {
29376          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-type-parameter",
29377          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
29378        },
29379        {
29380          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-parameter",
29381          "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
29382        },
29383        {
29384          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-usage-parameter",
29385          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
29386        },
29387        {
29388          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-usage-requiredbitmask",
29389          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
29390        },
29391        {
29392          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-flags-parameter",
29393          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values"
29394        },
29395        {
29396          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-pImageFormatProperties-parameter",
29397          "text": " <code>pImageFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkImageFormatProperties\">VkImageFormatProperties</a> structure"
29398        }
29399      ]
29400    },
29401    "vkGetPhysicalDeviceExternalImageFormatPropertiesNV": {
29402      "(VK_NV_external_memory_capabilities)": [
29403        {
29404          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-physicalDevice-parameter",
29405          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29406        },
29407        {
29408          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-format-parameter",
29409          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
29410        },
29411        {
29412          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-type-parameter",
29413          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
29414        },
29415        {
29416          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-tiling-parameter",
29417          "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
29418        },
29419        {
29420          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-parameter",
29421          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
29422        },
29423        {
29424          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-requiredbitmask",
29425          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
29426        },
29427        {
29428          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-flags-parameter",
29429          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values"
29430        },
29431        {
29432          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-externalHandleType-parameter",
29433          "text": " <code>externalHandleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
29434        },
29435        {
29436          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-pExternalImageFormatProperties-parameter",
29437          "text": " <code>pExternalImageFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkExternalImageFormatPropertiesNV\">VkExternalImageFormatPropertiesNV</a> structure"
29438        }
29439      ]
29440    },
29441    "vkGetPhysicalDeviceImageFormatProperties2": {
29442      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
29443        {
29444          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pNext-01868",
29445          "text": " If the <code>pNext</code> chain of <code>pImageFormatProperties</code> includes a <a href=\"#VkAndroidHardwareBufferUsageANDROID\">VkAndroidHardwareBufferUsageANDROID</a> structure, the <code>pNext</code> chain of <code>pImageFormatInfo</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkPhysicalDeviceExternalImageFormatInfo\">VkPhysicalDeviceExternalImageFormatInfo</a> structure with <code>handleType</code> set to <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>"
29446        }
29447      ],
29448      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
29449        {
29450          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-physicalDevice-parameter",
29451          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29452        },
29453        {
29454          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatInfo-parameter",
29455          "text": " <code>pImageFormatInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceImageFormatInfo2\">VkPhysicalDeviceImageFormatInfo2</a> structure"
29456        },
29457        {
29458          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatProperties-parameter",
29459          "text": " <code>pImageFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkImageFormatProperties2\">VkImageFormatProperties2</a> structure"
29460        }
29461      ]
29462    },
29463    "VkPhysicalDeviceImageFormatInfo2": {
29464      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_image_drm_format_modifier)": [
29465        {
29466          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-02249",
29467          "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 includes <a href=\"#VkPhysicalDeviceImageDrmFormatModifierInfoEXT\">VkPhysicalDeviceImageDrmFormatModifierInfoEXT</a>"
29468        },
29469        {
29470          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-02313",
29471          "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> include a <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a> structure with non-zero <code>viewFormatCount</code>"
29472        }
29473      ],
29474      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
29475        {
29476          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-sType-sType",
29477          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2</code>"
29478        },
29479        {
29480          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-pNext-pNext",
29481          "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=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>, <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>, <a href=\"#VkPhysicalDeviceExternalImageFormatInfo\">VkPhysicalDeviceExternalImageFormatInfo</a>, <a href=\"#VkPhysicalDeviceImageDrmFormatModifierInfoEXT\">VkPhysicalDeviceImageDrmFormatModifierInfoEXT</a>, or <a href=\"#VkPhysicalDeviceImageViewImageFormatInfoEXT\">VkPhysicalDeviceImageViewImageFormatInfoEXT</a>"
29482        },
29483        {
29484          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-sType-unique",
29485          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
29486        },
29487        {
29488          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-format-parameter",
29489          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
29490        },
29491        {
29492          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-type-parameter",
29493          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
29494        },
29495        {
29496          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-parameter",
29497          "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
29498        },
29499        {
29500          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-usage-parameter",
29501          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
29502        },
29503        {
29504          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-usage-requiredbitmask",
29505          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
29506        },
29507        {
29508          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-flags-parameter",
29509          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values"
29510        }
29511      ]
29512    },
29513    "VkImageFormatProperties2": {
29514      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
29515        {
29516          "vuid": "VUID-VkImageFormatProperties2-sType-sType",
29517          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2</code>"
29518        },
29519        {
29520          "vuid": "VUID-VkImageFormatProperties2-pNext-pNext",
29521          "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>"
29522        },
29523        {
29524          "vuid": "VUID-VkImageFormatProperties2-sType-unique",
29525          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
29526        }
29527      ]
29528    },
29529    "VkTextureLODGatherFormatPropertiesAMD": {
29530      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_AMD_texture_gather_bias_lod)": [
29531        {
29532          "vuid": "VUID-VkTextureLODGatherFormatPropertiesAMD-sType-sType",
29533          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD</code>"
29534        }
29535      ]
29536    },
29537    "VkPhysicalDeviceExternalImageFormatInfo": {
29538      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
29539        {
29540          "vuid": "VUID-VkPhysicalDeviceExternalImageFormatInfo-sType-sType",
29541          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO</code>"
29542        },
29543        {
29544          "vuid": "VUID-VkPhysicalDeviceExternalImageFormatInfo-handleType-parameter",
29545          "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"
29546        }
29547      ]
29548    },
29549    "VkExternalImageFormatProperties": {
29550      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
29551        {
29552          "vuid": "VUID-VkExternalImageFormatProperties-sType-sType",
29553          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES</code>"
29554        }
29555      ]
29556    },
29557    "VkPhysicalDeviceImageDrmFormatModifierInfoEXT": {
29558      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_image_drm_format_modifier)": [
29559        {
29560          "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02314",
29561          "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"
29562        },
29563        {
29564          "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02315",
29565          "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>"
29566        },
29567        {
29568          "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02316",
29569          "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>"
29570        },
29571        {
29572          "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sType-sType",
29573          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT</code>"
29574        },
29575        {
29576          "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-parameter",
29577          "text": " <code>sharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value"
29578        }
29579      ]
29580    },
29581    "VkSamplerYcbcrConversionImageFormatProperties": {
29582      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
29583        {
29584          "vuid": "VUID-VkSamplerYcbcrConversionImageFormatProperties-sType-sType",
29585          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES</code>"
29586        }
29587      ]
29588    },
29589    "VkAndroidHardwareBufferUsageANDROID": {
29590      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
29591        {
29592          "vuid": "VUID-VkAndroidHardwareBufferUsageANDROID-sType-sType",
29593          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID</code>"
29594        }
29595      ]
29596    },
29597    "VkPhysicalDeviceImageViewImageFormatInfoEXT": {
29598      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_filter_cubic)": [
29599        {
29600          "vuid": "VUID-VkPhysicalDeviceImageViewImageFormatInfoEXT-sType-sType",
29601          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT</code>"
29602        },
29603        {
29604          "vuid": "VUID-VkPhysicalDeviceImageViewImageFormatInfoEXT-imageViewType-parameter",
29605          "text": " <code>imageViewType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageViewType\">VkImageViewType</a> value"
29606        }
29607      ]
29608    },
29609    "VkFilterCubicImageViewImageFormatPropertiesEXT": {
29610      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_filter_cubic)": [
29611        {
29612          "vuid": "VUID-VkFilterCubicImageViewImageFormatPropertiesEXT-sType-sType",
29613          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT</code>"
29614        },
29615        {
29616          "vuid": "VUID-VkFilterCubicImageViewImageFormatPropertiesEXT-pNext-02627",
29617          "text": " If the <code>pNext</code> chain of the <a href=\"#VkImageFormatProperties2\">VkImageFormatProperties2</a> structure includes a <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a> structure, the <code>pNext</code> chain of the <a href=\"#VkPhysicalDeviceImageFormatInfo2\">VkPhysicalDeviceImageFormatInfo2</a> structure <strong class=\"purple\">must</strong> include a <a href=\"#VkPhysicalDeviceImageViewImageFormatInfoEXT\">VkPhysicalDeviceImageViewImageFormatInfoEXT</a> structure with an <code>imageViewType</code> that is compatible with <code>imageType</code>"
29618        }
29619      ]
29620    },
29621    "vkGetPhysicalDeviceExternalBufferProperties": {
29622      "(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
29623        {
29624          "vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-physicalDevice-parameter",
29625          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29626        },
29627        {
29628          "vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-pExternalBufferInfo-parameter",
29629          "text": " <code>pExternalBufferInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceExternalBufferInfo\">VkPhysicalDeviceExternalBufferInfo</a> structure"
29630        },
29631        {
29632          "vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-pExternalBufferProperties-parameter",
29633          "text": " <code>pExternalBufferProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a> structure"
29634        }
29635      ]
29636    },
29637    "VkPhysicalDeviceExternalBufferInfo": {
29638      "(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
29639        {
29640          "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-sType-sType",
29641          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO</code>"
29642        },
29643        {
29644          "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-pNext-pNext",
29645          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
29646        },
29647        {
29648          "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-flags-parameter",
29649          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferCreateFlagBits\">VkBufferCreateFlagBits</a> values"
29650        },
29651        {
29652          "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-usage-parameter",
29653          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferUsageFlagBits\">VkBufferUsageFlagBits</a> values"
29654        },
29655        {
29656          "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-usage-requiredbitmask",
29657          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
29658        },
29659        {
29660          "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-handleType-parameter",
29661          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
29662        }
29663      ]
29664    },
29665    "VkExternalBufferProperties": {
29666      "(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
29667        {
29668          "vuid": "VUID-VkExternalBufferProperties-sType-sType",
29669          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES</code>"
29670        },
29671        {
29672          "vuid": "VUID-VkExternalBufferProperties-pNext-pNext",
29673          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
29674        }
29675      ]
29676    },
29677    "vkGetPhysicalDeviceExternalSemaphoreProperties": {
29678      "(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [
29679        {
29680          "vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-physicalDevice-parameter",
29681          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29682        },
29683        {
29684          "vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-pExternalSemaphoreInfo-parameter",
29685          "text": " <code>pExternalSemaphoreInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceExternalSemaphoreInfo\">VkPhysicalDeviceExternalSemaphoreInfo</a> structure"
29686        },
29687        {
29688          "vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-pExternalSemaphoreProperties-parameter",
29689          "text": " <code>pExternalSemaphoreProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkExternalSemaphoreProperties\">VkExternalSemaphoreProperties</a> structure"
29690        }
29691      ]
29692    },
29693    "VkPhysicalDeviceExternalSemaphoreInfo": {
29694      "(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [
29695        {
29696          "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-sType-sType",
29697          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO</code>"
29698        },
29699        {
29700          "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-pNext-pNext",
29701          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkSemaphoreTypeCreateInfo\">VkSemaphoreTypeCreateInfo</a>"
29702        },
29703        {
29704          "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-sType-unique",
29705          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
29706        },
29707        {
29708          "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-handleType-parameter",
29709          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
29710        }
29711      ]
29712    },
29713    "VkExternalSemaphoreProperties": {
29714      "(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [
29715        {
29716          "vuid": "VUID-VkExternalSemaphoreProperties-sType-sType",
29717          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES</code>"
29718        },
29719        {
29720          "vuid": "VUID-VkExternalSemaphoreProperties-pNext-pNext",
29721          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
29722        }
29723      ]
29724    },
29725    "vkGetPhysicalDeviceExternalFenceProperties": {
29726      "(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [
29727        {
29728          "vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-physicalDevice-parameter",
29729          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29730        },
29731        {
29732          "vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-pExternalFenceInfo-parameter",
29733          "text": " <code>pExternalFenceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceExternalFenceInfo\">VkPhysicalDeviceExternalFenceInfo</a> structure"
29734        },
29735        {
29736          "vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-pExternalFenceProperties-parameter",
29737          "text": " <code>pExternalFenceProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkExternalFenceProperties\">VkExternalFenceProperties</a> structure"
29738        }
29739      ]
29740    },
29741    "VkPhysicalDeviceExternalFenceInfo": {
29742      "(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [
29743        {
29744          "vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-sType-sType",
29745          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO</code>"
29746        },
29747        {
29748          "vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-pNext-pNext",
29749          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
29750        },
29751        {
29752          "vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-handleType-parameter",
29753          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
29754        }
29755      ]
29756    },
29757    "VkExternalFenceProperties": {
29758      "(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [
29759        {
29760          "vuid": "VUID-VkExternalFenceProperties-sType-sType",
29761          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES</code>"
29762        },
29763        {
29764          "vuid": "VUID-VkExternalFenceProperties-pNext-pNext",
29765          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
29766        }
29767      ]
29768    },
29769    "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT": {
29770      "(VK_EXT_calibrated_timestamps)": [
29771        {
29772          "vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-physicalDevice-parameter",
29773          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29774        },
29775        {
29776          "vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-pTimeDomainCount-parameter",
29777          "text": " <code>pTimeDomainCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
29778        },
29779        {
29780          "vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-pTimeDomains-parameter",
29781          "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"
29782        }
29783      ]
29784    },
29785    "vkSetDebugUtilsObjectNameEXT": {
29786      "(VK_EXT_debug_utils)": [
29787        {
29788          "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-02587",
29789          "text": " <code>pNameInfo-&gt;objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_OBJECT_TYPE_UNKNOWN</code>"
29790        },
29791        {
29792          "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-02588",
29793          "text": " <code>pNameInfo-&gt;objectHandle</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
29794        },
29795        {
29796          "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-device-parameter",
29797          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
29798        },
29799        {
29800          "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-parameter",
29801          "text": " <code>pNameInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsObjectNameInfoEXT\">VkDebugUtilsObjectNameInfoEXT</a> structure"
29802        }
29803      ]
29804    },
29805    "VkDebugUtilsObjectNameInfoEXT": {
29806      "(VK_EXT_debug_utils)": [
29807        {
29808          "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02589",
29809          "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>"
29810        },
29811        {
29812          "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02590",
29813          "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"
29814        },
29815        {
29816          "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-sType-sType",
29817          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT</code>"
29818        },
29819        {
29820          "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-pNext-pNext",
29821          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
29822        },
29823        {
29824          "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-parameter",
29825          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value"
29826        },
29827        {
29828          "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-pObjectName-parameter",
29829          "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"
29830        }
29831      ]
29832    },
29833    "vkSetDebugUtilsObjectTagEXT": {
29834      "(VK_EXT_debug_utils)": [
29835        {
29836          "vuid": "VUID-vkSetDebugUtilsObjectTagEXT-device-parameter",
29837          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
29838        },
29839        {
29840          "vuid": "VUID-vkSetDebugUtilsObjectTagEXT-pTagInfo-parameter",
29841          "text": " <code>pTagInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsObjectTagInfoEXT\">VkDebugUtilsObjectTagInfoEXT</a> structure"
29842        }
29843      ]
29844    },
29845    "VkDebugUtilsObjectTagInfoEXT": {
29846      "(VK_EXT_debug_utils)": [
29847        {
29848          "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectType-01908",
29849          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_OBJECT_TYPE_UNKNOWN</code>"
29850        },
29851        {
29852          "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectHandle-01910",
29853          "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"
29854        },
29855        {
29856          "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-sType-sType",
29857          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT</code>"
29858        },
29859        {
29860          "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-pNext-pNext",
29861          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
29862        },
29863        {
29864          "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectType-parameter",
29865          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value"
29866        },
29867        {
29868          "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-pTag-parameter",
29869          "text": " <code>pTag</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tagSize</code> bytes"
29870        },
29871        {
29872          "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-tagSize-arraylength",
29873          "text": " <code>tagSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
29874        }
29875      ]
29876    },
29877    "vkQueueBeginDebugUtilsLabelEXT": {
29878      "(VK_EXT_debug_utils)": [
29879        {
29880          "vuid": "VUID-vkQueueBeginDebugUtilsLabelEXT-queue-parameter",
29881          "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle"
29882        },
29883        {
29884          "vuid": "VUID-vkQueueBeginDebugUtilsLabelEXT-pLabelInfo-parameter",
29885          "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsLabelEXT\">VkDebugUtilsLabelEXT</a> structure"
29886        }
29887      ]
29888    },
29889    "VkDebugUtilsLabelEXT": {
29890      "(VK_EXT_debug_utils)": [
29891        {
29892          "vuid": "VUID-VkDebugUtilsLabelEXT-sType-sType",
29893          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT</code>"
29894        },
29895        {
29896          "vuid": "VUID-VkDebugUtilsLabelEXT-pNext-pNext",
29897          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
29898        },
29899        {
29900          "vuid": "VUID-VkDebugUtilsLabelEXT-pLabelName-parameter",
29901          "text": " <code>pLabelName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
29902        }
29903      ]
29904    },
29905    "vkQueueEndDebugUtilsLabelEXT": {
29906      "(VK_EXT_debug_utils)": [
29907        {
29908          "vuid": "VUID-vkQueueEndDebugUtilsLabelEXT-None-01911",
29909          "text": " There <strong class=\"purple\">must</strong> be an outstanding <code>vkQueueBeginDebugUtilsLabelEXT</code> command prior to the <code>vkQueueEndDebugUtilsLabelEXT</code> on the queue"
29910        },
29911        {
29912          "vuid": "VUID-vkQueueEndDebugUtilsLabelEXT-queue-parameter",
29913          "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle"
29914        }
29915      ]
29916    },
29917    "vkQueueInsertDebugUtilsLabelEXT": {
29918      "(VK_EXT_debug_utils)": [
29919        {
29920          "vuid": "VUID-vkQueueInsertDebugUtilsLabelEXT-queue-parameter",
29921          "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle"
29922        },
29923        {
29924          "vuid": "VUID-vkQueueInsertDebugUtilsLabelEXT-pLabelInfo-parameter",
29925          "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsLabelEXT\">VkDebugUtilsLabelEXT</a> structure"
29926        }
29927      ]
29928    },
29929    "vkCmdBeginDebugUtilsLabelEXT": {
29930      "(VK_EXT_debug_utils)": [
29931        {
29932          "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-parameter",
29933          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
29934        },
29935        {
29936          "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-pLabelInfo-parameter",
29937          "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsLabelEXT\">VkDebugUtilsLabelEXT</a> structure"
29938        },
29939        {
29940          "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-recording",
29941          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
29942        },
29943        {
29944          "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-cmdpool",
29945          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
29946        }
29947      ]
29948    },
29949    "vkCmdEndDebugUtilsLabelEXT": {
29950      "(VK_EXT_debug_utils)": [
29951        {
29952          "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01912",
29953          "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"
29954        },
29955        {
29956          "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01913",
29957          "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>"
29958        },
29959        {
29960          "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-parameter",
29961          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
29962        },
29963        {
29964          "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-recording",
29965          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
29966        },
29967        {
29968          "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-cmdpool",
29969          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
29970        }
29971      ]
29972    },
29973    "vkCmdInsertDebugUtilsLabelEXT": {
29974      "(VK_EXT_debug_utils)": [
29975        {
29976          "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-parameter",
29977          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
29978        },
29979        {
29980          "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-pLabelInfo-parameter",
29981          "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsLabelEXT\">VkDebugUtilsLabelEXT</a> structure"
29982        },
29983        {
29984          "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-recording",
29985          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
29986        },
29987        {
29988          "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-cmdpool",
29989          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
29990        }
29991      ]
29992    },
29993    "vkCreateDebugUtilsMessengerEXT": {
29994      "(VK_EXT_debug_utils)": [
29995        {
29996          "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-instance-parameter",
29997          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
29998        },
29999        {
30000          "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pCreateInfo-parameter",
30001          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsMessengerCreateInfoEXT\">VkDebugUtilsMessengerCreateInfoEXT</a> structure"
30002        },
30003        {
30004          "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pAllocator-parameter",
30005          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
30006        },
30007        {
30008          "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pMessenger-parameter",
30009          "text": " <code>pMessenger</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDebugUtilsMessengerEXT\">VkDebugUtilsMessengerEXT</a> handle"
30010        }
30011      ]
30012    },
30013    "VkDebugUtilsMessengerCreateInfoEXT": {
30014      "(VK_EXT_debug_utils)": [
30015        {
30016          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-pfnUserCallback-01914",
30017          "text": " <code>pfnUserCallback</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#PFN_vkDebugUtilsMessengerCallbackEXT\">PFN_vkDebugUtilsMessengerCallbackEXT</a>"
30018        },
30019        {
30020          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-sType-sType",
30021          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT</code>"
30022        },
30023        {
30024          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-flags-zerobitmask",
30025          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
30026        },
30027        {
30028          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-parameter",
30029          "text": " <code>messageSeverity</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugUtilsMessageSeverityFlagBitsEXT\">VkDebugUtilsMessageSeverityFlagBitsEXT</a> values"
30030        },
30031        {
30032          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-requiredbitmask",
30033          "text": " <code>messageSeverity</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
30034        },
30035        {
30036          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-parameter",
30037          "text": " <code>messageType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugUtilsMessageTypeFlagBitsEXT\">VkDebugUtilsMessageTypeFlagBitsEXT</a> values"
30038        },
30039        {
30040          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-requiredbitmask",
30041          "text": " <code>messageType</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
30042        },
30043        {
30044          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-pfnUserCallback-parameter",
30045          "text": " <code>pfnUserCallback</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#PFN_vkDebugUtilsMessengerCallbackEXT\">PFN_vkDebugUtilsMessengerCallbackEXT</a> value"
30046        }
30047      ]
30048    },
30049    "VkDebugUtilsMessengerCallbackDataEXT": {
30050      "(VK_EXT_debug_utils)": [
30051        {
30052          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-sType-sType",
30053          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT</code>"
30054        },
30055        {
30056          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pNext-pNext",
30057          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
30058        },
30059        {
30060          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-flags-zerobitmask",
30061          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
30062        },
30063        {
30064          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pMessageIdName-parameter",
30065          "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"
30066        },
30067        {
30068          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pMessage-parameter",
30069          "text": " <code>pMessage</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
30070        },
30071        {
30072          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pQueueLabels-parameter",
30073          "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 <a href=\"#VkDebugUtilsLabelEXT\">VkDebugUtilsLabelEXT</a> structures"
30074        },
30075        {
30076          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pCmdBufLabels-parameter",
30077          "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 <a href=\"#VkDebugUtilsLabelEXT\">VkDebugUtilsLabelEXT</a> structures"
30078        },
30079        {
30080          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pObjects-parameter",
30081          "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 <a href=\"#VkDebugUtilsObjectNameInfoEXT\">VkDebugUtilsObjectNameInfoEXT</a> structures"
30082        }
30083      ]
30084    },
30085    "vkSubmitDebugUtilsMessageEXT": {
30086      "(VK_EXT_debug_utils)": [
30087        {
30088          "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-objectType-02591",
30089          "text": " The <code>objectType</code> member of each element of <code>pCallbackData-&gt;pObjects</code> <strong class=\"purple\">must</strong> not be <code>VK_OBJECT_TYPE_UNKNOWN</code>"
30090        },
30091        {
30092          "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-instance-parameter",
30093          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
30094        },
30095        {
30096          "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageSeverity-parameter",
30097          "text": " <code>messageSeverity</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugUtilsMessageSeverityFlagBitsEXT\">VkDebugUtilsMessageSeverityFlagBitsEXT</a> value"
30098        },
30099        {
30100          "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageTypes-parameter",
30101          "text": " <code>messageTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugUtilsMessageTypeFlagBitsEXT\">VkDebugUtilsMessageTypeFlagBitsEXT</a> values"
30102        },
30103        {
30104          "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageTypes-requiredbitmask",
30105          "text": " <code>messageTypes</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
30106        },
30107        {
30108          "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-pCallbackData-parameter",
30109          "text": " <code>pCallbackData</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsMessengerCallbackDataEXT\">VkDebugUtilsMessengerCallbackDataEXT</a> structure"
30110        }
30111      ]
30112    },
30113    "vkDestroyDebugUtilsMessengerEXT": {
30114      "(VK_EXT_debug_utils)": [
30115        {
30116          "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-01915",
30117          "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"
30118        },
30119        {
30120          "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-01916",
30121          "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>"
30122        },
30123        {
30124          "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-instance-parameter",
30125          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
30126        },
30127        {
30128          "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-parameter",
30129          "text": " If <code>messenger</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>messenger</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugUtilsMessengerEXT\">VkDebugUtilsMessengerEXT</a> handle"
30130        },
30131        {
30132          "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-pAllocator-parameter",
30133          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
30134        },
30135        {
30136          "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-parent",
30137          "text": " If <code>messenger</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>instance</code>"
30138        }
30139      ]
30140    },
30141    "vkDebugMarkerSetObjectNameEXT": {
30142      "(VK_EXT_debug_marker)": [
30143        {
30144          "vuid": "VUID-vkDebugMarkerSetObjectNameEXT-device-parameter",
30145          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
30146        },
30147        {
30148          "vuid": "VUID-vkDebugMarkerSetObjectNameEXT-pNameInfo-parameter",
30149          "text": " <code>pNameInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugMarkerObjectNameInfoEXT\">VkDebugMarkerObjectNameInfoEXT</a> structure"
30150        }
30151      ]
30152    },
30153    "VkDebugMarkerObjectNameInfoEXT": {
30154      "(VK_EXT_debug_marker)": [
30155        {
30156          "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-objectType-01490",
30157          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT</code>"
30158        },
30159        {
30160          "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-object-01491",
30161          "text": " <code>object</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
30162        },
30163        {
30164          "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-object-01492",
30165          "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\"><a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> and Vulkan Handle Relationship</a>"
30166        },
30167        {
30168          "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-sType-sType",
30169          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT</code>"
30170        },
30171        {
30172          "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-pNext-pNext",
30173          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
30174        },
30175        {
30176          "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-objectType-parameter",
30177          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> value"
30178        },
30179        {
30180          "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-pObjectName-parameter",
30181          "text": " <code>pObjectName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
30182        }
30183      ]
30184    },
30185    "vkDebugMarkerSetObjectTagEXT": {
30186      "(VK_EXT_debug_marker)": [
30187        {
30188          "vuid": "VUID-vkDebugMarkerSetObjectTagEXT-device-parameter",
30189          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
30190        },
30191        {
30192          "vuid": "VUID-vkDebugMarkerSetObjectTagEXT-pTagInfo-parameter",
30193          "text": " <code>pTagInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugMarkerObjectTagInfoEXT\">VkDebugMarkerObjectTagInfoEXT</a> structure"
30194        }
30195      ]
30196    },
30197    "VkDebugMarkerObjectTagInfoEXT": {
30198      "(VK_EXT_debug_marker)": [
30199        {
30200          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-objectType-01493",
30201          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT</code>"
30202        },
30203        {
30204          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-object-01494",
30205          "text": " <code>object</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
30206        },
30207        {
30208          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-object-01495",
30209          "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\"><a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> and Vulkan Handle Relationship</a>"
30210        },
30211        {
30212          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-sType-sType",
30213          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT</code>"
30214        },
30215        {
30216          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-pNext-pNext",
30217          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
30218        },
30219        {
30220          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-objectType-parameter",
30221          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> value"
30222        },
30223        {
30224          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-pTag-parameter",
30225          "text": " <code>pTag</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tagSize</code> bytes"
30226        },
30227        {
30228          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-tagSize-arraylength",
30229          "text": " <code>tagSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
30230        }
30231      ]
30232    },
30233    "vkCmdDebugMarkerBeginEXT": {
30234      "(VK_EXT_debug_marker)": [
30235        {
30236          "vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-parameter",
30237          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
30238        },
30239        {
30240          "vuid": "VUID-vkCmdDebugMarkerBeginEXT-pMarkerInfo-parameter",
30241          "text": " <code>pMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugMarkerMarkerInfoEXT\">VkDebugMarkerMarkerInfoEXT</a> structure"
30242        },
30243        {
30244          "vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-recording",
30245          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
30246        },
30247        {
30248          "vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-cmdpool",
30249          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
30250        }
30251      ]
30252    },
30253    "VkDebugMarkerMarkerInfoEXT": {
30254      "(VK_EXT_debug_marker)": [
30255        {
30256          "vuid": "VUID-VkDebugMarkerMarkerInfoEXT-sType-sType",
30257          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT</code>"
30258        },
30259        {
30260          "vuid": "VUID-VkDebugMarkerMarkerInfoEXT-pNext-pNext",
30261          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
30262        },
30263        {
30264          "vuid": "VUID-VkDebugMarkerMarkerInfoEXT-pMarkerName-parameter",
30265          "text": " <code>pMarkerName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
30266        }
30267      ]
30268    },
30269    "vkCmdDebugMarkerEndEXT": {
30270      "(VK_EXT_debug_marker)": [
30271        {
30272          "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-01239",
30273          "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"
30274        },
30275        {
30276          "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-01240",
30277          "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>"
30278        },
30279        {
30280          "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-parameter",
30281          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
30282        },
30283        {
30284          "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-recording",
30285          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
30286        },
30287        {
30288          "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-cmdpool",
30289          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
30290        }
30291      ]
30292    },
30293    "vkCmdDebugMarkerInsertEXT": {
30294      "(VK_EXT_debug_marker)": [
30295        {
30296          "vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-parameter",
30297          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
30298        },
30299        {
30300          "vuid": "VUID-vkCmdDebugMarkerInsertEXT-pMarkerInfo-parameter",
30301          "text": " <code>pMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugMarkerMarkerInfoEXT\">VkDebugMarkerMarkerInfoEXT</a> structure"
30302        },
30303        {
30304          "vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-recording",
30305          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
30306        },
30307        {
30308          "vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-cmdpool",
30309          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
30310        }
30311      ]
30312    },
30313    "vkCreateDebugReportCallbackEXT": {
30314      "(VK_EXT_debug_report)": [
30315        {
30316          "vuid": "VUID-vkCreateDebugReportCallbackEXT-instance-parameter",
30317          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
30318        },
30319        {
30320          "vuid": "VUID-vkCreateDebugReportCallbackEXT-pCreateInfo-parameter",
30321          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugReportCallbackCreateInfoEXT\">VkDebugReportCallbackCreateInfoEXT</a> structure"
30322        },
30323        {
30324          "vuid": "VUID-vkCreateDebugReportCallbackEXT-pAllocator-parameter",
30325          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
30326        },
30327        {
30328          "vuid": "VUID-vkCreateDebugReportCallbackEXT-pCallback-parameter",
30329          "text": " <code>pCallback</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDebugReportCallbackEXT\">VkDebugReportCallbackEXT</a> handle"
30330        }
30331      ]
30332    },
30333    "VkDebugReportCallbackCreateInfoEXT": {
30334      "(VK_EXT_debug_report)": [
30335        {
30336          "vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-sType-sType",
30337          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT</code>"
30338        },
30339        {
30340          "vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-flags-parameter",
30341          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugReportFlagBitsEXT\">VkDebugReportFlagBitsEXT</a> values"
30342        },
30343        {
30344          "vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-pfnCallback-parameter",
30345          "text": " <code>pfnCallback</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#PFN_vkDebugReportCallbackEXT\">PFN_vkDebugReportCallbackEXT</a> value"
30346        }
30347      ]
30348    },
30349    "vkDebugReportMessageEXT": {
30350      "(VK_EXT_debug_report)": [
30351        {
30352          "vuid": "VUID-vkDebugReportMessageEXT-object-01241",
30353          "text": " <code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
30354        },
30355        {
30356          "vuid": "VUID-vkDebugReportMessageEXT-objectType-01498",
30357          "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\"><a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> and Vulkan Handle Relationship</a>"
30358        },
30359        {
30360          "vuid": "VUID-vkDebugReportMessageEXT-instance-parameter",
30361          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
30362        },
30363        {
30364          "vuid": "VUID-vkDebugReportMessageEXT-flags-parameter",
30365          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugReportFlagBitsEXT\">VkDebugReportFlagBitsEXT</a> values"
30366        },
30367        {
30368          "vuid": "VUID-vkDebugReportMessageEXT-flags-requiredbitmask",
30369          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
30370        },
30371        {
30372          "vuid": "VUID-vkDebugReportMessageEXT-objectType-parameter",
30373          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> value"
30374        },
30375        {
30376          "vuid": "VUID-vkDebugReportMessageEXT-pLayerPrefix-parameter",
30377          "text": " <code>pLayerPrefix</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
30378        },
30379        {
30380          "vuid": "VUID-vkDebugReportMessageEXT-pMessage-parameter",
30381          "text": " <code>pMessage</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
30382        }
30383      ]
30384    },
30385    "vkDestroyDebugReportCallbackEXT": {
30386      "(VK_EXT_debug_report)": [
30387        {
30388          "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-01242",
30389          "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"
30390        },
30391        {
30392          "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-01243",
30393          "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>"
30394        },
30395        {
30396          "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-parameter",
30397          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
30398        },
30399        {
30400          "vuid": "VUID-vkDestroyDebugReportCallbackEXT-callback-parameter",
30401          "text": " If <code>callback</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>callback</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportCallbackEXT\">VkDebugReportCallbackEXT</a> handle"
30402        },
30403        {
30404          "vuid": "VUID-vkDestroyDebugReportCallbackEXT-pAllocator-parameter",
30405          "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 <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
30406        },
30407        {
30408          "vuid": "VUID-vkDestroyDebugReportCallbackEXT-callback-parent",
30409          "text": " If <code>callback</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>instance</code>"
30410        }
30411      ]
30412    },
30413    "vkCmdSetCheckpointNV": {
30414      "(VK_NV_device_diagnostic_checkpoints)": [
30415        {
30416          "vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-parameter",
30417          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
30418        },
30419        {
30420          "vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-recording",
30421          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
30422        },
30423        {
30424          "vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-cmdpool",
30425          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations"
30426        }
30427      ]
30428    },
30429    "vkGetQueueCheckpointDataNV": {
30430      "(VK_NV_device_diagnostic_checkpoints)": [
30431        {
30432          "vuid": "VUID-vkGetQueueCheckpointDataNV-queue-02025",
30433          "text": " The device that <code>queue</code> belongs to <strong class=\"purple\">must</strong> be in the lost state"
30434        },
30435        {
30436          "vuid": "VUID-vkGetQueueCheckpointDataNV-queue-parameter",
30437          "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle"
30438        },
30439        {
30440          "vuid": "VUID-vkGetQueueCheckpointDataNV-pCheckpointDataCount-parameter",
30441          "text": " <code>pCheckpointDataCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
30442        },
30443        {
30444          "vuid": "VUID-vkGetQueueCheckpointDataNV-pCheckpointData-parameter",
30445          "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> <a href=\"#VkCheckpointDataNV\">VkCheckpointDataNV</a> structures"
30446        }
30447      ]
30448    },
30449    "VkCheckpointDataNV": {
30450      "(VK_NV_device_diagnostic_checkpoints)": [
30451        {
30452          "vuid": "VUID-VkCheckpointDataNV-sType-sType",
30453          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV</code>"
30454        },
30455        {
30456          "vuid": "VUID-VkCheckpointDataNV-pNext-pNext",
30457          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
30458        }
30459      ]
30460    },
30461    "vkGetPhysicalDeviceToolPropertiesEXT": {
30462      "(VK_EXT_tooling_info)": [
30463        {
30464          "vuid": "VUID-vkGetPhysicalDeviceToolPropertiesEXT-physicalDevice-parameter",
30465          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
30466        },
30467        {
30468          "vuid": "VUID-vkGetPhysicalDeviceToolPropertiesEXT-pToolCount-parameter",
30469          "text": " <code>pToolCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
30470        },
30471        {
30472          "vuid": "VUID-vkGetPhysicalDeviceToolPropertiesEXT-pToolProperties-parameter",
30473          "text": " If the value referenced by <code>pToolCount</code> is not <code>0</code>, and <code>pToolProperties</code> is not <code>NULL</code>, <code>pToolProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pToolCount</code> <a href=\"#VkPhysicalDeviceToolPropertiesEXT\">VkPhysicalDeviceToolPropertiesEXT</a> structures"
30474        }
30475      ]
30476    },
30477    "VkPhysicalDeviceToolPropertiesEXT": {
30478      "(VK_EXT_tooling_info)": [
30479        {
30480          "vuid": "VUID-VkPhysicalDeviceToolPropertiesEXT-sType-sType",
30481          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT</code>"
30482        },
30483        {
30484          "vuid": "VUID-VkPhysicalDeviceToolPropertiesEXT-pNext-pNext",
30485          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
30486        }
30487      ]
30488    }
30489  }
30490}